python爬虫抓取链家网二手房数据,绕过链家只显示前100页限制

最近用 python 爬虫抓取了链家网站二手房的数据,说一下大概思路和遇到的问题。

最开始,是在找链家提供的apiRequests虽然没有转基因,美丽汤也简洁美丽,但还是略显麻烦。

如果能直接找到json格式的数据,那自然最好,就不必再使用Requests+BeautifulSoup的组合来折腾了。

以链家成都二手房首页为入口,确实可以看到有api存在。

我激动得差点以为成功了,就这么简单?

但仔细一看,并不对,这个接口根本匹配不了当前页面显示的内容。

怎么办,只有祭出Requests+BeautifulSoup大法了。

这时候就遇到一个问题,链家只显示前100页数据,100以后的数据根本就不显示啊,又怎么办?

手动构造链接,把「pg100」改成「pg105」、「pg106」,没有效果。


 

不能硬来,我们选择分区。

先把首页的锦江、青羊、武侯、高新、成华、金牛等区拼音抓下来,然后按区分别去抓取房源。原则上,只要每个区的房源数量小于100*30套,就能抓取完。

抓取区的核心代码为:

如果某区数量大于3000,可以先抓100页,得到小区、片区名,然后按小区或者片区再去爬取。

其他内容,比方说RequestsBeautifulSoup的使用,链接的构造,USER_AGENTS的随机切换等,本文就不再介绍了,网络上有其他比我写得好的内容。

总结一下,链家网站其实对爬虫是很友好的,基本上只要你换个USER_AGENTS,程序跑慢点,他就不会 ban 你。

最后,贴一下跑出来的数据。