前言

最近在尝试用Python爬虫二手房房源信息数据,在这里给需要的小伙伴们提供代码,并且给出一点小心得。

首先是爬取之前应该尽可能伪装成浏览器而不被识别出来是爬虫,基本的是加请求头,但是这样的纯文本数据爬取的人会很多,所以我们需要考虑更换代理IP和随机更换请求头的方式来对房价数据进行爬取。

在每次进行爬虫代码的编写之前,我们的第一步也是最重要的一步就是分析我们的网页。

在我们本次的例子中,我们需要在每一页获取每一个具体房源的链接,然后进入到二级网页获取详细的信息,然后再返回上一级网页重复此过程。

通过分析我们发现在爬取过程中速度比较慢,所以我们还可以通过禁用谷歌浏览器图片、JavaScript等方式提升爬虫爬取速度。

开发工具

Python版本: 3.8

相关模块:

requests模块
parsel模块

环境搭建

安装Python并添加到环境变量,pip安装需要的相关模块即可。

思路分析

爬取页面如下图所示:

提取页面数据

浏览器中打开我们要爬取的页面
按F12进入开发者工具,查看我们想要的数据在哪里
这里我们需要房源页面数据就可以了

代码实现

# 伪装
headers = {'cookie': 'aQQ_ajkguid=B7A0A0B5-30EC-7A66-7500-D8055BFFE0FA; ctid=27; id58=CpQCJ2Lbhlm+lyRwdY5QAg==; _ga=GA1.2.2086942850.1658553946; wmda_new_uuid=1; wmda_uuid=009620ee2a2138d3bd861c92362a5d28; wmda_visited_projects=%3B6289197098934; 58tj_uuid=8fd994c2-35cc-405f-b671-2c1e51aa100c; als=0; ajk-appVersion=; sessid=8D76CC93-E1C8-4792-9703-F864FF755D63; xxzl_cid=2e5a66fa054e4134a15bc3f5b47ba3ab; xzuid=e60596c8-8985-4ab3-a5df-90a202b196a3; fzq_h=4c8d83ace17a19ee94e55d91124e7439_1666957662955_85c23dcb9b084efdbc4ac519c0276b68_2936029006; fzq_js_anjuke_ershoufang_pc=75684287c0be96cac08d04f4d6cc6d09_1666957664522_25; twe=2; xxzl_cid=2e5a66fa054e4134a15bc3f5b47ba3ab; xxzl_deviceid=OOpJsA5XrQMdJFfv71dg+l+he0O1OKPQgRAQcFPbeRAyhjZ4/7gS3Gj4DfiLjxfc; isp=true; obtain_by=2; new_session=1; init_refer=https%253A%252F%252Fcs.anjuke.com%252F; new_uv=3','user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36'
}
1.发送请求
response = requests.get(url=url, headers=headers)
2.获取数据
html_data = response.text
3.解析数据select = parsel.Selector(html_data)divs = select.css('.property-content')for div in divs:# .property-content-title-name   标题标题 = is_null(div.css('.property-content-title-name::text').get())# .property-content-info:nth-child(1) .property-content-info-text:nth-child(1) span  户型户型s = div.css('.property-content-info:nth-child(1) .property-content-info-text:nth-child(1) span::text').getall()户型 = ' '.join(户型s)# .property-content-info:nth-child(1) .property-content-info-text:nth-child(2)  面积面积 = is_null(div.css('.property-content-info:nth-child(1) .property-content-info-text:nth-child(2)::text').get())# .property-content-info:nth-child(1) .property-content-info-text:nth-child(3)  朝向朝向 = is_null(div.css('.property-content-info:nth-child(1) .property-content-info-text:nth-child(3)::text').get())# .property-content-info:nth-child(1) .property-content-info-text:nth-child(4)  楼层楼层 = is_null(div.css('.property-content-info:nth-child(1) .property-content-info-text:nth-child(4)::text').get())# .property-content-info:nth-child(1) .property-content-info-text:nth-child(5)  年份年份 = is_null(div.css('.property-content-info:nth-child(1) .property-content-info-text:nth-child(5)::text').get())# .property-content-info:nth-child(2) .property-content-info-comm-name  小区名称小区名称 = is_null(div.css('.property-content-info:nth-child(2) .property-content-info-comm-name::text').get())# .property-content-info:nth-child(2) .property-content-info-comm-address  小区地址小区地址 = is_null(div.css('.property-content-info:nth-child(2) .property-content-info-comm-address::text').get())# .property-content-info:nth-child(3) span  小区标签小区标签s = div.css('.property-content-info:nth-child(3) span::text').getall()小区标签 = ' '.join(小区标签s)# .property-price .property-price-total .property-price-total-num  总价总价 = is_null(div.css('.property-price .property-price-total .property-price-total-num::text').get())# .property-price .property-price-average  每平方米的价格单价 = is_null(div.css('.property-price .property-price-average::text').get())print(标题, 户型, 面积, 朝向, 楼层, 年份, 小区名称, 小区地址, 小区标签, 总价, 单价)
4.保存数据with open('安居客.csv', mode='a', encoding='utf-8', newline='') as f:csv_writer = csv.writer(f)csv_writer.writerow([标题, 户型, 面积, 朝向, 楼层, 年份, 小区名称, 小区地址, 小区标签, 总价, 单价])

