Python爬虫入门教程03:二手房数据爬取
前言
本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。
前文内容
Python爬虫入门教程01:豆瓣Top电影爬取
Python爬虫入门教程02:小说爬取
PS:如有需要 Python学习资料
以及 解答
的小伙伴可以加点击下方链接自行获取
python免费学习资料以及群交流解答点击即可加入
基本开发环境
- Python 3.6
- Pycharm
相关模块的使用
- requests
- parsel
- csv
安装Python并添加到环境变量,pip安装需要的相关模块即可。
一、明确需求
爬取图上所框的内容
二、请求网页
打开开发者工具( F12或者鼠标右键点击检查
)选择 notework
查看数据返回的内容。
通过开发者工具可以看到,网站是静态网页数据,请求url地址是可以直接获取数据内容的。
url = 'https://cs.lianjia.com/ershoufang/'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'
}
response = requests.get(url=url, headers=headers)
print(response.text)
如果你不知道,返回的数据中是否有你想要的内容,你有复制网页的内容,在pycharm的输出结果中进行搜索查看。
三、解析数据
既然网站是静态网页数据,那么就可以直接在开发者工具中 Elements
查看数据在哪
如上图所示,相关的数据内容都包含在 li
标签里面。通过 parsel
解析库,进行解析提取数据就可以了。
selector = parsel.Selector(response.text)
lis = selector.css('.sellListContent li')
for li in lis:# 标题title = li.css('.title a::text').get()# 地址positionInfo = li.css('.positionInfo a::text').getall()# 小区community = positionInfo[0]# 地名address = positionInfo[1]# 房子基本信息houseInfo = li.css('.houseInfo::text').get()# 房价Price = li.css('.totalPrice span::text').get() + '万'# 单价unitPrice = li.css('.unitPrice span::text').get().replace('单价', '')# 发布信息followInfo = li.css('.followInfo::text').get()dit = {'标题': title,'小区': community,'地名': address,'房子基本信息': houseInfo,'房价': Price,'单价': unitPrice,'发布信息': followInfo,}print(dit)
当我运行的时候发现报错了。
IndexError: list index out of range
超出索引范围了。
遇事不要慌, 取0超出索引范围,说明数据并没有取到,所以我们要看一下 <精装好房...>
这个信息下面那一个是什么情况。
搜索发现,这个中间插入了一条广告,也是li标签里面的,所以做一个简单的判断就好了,它是一个广告并没有标题,判断是否有标题就可以了,有就爬取相关内容,没有就pass掉。
for li in lis:# 标题title = li.css('.title a::text').get()if title:# 地址positionInfo = li.css('.positionInfo a::text').getall()# 小区community = positionInfo[0]# 地名address = positionInfo[1]# 房子基本信息houseInfo = li.css('.houseInfo::text').get()# 房价Price = li.css('.totalPrice span::text').get() + '万'# 单价unitPrice = li.css('.unitPrice span::text').get().replace('单价', '')# 发布信息followInfo = li.css('.followInfo::text').get()dit = {'标题': title,'小区': community,'地名': address,'房子基本信息': houseInfo,'房价': Price,'单价': unitPrice,'发布信息': followInfo,}print(dit)
这样就不会报错了。
四、保存数据(数据持久化)
和爬取豆瓣的电影信息是一样的,使用csv模块,把数据保存到Excel里面
# 创建文件
f = open('二手房数据.csv', mode='a', encoding='utf-8', newline='')
csv_writer = csv.DictWriter(f, fieldnames=['标题', '小区', '地名', '房子基本信息','房价', '单价', '发布信息'])
# 写入表头
csv_writer.writeheader()
''''
''''
csv_writer.writerow(dit)
五、多页爬取
# 第二页url地址
url_2 = 'https://cs.lianjia.com/ershoufang/pg2/'
# 第三页url地址
url_3 = 'https://cs.lianjia.com/ershoufang/pg3/'
# 第四页url地址
url_4 = 'https://cs.lianjia.com/ershoufang/pg4/'
通过以上的内容,只需要for 循环遍历 pg的参数 即可多页爬取
for page in range(1, 101):url = f'https://cs.lianjia.com/ershoufang/pg{page}/'
这样就可以进行多页爬取了。
实现效果
Python爬虫入门教程03:二手房数据爬取相关推荐
- Python爬虫入门教程02:小说爬取
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 前文 01.python爬虫入门教程01:豆瓣Top电影爬取 基本开发环境 Python 3 ...
- Python爬虫入门教程 6-100 蜂鸟网图片爬取之一
1. 蜂鸟网图片简介 国庆假日结束了,新的工作又开始了,今天我们继续爬取一个网站,这个网站为 http://image.fengniao.com/ ,蜂鸟一个摄影大牛聚集的地方,本教程请用来学习,不要 ...
- Python爬虫入门教程09:多线程爬取表情包图片
前言
- python爬虫入门实战---------一周天气预报爬取_Python爬虫入门实战--------一周天气预报爬取【转载】【没有分析...
Python爬虫入门实战--------一周天气预报爬取[转载][没有分析 Python爬虫入门实战--------一周天气预报爬取[转载][没有分析] 来源:https://blog.csdn.ne ...
- Python爬虫《自动化学报》数据爬取与数据分析
Python爬虫<自动化学报>数据爬取与数据分析 文章目录 Python爬虫<自动化学报>数据爬取与数据分析 前言 一.代码 二.结果展示 三.爬虫实现 1.准备 2.获取网页 ...
- Python爬虫小白教程(二)—— 爬取豆瓣评分TOP250电影
文章目录 前言 安装bs4库 网站分析 获取页面 爬取页面 页面分析 其他页面 爬虫系列 前言 经过上篇博客Python爬虫小白教程(一)-- 静态网页抓取后我们已经知道如何抓取一个静态的页面了,现在 ...
- Python爬虫学习教程 bilibili网站视频爬取!【附源码】
Python爬虫学习教程,万物皆可爬!每个技术大牛都是从基础慢慢的提升上去的,基础知识越深以后的发展越牛!学好python,才能玩转python,那到底怎么才能学好python? 通过爬取b站案例带领 ...
- python爬虫,g-mark网站图片数据爬取及补坑
应用python对g-mark网站图片数据爬取,同时但对于数据抓取失败的图片进行补坑(重新爬取操作),由于是日本网站,没有梯子访问的话,特别容易访问超时,比较合适的补坑操作是直接将数据采集到数据库,而 ...
- Python爬虫-CSDN博客排行榜数据爬取
文章目录 前言 网络爬虫 搜索引擎 爬虫应用 谨防违法 爬虫实战 网页分析 编写代码 运行效果 反爬技术 前言 开始接触 CTF 网络安全比赛发现不会写 Python 脚本的话简直寸步难行--故丢弃 ...
- Scrapy-redis 分布式爬虫-成都安居客二手房数据爬取
Joint-spider 项目地址:GitHub Scrapy-Redis 架构: 成都贝壳,安居客房源信息爬虫 基于 python 分布式房源数据爬取系统,为房价数据挖掘及可视化提供数据支持.采用 ...
最新文章
- 【组队学习】【35期】SQL编程语言
- 使用iphone功能来实现远程监控
- C/C++内存管理详解
- oracle 并行提交,如何配置Oracle并行处理(上)
- OpenCV:使用 随机森林与GBDT
- scatter python_python数据可视化(matplotlib、scatter)
- 19岁白帽子通过bug悬赏赚到一百万美元--转
- Redis HyperLogLog 是什么?这些场景使用它~
- 安卓小程序 自定义下拉刷新_支付宝小程序设计设计指南
- 【转】小木虫分享免费文献获得方法
- java compiler = null_Java Compiler command()方法
- IBM Machine Learning学习笔记(一)——Exploratory Data Analysis for Machine Learning
- 软件著作权申请注意事项(微信小程序)
- 晨曦记账本如何将账本内容导出EXCEL表格
- Caterpillar CAT SIS卡特彼勒最新零件目录系统+维修信息
- 《系统之美》— 忒修斯悖论
- 百度的镜像网站,有意思…………
- JWT的讲解以及JJWT的使用(另附JWT工具类)
- 【面试】Js面试题(一)
- 计算机音乐告白之夜,温柔版:《告白之夜(纯音乐)》
热门文章
- 15.编写LED程序及反汇编工具
- 程序员是做什么的?怎么成为程序员?
- 图形学常见概念与算法-常用初等数学公式
- java编写蠕虫病毒_教大家编写蠕虫病毒
- shc加密shell脚本
- PLC调试工具Modbus Poll使用说明(ModBus TCP/IP类型)
- 程序员培训去哪里?哪里学习程序员
- ISP对pptpd及1723端口的动态管控初探
- LRO -- skb_buff->frags[] skb_buff->frag_list
- 声音莫名从扬声器切换到听筒_扬声器听筒的切换