欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 明星 > 可狱可囚的爬虫系列课程 18:成都在售新房数据爬虫(lxml 模块)实战

可狱可囚的爬虫系列课程 18:成都在售新房数据爬虫(lxml 模块)实战

2025/3/11 18:15:27 来源:https://blog.csdn.net/weixin_42788769/article/details/146116312  浏览:    关键词:可狱可囚的爬虫系列课程 18:成都在售新房数据爬虫(lxml 模块)实战

上一篇文章中带大家学习了 lxml 模块以及 XPath 语法,本文针对某网新房数据编写爬虫进行实战。

一、网页信息的获取

抓取地址:https://cd.fang.lianjia.com/loupan/

import requestsLink = 'https://cd.fang.lianjia.com/loupan/'
Headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36'
}
response = requests.get(url=Link, headers=Headers)
if response.status_code == 200:html_source = response.textprint(html_source)
else:print(f'状态码:{response.status_code}, 请检查')

二、新房数据的抓取

(1)当前页面所有在售新房获取

root = etree.HTML(html_source)
# 找到所有房屋信息对应的 li 标签,构建 li 列表
li_list = root.xpath('/html/body/div[3]/ul[@class="resblock-list-wrapper"]/li')

(2)部分房屋信息抓取

for li in li_list:# 经过分析,房屋名称信息较好获取,而要获得房屋面积单价则需要借助分支语法house_name = li.xpath('./div/div[1]/h2/a/text()')  # 房屋名称house_unit_price = li.xpath('./div/div[6]/div[1]/span[1]/text()|./div/div[6]/div[1]/span[2]/text()')  # 房屋面积单价print(house_name[0], ''.join(house_unit_price))

三、完整代码

爬虫代码的编写,除了要有扎实的基础知识外,还要善于分析网页内容。
import requests
from lxml import etreeLink = 'https://cd.fang.lianjia.com/loupan/'
Headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36'
}
response = requests.get(url=Link, headers=Headers)
if response.status_code == 200:html_source = response.textroot = etree.HTML(html_source)# 找到所有房屋信息对应的 li 标签,构建 li 列表li_list = root.xpath('/html/body/div[3]/ul[@class="resblock-list-wrapper"]/li')for li in li_list:# 经过分析,房屋名称信息较好获取,而要获得房屋面积单价则需要借助分支语法house_name = li.xpath('./div/div[1]/h2/a/text()')  # 房屋名称house_unit_price = li.xpath('./div/div[6]/div[1]/span[1]/text()|./div/div[6]/div[1]/span[2]/text()')  # 房屋面积单价house_price = li.xpath('./div/div[6]/div[@class="second"]/text()')  # 价格区间house_address = li.xpath('./div/div[2]/span[1]/text()|./div/div[2]/span[2]/text()|./div/div[2]/a/text()')  # 地理位置print(house_name[0], ''.join(house_unit_price), house_price[0], '/'.join(house_address))
else:print(f'状态码:{response.status_code}, 请检查')

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词