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

打印 上一主题 下一主题

主题 947|帖子 947|积分 2841

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

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

  1. import requests
  2. Link = 'https://cd.fang.lianjia.com/loupan/'
  3. Headers = {
  4.     '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'
  5. }
  6. response = requests.get(url=Link, headers=Headers)
  7. if response.status_code == 200:
  8.     html_source = response.text
  9.     print(html_source)
  10. else:
  11.     print(f'状态码:{response.status_code}, 请检查')
复制代码
二、新居数据的抓取

(1)当前页面全部在售新居获取

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

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

爬虫代码的编写,除了要有踏实的底子知识外,还要善于分析网页内容。
  1. import requests
  2. from lxml import etree
  3. Link = 'https://cd.fang.lianjia.com/loupan/'
  4. Headers = {
  5.     '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'
  6. }
  7. response = requests.get(url=Link, headers=Headers)
  8. if response.status_code == 200:
  9.     html_source = response.text
  10.     root = etree.HTML(html_source)
  11.     # 找到所有房屋信息对应的 li 标签,构建 li 列表
  12.     li_list = root.xpath('/html/body/div[3]/ul[@class="resblock-list-wrapper"]/li')
  13.     for li in li_list:
  14.         # 经过分析,房屋名称信息较好获取,而要获得房屋面积单价则需要借助分支语法
  15.         house_name = li.xpath('./div/div[1]/h2/a/text()')  # 房屋名称
  16.         house_unit_price = li.xpath('./div/div[6]/div[1]/span[1]/text()|./div/div[6]/div[1]/span[2]/text()')  # 房屋面积单价
  17.         house_price = li.xpath('./div/div[6]/div[@class="second"]/text()')  # 价格区间
  18.         house_address = li.xpath(
  19.             './div/div[2]/span[1]/text()|./div/div[2]/span[2]/text()|./div/div[2]/a/text()')  # 地理位置
  20.         print(house_name[0], ''.join(house_unit_price), house_price[0], '/'.join(house_address))
  21. else:
  22.     print(f'状态码:{response.status_code}, 请检查')
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

九天猎人

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表