爬取安居客租房详情+翻页
爬取链接:https://wf.zu.anjuke.com/?from=navigation
首先我们先打开浏览器,输入网址,利用network进行抓包,找到type ducument响应源码文件
我们发现我们要爬取的数据在html源码中,那么我们就方便了,使用requests和lxml配合使用爬取租房信息,采用面向对象进行开发,方便代码修改,然后我们编写代码!!!
# -- coding: utf-8 --
# @Time : 2020/12/28 15:40
# @FileName: Anjuke.py
# @Software: PyCharmimport requests
from lxml import etree
import csv
from pymongo import MongoClientclass Anjuke(object):def __init__(self):self.url = 'https://wf.zu.anjuke.com/?from=navigation'self.headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) ''Chrome/87.0.4280.88 Safari/537.36 ','referer': 'https://weifang.anjuke.com/'}self.client = MongoClient("127.0.0.1", 27017)self.db = self.client['Anjuke']self.col = self.db['House']def get_data(self):proxies_url = 'http://webapi.http.zhimacangku.com/getip?num=20&type=2&pro=&city=0&yys=0&port=1&pack=131877&ts' \'=0&ys=0&cs=0&lb=1&sb=0&pb=4&mr=1®ions= 'res = requests.get(proxies_url)dict_data = json.loads(res.content)for agent in dict_data["data"]:ip = agent['ip']port = agent['port']# 代理服务器proxyHost = ipproxyPort = portproxyMeta = "http://%(host)s:%(port)s" % {"host": proxyHost,"port": proxyPort,}self.proxies = {"http": proxyMeta}response = requests.get(url=self.url, proxies=self.proxies)return responsedef parse_data(self, response):html = etree.HTML(response.content)node_list = html.xpath('//div[@class="zu-itemmod"]')data_list = list()for node in node_list:temp = {}temp["标题"] = node.xpath("./div[1]/h3/a/b/text()")[0]temp["链接"] = node.xpath("./div[1]/h3/a/@href")[0]temp["价格"] = node.xpath("./div[2]/p/strong/b/text()")[0] + '元'temp["大小"] = node.xpath("./div[1]/p[1]/b[3]/text()")[0] + '平米'shi = node.xpath("./div[1]/p[1]/b[1]/text()")[0]ting = node.xpath("./div[1]/p[1]/b[2]/text()")[0]temp["户型"] = shi + '室' + ting + '厅'temp["姓名"] = node.xpath("./div[1]/p[1]/text()[6]")[0].strip()temp["小区"] = node.xpath("./div[1]/address/a/text()")[0]temp["地址"] = node.xpath("./div[1]/address/text()")[1].strip()temp["整租"] = node.xpath("./div[1]/p[2]/span[1]/text()")[0]temp["方向"] = node.xpath("./div[1]/p[2]/span[2]/text()")[0]detail_link = temp["链接"]self.url = detail_linkprint(self.url)response = requests.get(url=self.url, headers=self.headers)html = etree.HTML(response.content)try:temp["要求"] = html.xpath('/html/body/div[3]/div[2]/div[1]/ul[1]/li[1]/span[2]/text()')[0]except:temp["要求"] = "空"try:temp["描述"] = html.xpath('/html/body/div[3]/div[2]/div[1]/div[6]/b/text()')[0]except:temp["描述"] = "空"try:temp["图片"] = html.xpath('//*[@id="room_pic_wrap"]/div/img/@data-src')[0]except:temp["图片"] = "空"try:temp["日期"] = html.xpath('/html/body/div[3]/div[2]/div[1]/div[2]/div/b/text()')[0]except:temp["日期"] = "空"print(temp)data_list.append(temp)return data_listdef save_data(self, data_list):for data in data_list:csv_writer.writerow([data["标题"], data["链接"], data["价格"], data["大小"], data["户型"], data["姓名"], data["小区"], data["地址"],data["整租"], data["方向"], data["要求"], data["描述"], data["图片"], data["日期"]])self.col.insert_one(data)self.client.close()def run(self):while True:response = self.get_data()data_list = self.parse_data(response)self.save_data(data_list)html = etree.HTML(response.content)try:next_url = html.xpath('//*[contains(text(),"下一页")]/@href')[0]print(next_url)self.url = next_urlexcept:breakif __name__ == '__main__':head = ["标题", "链接", "价格", "大小", "户型", "姓名", "小区", "地址", "整租", "方向", "要求", "描述", "图片", "日期"]with open('安居客.csv', 'w', newline='', encoding="gb18030") as f:csv_writer = csv.writer(f)csv_writer.writerow(head)anjuke = Anjuke()anjuke.run()
将数据存储到csv中,并存储到mongodb数据库,并且实现了翻页功能,其中还添加了代理,因为在打开详情页时访问频繁被屏蔽403,利用代理ip进行爬取!
我爬取的是潍坊,如果想爬其他的地方,wf换成你想爬的城市的缩写就行
希望大家多多给我点赞呀!
爬取安居客租房详情+翻页相关推荐
- 爬取安居客租房信息,主要是获取电话号码
爬取安居客租房信息,主要是获取电话号码 想要得到个人房源的电话只能在app上获取,而且获取的是虚拟号码,没什么作用.所以我们这次获取的是经纪人房源的电话号码,随便打开一个网页,可以看到. 他的电话号码 ...
- python爬虫爬取安居客并进行简单数据分析
此篇博客为普通方式爬取安居客租房数据一共提取出1200条,但是在进行大规模的数据爬取时,不建议使用这种方式,速度太慢是最大的诟病,在进行大规模爬取时,使用分布式爬虫是第一选择 爬取过程 一.指定爬取数 ...
- python爬取安居客网站上北京二手房数据
目标:爬取安居客网站上前10页北京二手房的数据,包括二手房源的名称.价格.几室几厅.大小.建造年份.联系人.地址.标签等. 网址为:https://beijing.anjuke.com/sale/ B ...
- Python开发爬虫之BeautifulSoup解析网页篇:爬取安居客网站上北京二手房数据
目标:爬取安居客网站上前10页北京二手房的数据,包括二手房源的名称.价格.几室几厅.大小.建造年份.联系人.地址.标签等. 网址为:https://beijing.anjuke.com/sale/ B ...
- 爬虫爬取安居客二手房和新房信息,你是买新房还是二手的呢?
本文主要讲解爬取安居客买房类别中的二手房和新房,将提取的信息存储在记事本中,也可以转存CSV格式或者MongoDB中. 网站HTML信息提取比较简单,没有什么特别的地方,作为爬虫入门可以让初学者快速了 ...
- python爬虫爬取安居客房源信息
爬取安居客房源信息 Xpath插件的安装 爬取重庆花溪附近的房源信息(进入正题啦~) 梳理下逻辑 爬取数据的通用流程 代码 代码的问题 & 运行时可能出现的问题 结果 数据处理部分(写给我自己 ...
- Python爬取安居客新房信息
由于是刚开始学习Python爬虫,做个简单的爬虫,提供一个学习思路. 由于水平有限,正则表达式写的实在是抠脚,就直接上BeautifulSoup了. BeautifulSoup的学习参考http:// ...
- python爬取房源数据_python爬取安居客二手房网站数据(实例讲解)
是小打小闹 哈哈,现在开始正式进行爬虫书写首先,需要分析一下要爬取的网站的结构:作为一名河南的学生,那就看看郑州的二手房信息吧! 在上面这个页面中,我们可以看到一条条的房源信息,从中我们发现了什么,发 ...
- 爬虫项目--爬取安居客二手房信息
爬虫实战(爬取安居客二手房信息-成都天府新区) 环境:python3.6 pycharm bs4库 解析方式:bs4 需求:爬取二手房信息字段(titile,house_type,build_time ...
最新文章
- Firefox 突然拉黑中国用户
- 机器学习--线性回归、逻辑回归
- (WebKit) ViewPort + Backing Store + Page Content
- django批量修改table_Django 数据库表多对多的创建和增删改查
- maven添加sqlserver的jdbc驱动包
- [itext] java生成pdf
- mysql noinstall 5.5_mysqlnoinstall 手动安装
- 深度学习TF—5.tf.kears高层API
- Oracle脚本(三)
- 卡巴世界,卡巴斯基,卡巴斯基key,卡巴斯基激活码,软件下载,每天更新
- linux多队列网卡中断绑定,网卡中断及多队列 - osc_mzx9t9jk的个人空间 - OSCHINA - 中文开源技术交流社区...
- QC七大手法之直方图详解
- 聚币网API使用教程 demo
- php pecl libevent,ubuntu – 安装PHP libevent PECL包的问题
- WebSpider和一些杂七杂八
- Photo Album: 2008年5月-三亚爱琴海岸康年度假村-day4
- Axure中继器组件的使用
- 微信小程序动态绑定unit-id
- ssh免密码登录快速配置方法
- 在Vivado下如何判断芯片是多die芯片-关于SSI的多方面解答