Python爬虫入门教程石家庄链家租房数据抓取
1. 写在前面
这篇博客爬取了链家网的租房信息,爬取到的数据在后面的博客中可以作为一些数据分析的素材。
我们需要爬取的网址为:https://sjz.lianjia.com/zufang/
2. 分析网址
首先确定一下,哪些数据是我们需要的
可以看到,黄色框就是我们需要的数据。
接下来,确定一下翻页规律
https://sjz.lianjia.com/zufang/pg1/ https://sjz.lianjia.com/zufang/pg2/ https://sjz.lianjia.com/zufang/pg3/ https://sjz.lianjia.com/zufang/pg4/ https://sjz.lianjia.com/zufang/pg5/ ... https://sjz.lianjia.com/zufang/pg80/
3. 解析网页
有了分页地址,就可以快速把链接拼接完毕,我们采用lxml
模块解析网页源码,获取想要的数据。
本次编码使用了一个新的模块 fake_useragent
,这个模块,可以随机的去获取一个UA(user-agent),模块使用比较简单,可以去百度百度就很多教程。
本篇博客主要使用的是调用一个随机的UA
self._ua = UserAgent() self._headers = {"User-Agent": self._ua.random} # 调用一个随机的UA
由于可以快速的把页码拼接出来,所以采用协程进行抓取,写入csv文件采用的pandas
模块
from fake_useragent import UserAgent from lxml import etree import asyncio import aiohttp import pandas as pdclass LianjiaSpider(object):def __init__(self):self._ua = UserAgent()self._headers = {"User-Agent": self._ua.random}self._data = list()async def get(self,url):async with aiohttp.ClientSession() as session:try:async with session.get(url,headers=self._headers,timeout=3) as resp:if resp.status==200:result = await resp.text()return resultexcept Exception as e:print(e.args)async def parse_html(self):for page in range(1,77):url = "https://sjz.lianjia.com/zufang/pg{}/".format(page)print("正在爬取{}".format(url))html = await self.get(url) # 获取网页内容html = etree.HTML(html) # 解析网页self.parse_page(html) # 匹配我们想要的数据print("正在存储数据....")######################### 数据写入data = pd.DataFrame(self._data)data.to_csv("链家网租房数据.csv", encoding='utf_8_sig') # 写入文件######################### 数据写入def run(self):loop = asyncio.get_event_loop()tasks = [asyncio.ensure_future(self.parse_html())]loop.run_until_complete(asyncio.wait(tasks))if __name__ == '__main__':l = LianjiaSpider()l.run()
上述代码中缺少一个解析网页的函数,我们接下来把他补全
def parse_page(self,html):info_panel = html.xpath("//div[@class='info-panel']")for info in info_panel:region = self.remove_space(info.xpath(".//span[@class='region']/text()"))zone = self.remove_space(info.xpath(".//span[@class='zone']/span/text()"))meters = self.remove_space(info.xpath(".//span[@class='meters']/text()"))where = self.remove_space(info.xpath(".//div[@class='where']/span[4]/text()"))con = info.xpath(".//div[@class='con']/text()")floor = con[0] # 楼层type = con[1] # 样式 agent = info.xpath(".//div[@class='con']/a/text()")[0]has = info.xpath(".//div[@class='left agency']//text()")price = info.xpath(".//div[@class='price']/span/text()")[0]price_pre = info.xpath(".//div[@class='price-pre']/text()")[0]look_num = info.xpath(".//div[@class='square']//span[@class='num']/text()")[0]one_data = {"region":region,"zone":zone,"meters":meters,"where":where,"louceng":floor,"type":type,"xiaoshou":agent,"has":has,"price":price,"price_pre":price_pre,"num":look_num}self._data.append(one_data) # 添加数据
不一会,数据就爬取的差不多了。
转载于:https://www.cnblogs.com/Anderson-An/p/10280304.html
Python爬虫入门教程石家庄链家租房数据抓取相关推荐
- Python爬虫入门教程 31-100 36氪(36kr)数据抓取 scrapy
1. 36氪(36kr)数据----写在前面 今天抓取一个新闻媒体,36kr的文章内容,也是为后面的数据分析做相应的准备的,预计在12月底,爬虫大概写到50篇案例的时刻,将会迎来一个新的内容,系统的数 ...
- Python爬虫入门教程 22-100 CSDN学院课程数据抓取
1. CSDN学院课程数据-写在前面 今天又要抓取一个网站了,选择恐惧症使得我不知道该拿谁下手,找来找去,算了,还是抓取CSDN学院吧,CSDN学院的网站为 https://edu.csdn.net/ ...
- Python爬虫入门【16】:链家租房数据抓取
1. 写在前面 作为一个活跃在京津冀地区的开发者,要闲着没事就看看石家庄这个国际化大都市的一些数据,这篇博客爬取了链家网的租房信息,爬取到的数据在后面的博客中可以作为一些数据分析的素材. 我们需要爬取 ...
- Python爬虫入门教程 3-100 美空网数据爬取 1
1.美空网数据-简介 从今天开始,我们尝试用2篇博客的内容量,搞定一个网站叫做"美空网"网址为:http://www.moko.cc/, 这个网站我分析了一下,我们要爬取的图片在 ...
- Python爬虫入门教程 3-100 美空网数据爬取
1.美空网数据-简介 从今天开始,我们尝试用2篇博客的内容量,搞定一个网站叫做"美空网"网址为:http://www.moko.cc/, 这个网站我分析了一下,我们要爬取的图片在 ...
- python数据抓取课程_Python爬虫入门教程 22-100 CSDN学院课程数据抓取
1. CSDN学院课程数据-写在前面 今天又要抓取一个网站了,选择恐惧症使得我不知道该拿谁下手,找来找去,算了,还是抓取CSDN学院吧,CSDN学院的网站为 https://edu.csdn.net/ ...
- 爬虫实战:链家租房数据爬取,实习僧网站数据爬取
前面已经进行了爬虫基础部分的学习,于是自己也尝试爬了一些网站数据,用的策略都是比较简单,可能有些因素没有考虑到,但是也爬取到了一定的数据,下面介绍两个爬过的案例. 爬虫实战 链家网站爬取 实习僧网站爬 ...
- 干货!链家二手房数据抓取及内容解析要点
"本文对链家官网网页进行内容分析,可以作为一般HTTP类应用协议进行协议分析的参考,同时,对链家官网的结构了解后,可以对二手房相关信息进行爬取,并且获取被隐藏的近期成交信息." 另 ...
- Python爬虫入门教程 14-100 All IT eBooks多线程爬取
All IT eBooks多线程爬取-写在前面 对一个爬虫爱好者来说,或多或少都有这么一点点的收集癖 ~ 发现好的图片,发现好的书籍,发现各种能存放在电脑上的东西,都喜欢把它批量的爬取下来. 然后放着 ...
最新文章
- 荣耀预装linux安装包,关于华为机子没有预装应用商店讨论
- Linux下Apache日志分析工具--AWStats安装使用
- 树莓派dht11上云_树莓派使用 DHT11 / DHT22 温湿度传感器
- 发纸牌c语言指针,算了算学了有一个月c语言了,写了个扑克牌程序
- 四川大学java语言程序设计_四川大学2014年计算机(软件)学院Java语言设计期末考试B卷程序.doc...
- Java 8之新特性详解
- python有趣的简单代码_简单代码一学就会,Python生成GIF动图
- 【编译原理笔记18】代码优化:活跃变量分析,可用表达式分析
- python编程入门视频-2020年5个经典python编程入门视频教程推荐学习
- 简易JTAG线缆原理
- 一卡通(M1卡)破解过程记录——获取扇区密钥
- ArcPy常用函数梳理
- 支付宝支付提示 4006 ISV权限不足
- 年后跳槽高峰期,字节跳动面试题拿走不谢(含答案)
- 北京航空航天大学计算机科学与技术考研科目,2022北京航空航天大学计算机科学与技术考研备考指导-参考书、分数线...
- python类似图片查找_python检测相似图片
- 软件测试工程师笔试题目
- 声明式导航编程式导航
- SpringBoot 集成 ES 7.6.2 并对字段进行中文和拼音分词处理
- python-docx库实战修改word文档格式
热门文章
- java的知识点11——面向对象的三大特征之一继承、instanceof 运算符、方法的重写override、Object类基本特性、toString方法
- 用javascript自制ctf词频分析工具
- PyQt5 图形界面-用Qt Designer来设计UI界面,并转化为python代码运行实例演示
- SQL语句查询出的数据进行字符串拼接,oracle批量删除数据库用户实例演示
- PyQt5 技术篇-QWidget、Dialog设置界面固定大小、不可拉伸方法实例演示
- C# 学习笔记(5) 继承
- 多个18B20组成测温系统
- Python爬虫学习(1)
- Ubuntu 14.04 64bit + CUDA 6.5 配置说明
- python 计算当月天数_告诉你怎么用Python进行企业营运分析!盈利这么多?