九天猎人 发表于 2025-3-10 13:11:27

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

上一篇文章中带各人学习了 lxml 模块以及 XPath 语法,本文针对某网新居数据编写爬虫进行实战。
一、网页信息的获取

抓取地址:https://cd.fang.lianjia.com/loupan/
https://i-blog.csdnimg.cn/img_convert/2829d1aa3ba6298a8c957fb286796678.png
import requests

Link = '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.text
    print(html_source)
else:
    print(f'状态码:{response.status_code}, 请检查')
二、新居数据的抓取

(1)当前页面全部在售新居获取 https://i-blog.csdnimg.cn/img_convert/31390b31798544c1da188a92f8508ec8.png
root = etree.HTML(html_source)
# 找到所有房屋信息对应的 li 标签,构建 li 列表
li_list = root.xpath('/html/body/div/ul[@class="resblock-list-wrapper"]/li')
(2)部分房屋信息抓取
https://i-blog.csdnimg.cn/img_convert/d438c65adacc245627350b3a51843bb9.png
for li in li_list:
    # 经过分析,房屋名称信息较好获取,而要获得房屋面积单价则需要借助分支语法
    house_name = li.xpath('./div/div/h2/a/text()')# 房屋名称
    house_unit_price = li.xpath('./div/div/div/span/text()|./div/div/div/span/text()')# 房屋面积单价
    print(house_name, ''.join(house_unit_price))
三、完整代码

爬虫代码的编写,除了要有踏实的底子知识外,还要善于分析网页内容。 import requests
from lxml import etree

Link = '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.text
    root = etree.HTML(html_source)
    # 找到所有房屋信息对应的 li 标签,构建 li 列表
    li_list = root.xpath('/html/body/div/ul[@class="resblock-list-wrapper"]/li')
    for li in li_list:
      # 经过分析,房屋名称信息较好获取,而要获得房屋面积单价则需要借助分支语法
      house_name = li.xpath('./div/div/h2/a/text()')# 房屋名称
      house_unit_price = li.xpath('./div/div/div/span/text()|./div/div/div/span/text()')# 房屋面积单价
      house_price = li.xpath('./div/div/div[@class="second"]/text()')# 价格区间
      house_address = li.xpath(
            './div/div/span/text()|./div/div/span/text()|./div/div/a/text()')# 地理位置
      print(house_name, ''.join(house_unit_price), house_price, '/'.join(house_address))
else:
    print(f'状态码:{response.status_code}, 请检查')

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 可狱可囚的爬虫系列课程 18:成都在售新居数据爬虫(lxml 模块)实战