结果展示


ps:图片仅供参考

最后

今天的分享到这里就结束了 ,感兴趣的朋友也可以去试试哈

对文章有问题的,或者有其他关于python的问题,可以在评论区留言或者私信我哦

觉得我分享的文章不错的话,可以关注一下我,或者给文章点赞(/≧▽≦)/

Python爬虫实战,requests+parsel模块,爬取二手房房源信息数据相关推荐

  1. Python 爬虫实战,模拟登陆爬取数据

    Python 爬虫实战,模拟登陆爬取数据 从0记录爬取某网站上的资源连接: 模拟登陆 爬取数据 保存到本地 结果演示: 源网站展示: 爬到的本地文件展示: 环境准备: python环境安装 略 安装r ...

  2. Python爬虫实战系列(一)-request爬取网站资源

    Python爬虫实战系列(一)-request爬取网站资源 python爬虫实战系列第一期 文章目录 Python爬虫实战系列(一)-request爬取网站资源 前言 一.request库是什么? 二 ...

  3. python爬虫实战(一)--爬取知乎话题图片

    原文链接python爬虫实战(一)–爬取知乎话题图片 前言 在学习了python基础之后,该尝试用python做一些有趣的事情了–爬虫. 知识准备: 1.python基础知识 2.urllib库使用 ...

  4. 从入门到入土:Python爬虫学习|实例练手|爬取LOL全英雄信息及技能||异步加载|初级难度反扒处理|寻找消失的API

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

  5. 爬虫实战:使用Selenium爬取京东宝贝信息

    有些页面数据是采用Ajax获取的,但是这些Ajax接口参数比较复杂,可能会加入加密秘钥.对于这种页面,最方便的方法是通过selenium.可以用Selenium来模拟浏览器操作,抓取京东商品信息. 网 ...

  6. python爬虫实战之百度新闻爬取

    百度新闻信息爬取 目录 百度新闻信息爬取 序言 获取在百度新闻中搜索"阿里巴巴"的网页源代码 编写正则表达式提取新闻信息 数据清洗并打印输出 实战完整代码 序言  通过对百度新闻标 ...

  7. Python爬虫实战案例一:爬取猫眼电影

    背景 笔者上一篇文章<基于猫眼票房数据的可视化分析>中爬取了猫眼实时票房数据,用于展示近三年电影票房概况.由于数据中缺少导演/演员/编剧阵容等信息,所以爬取猫眼电影数据进行补充.关于爬虫的 ...

  8. python实例豆瓣音乐代码_Python爬虫实战(3)-爬取豆瓣音乐Top250数据(超详细

    前言 首先我们先来回忆一下上两篇爬虫实战文章: 第一篇:讲到了requests和bs4和一些网页基本操作. 第二篇:用到了正则表达式-re模块 今天我们用lxml库和xpath语法来爬虫实战. 1.安 ...

  9. 【Python爬虫实战】使用Selenium爬取QQ音乐歌曲及评论信息

    本文对使用到的技术仅做简单的介绍,若想了解更多,请前往相应的官网网站进行学习. 本文适合对爬虫相关知识接触不多的新手,主要是普及Selenium如何做爬虫,大佬请跳过. 1.Selenium简单介绍 ...

最新文章

  1. 名校 Stanford
  2. 开启AngularJS学习之旅
  3. metasploit 模块和位置
  4. torch.load invalid load key, ‘\x00‘
  5. MongoDB的介绍和使用场景
  6. 【原创】Struts2.5.12版本中使用通配符*
  7. YOLOv3: 训练自己的数据(绝对经典版本1)
  8. url rewrite优化url的可读性
  9. 判断一个数是偶数还是奇数
  10. 207. 课程表/210. 课程表 II
  11. 微软批量许可 开放许可区别_网络漫画因开放许可而适用于动画
  12. 左程云 Java 笔记--二叉树
  13. SDS新书的来龙去脉 amp;amp; SDS序言 - 倪光南:众筹出书也是一种创新
  14. 微信小程序-从零开始制作一个跑步微信小程序
  15. 迅睿CMS 网站安全权限划分
  16. 和机器人交互,哪些是本质,哪些不是
  17. 主流Webrtc流媒体服务器之Kurento Media Server
  18. 利用决策树算法对sklearn中红酒数据集进行可视化分类
  19. 维吉尼亚(Vigenere)加密思路及实现
  20. Drupal 主题系统( Drupal theme)(1)

热门文章

  1. 使用 object 和 embed 标签播放SWF文件
  2. mysql如何在if中设置return_mysql 存储过程 if return
  3. JSP失物招领系统源码JSP寻物启事JSP校园失物招领系统-毕业设计-课程设计
  4. 打印CAD图纸,CAD看图同时快速打印
  5. 常用px, pt, em 换算表
  6. WMS(WindowManagerService)分析
  7. SQL2005 还原备份数据
  8. java五子棋需求分析文档,五子棋--需求分析.doc
  9. excel根据一列相同的内容合并
  10. Fluke ADPT连接器给福禄克万用表插上翅膀----直流电压测量