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爬虫入门教程石家庄链家租房数据抓取相关推荐

  1. Python爬虫入门教程 31-100 36氪(36kr)数据抓取 scrapy

    1. 36氪(36kr)数据----写在前面 今天抓取一个新闻媒体,36kr的文章内容,也是为后面的数据分析做相应的准备的,预计在12月底,爬虫大概写到50篇案例的时刻,将会迎来一个新的内容,系统的数 ...

  2. Python爬虫入门教程 22-100 CSDN学院课程数据抓取

    1. CSDN学院课程数据-写在前面 今天又要抓取一个网站了,选择恐惧症使得我不知道该拿谁下手,找来找去,算了,还是抓取CSDN学院吧,CSDN学院的网站为 https://edu.csdn.net/ ...

  3. Python爬虫入门【16】:链家租房数据抓取

    1. 写在前面 作为一个活跃在京津冀地区的开发者,要闲着没事就看看石家庄这个国际化大都市的一些数据,这篇博客爬取了链家网的租房信息,爬取到的数据在后面的博客中可以作为一些数据分析的素材. 我们需要爬取 ...

  4. Python爬虫入门教程 3-100 美空网数据爬取 1

    1.美空网数据-简介 从今天开始,我们尝试用2篇博客的内容量,搞定一个网站叫做"美空网"网址为:http://www.moko.cc/, 这个网站我分析了一下,我们要爬取的图片在 ...

  5. Python爬虫入门教程 3-100 美空网数据爬取

    1.美空网数据-简介 从今天开始,我们尝试用2篇博客的内容量,搞定一个网站叫做"美空网"网址为:http://www.moko.cc/, 这个网站我分析了一下,我们要爬取的图片在 ...

  6. python数据抓取课程_Python爬虫入门教程 22-100 CSDN学院课程数据抓取

    1. CSDN学院课程数据-写在前面 今天又要抓取一个网站了,选择恐惧症使得我不知道该拿谁下手,找来找去,算了,还是抓取CSDN学院吧,CSDN学院的网站为 https://edu.csdn.net/ ...

  7. 爬虫实战:链家租房数据爬取,实习僧网站数据爬取

    前面已经进行了爬虫基础部分的学习,于是自己也尝试爬了一些网站数据,用的策略都是比较简单,可能有些因素没有考虑到,但是也爬取到了一定的数据,下面介绍两个爬过的案例. 爬虫实战 链家网站爬取 实习僧网站爬 ...

  8. 干货!链家二手房数据抓取及内容解析要点

    "本文对链家官网网页进行内容分析,可以作为一般HTTP类应用协议进行协议分析的参考,同时,对链家官网的结构了解后,可以对二手房相关信息进行爬取,并且获取被隐藏的近期成交信息." 另 ...

  9. Python爬虫入门教程 14-100 All IT eBooks多线程爬取

    All IT eBooks多线程爬取-写在前面 对一个爬虫爱好者来说,或多或少都有这么一点点的收集癖 ~ 发现好的图片,发现好的书籍,发现各种能存放在电脑上的东西,都喜欢把它批量的爬取下来. 然后放着 ...

最新文章

  1. 荣耀预装linux安装包,关于华为机子没有预装应用商店讨论
  2. Linux下Apache日志分析工具--AWStats安装使用
  3. 树莓派dht11上云_树莓派使用 DHT11 / DHT22 温湿度传感器
  4. 发纸牌c语言指针,算了算学了有一个月c语言了,写了个扑克牌程序
  5. 四川大学java语言程序设计_四川大学2014年计算机(软件)学院Java语言设计期末考试B卷程序.doc...
  6. Java 8之新特性详解
  7. python有趣的简单代码_简单代码一学就会,Python生成GIF动图
  8. 【编译原理笔记18】代码优化:活跃变量分析,可用表达式分析
  9. python编程入门视频-2020年5个经典python编程入门视频教程推荐学习
  10. 简易JTAG线缆原理
  11. 一卡通(M1卡)破解过程记录——获取扇区密钥
  12. ArcPy常用函数梳理
  13. 支付宝支付提示 4006 ISV权限不足
  14. 年后跳槽高峰期,字节跳动面试题拿走不谢(含答案)
  15. 北京航空航天大学计算机科学与技术考研科目,2022北京航空航天大学计算机科学与技术考研备考指导-参考书、分数线...
  16. python类似图片查找_python检测相似图片
  17. 软件测试工程师笔试题目
  18. 声明式导航编程式导航
  19. SpringBoot 集成 ES 7.6.2 并对字段进行中文和拼音分词处理
  20. python-docx库实战修改word文档格式

热门文章

  1. java的知识点11——面向对象的三大特征之一继承、instanceof 运算符、方法的重写override、Object类基本特性、toString方法
  2. 用javascript自制ctf词频分析工具
  3. PyQt5 图形界面-用Qt Designer来设计UI界面,并转化为python代码运行实例演示
  4. SQL语句查询出的数据进行字符串拼接,oracle批量删除数据库用户实例演示
  5. PyQt5 技术篇-QWidget、Dialog设置界面固定大小、不可拉伸方法实例演示
  6. C# 学习笔记(5) 继承
  7. 多个18B20组成测温系统
  8. Python爬虫学习(1)
  9. Ubuntu 14.04 64bit + CUDA 6.5 配置说明
  10. python 计算当月天数_告诉你怎么用Python进行企业营运分析!盈利这么多?