python链家网二手房数据爬取

本文介绍了如何使用Python爬虫从链家网M端获取二手房数据。通过检查网络请求,发现数据通过异步加载,每页通过修改pg参数获取。成功抓取3000个房源链接,并存入txt文件。利用多进程(multiprocessing模块的pool函数)加速了数据抓取过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python链家网二手房数据爬取

由于想练习一下Python的数据清洗,并将之前学习的机器学习内容付诸以实践,发现二手房市场的数据分析报告的内容十分匮乏。故此,通过Python爬取“链家网”杭州市二手房房源信息,辅助以Mongodb、PowerBI、Spss、Highchart实现数据的获取、数据的存储与查询、数据的初步统计描述、数据的可视化、数据的建模分析、数据的报表呈现。通过机器学习的随机森林算法,通过二手房源的自身特征来预测房源的关注度与累计看房数。

二手房数据的获取

主要使用到的第三方库有:
1.requests
2.Beautifulsoup
3.pymongo
4.multiprocess

    在前几次尝试的过程中发现,“链家网”会在IP频繁访问时,禁止我的IP的访问请求,造成数据爬取失败。沿着IP单一这个问题,尝试过使用代理IP,将免费代理IP网站上的IP地址以及端口号爬取下来,写入csv文件中,由于免费的代理质量不佳,需要自己写代码去验证IP的有效性,通过requests.get()中的timeout设置,当规定时间内没有出现响应的IP剔除,由此构建一个IP代理池。但在实践中发现,之前验证可以的代理,在短时间内很容易再次失效。
    之后查找资料后看到有前人通过服务器动态切换IP地址的方法避免爬虫被封,使用Tornado+Redis维护ADSL拨号服务器代理池,需要Linux的相关知识,下次补习Linux后再研究该怎么操作。后来寻思是不是可以从网站的M端进行数据爬取,有可能M端的反爬没有那么严,果然通过M端的爬取既没有限制IP连对访问的时间频率也没有做出限制。
    代码的思路是:

这里写图片描述
尝试后发现M端的网站房源信息总共100页,也是通过异步加载的方式,通过检查network的XHR可以发现访问的链接只是在后面的pg参数加上页码。通过循环将3000套房源的链接爬取下来后并实现拼接。然后通过请求这些房源的链接来抓取具体数据。实现中发现可以先将房源链接写入txt文本,然后通过multiprocess的pool函数实现多进程处理,爬取速度显著提升。

from bs4 import BeautifulSoup
import requests
import pymongo
import time

client = pymongo.MongoClient('localhost',27017)
lianjia = client['lianjia']
house_info = lianjia['house_info']

headers = {
  'User-Agent':'Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1'}
cookies = {
  'cookie
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值