利用Scrapy爬取北京链家二手房信息

此次爬虫参考了https://blog.csdn.net/weixin_39679004/article/details/83023963

本次爬虫选用Scrapy框架爬取链家网北京二手房(https://bj.lianjia.com/ershoufang/)的相关信息。爬取思路为:二手房信息共100页,生成每页的网址;对每页二手房信息爬取每套房的链接;对每套房的链接页面爬取房屋价格、面积、位置等房屋信息。

下面 将介绍整个爬虫过程:

一、建立爬虫项目”lianjia”

在项目文件夹下执行”scrapy startproject lianjia_beijing”。执行该语句即可建立项目“lianjia_beijing”。

《利用Scrapy爬取北京链家二手房信息》

执行完后项目结构如下所示:

《利用Scrapy爬取北京链家二手房信息》

接着进入到项目文件夹lianjia_beijing(cd lianjia_beijing),执行”scrapy genspider lianjia https://bj.lianjia.com/ershoufang/”来建立爬虫文件 lianjia.py,执行完后的项目结构如下所示:

《利用Scrapy爬取北京链家二手房信息》

其中lianjia.py 用来书写爬虫程序,即从网页中抽取所需信息的程序;items.py用来书写项目的数据存储模型,即需要存储哪些字段;middlewares.py用来定义项目所需的中间件,在建立项目时会自行生成“爬虫中间件”和“下载中间件”,一般无需自己再书写;pipelines.py用于书写管道函数,进而处理爬取到的数据;settings.py用于书写爬虫项目的配置信息,包括数据库信息、编码信息等。

二、下面将分别介绍爬虫的各代码文件。

1、items.py文件

《利用Scrapy爬取北京链家二手房信息》
《利用Scrapy爬取北京链家二手房信息》
《利用Scrapy爬取北京链家二手房信息》

2、lianjia.py文件

lianjia.py 用来书写信息爬取逻辑

《利用Scrapy爬取北京链家二手房信息》

#设置抓取规则

”’

linkExtractor是链接提取器,对于访问到的网页A,提取网页A中符合筛选条件的链接,用于筛选的参数用两个:allow和restrict_xpath,其中allow用于限定url的范围,restrict_xpath用于限定在网页中的什么位置提取链接;follow参数设置为True时意味着从A中提取到的链接B等继续访问,把B中符合条件的链接提取出来,以此类推取出全站符合筛选条件的链接;

callback函数设置请求网页得到response后需要调用的函数,这里不要调用建立项目时默认生成的parse函数,需要自己新建立一个新的函数,否则调用会出问题;

Rule书写完后需要在括号后面添加逗号”,”,即使是仅有一个Rule,否则运行时会报错。

”’

《利用Scrapy爬取北京链家二手房信息》

《利用Scrapy爬取北京链家二手房信息》

3、pipelines.py文件

《利用Scrapy爬取北京链家二手房信息》
《利用Scrapy爬取北京链家二手房信息》
《利用Scrapy爬取北京链家二手房信息》
《利用Scrapy爬取北京链家二手房信息》

《利用Scrapy爬取北京链家二手房信息》

4、settings.py 文件

《利用Scrapy爬取北京链家二手房信息》
《利用Scrapy爬取北京链家二手房信息》
《利用Scrapy爬取北京链家二手房信息》

三、启动爬虫

输入启动命令 “scrapy crawl lianjia”。

这里在执行时遇到了问题,由于lianjia.py文件中没有删除创建项目自动生成的“parse”函数,虽然在Rule中指定了callback=”parse_house”,但是在执行爬虫时生成的response仍然会交给“parse”函数处理,影响爬虫的执行。删除”parse”函数后执行爬虫,爬虫可以正常执行。

下图显示的是爬取的北京链家二手房信息:

《利用Scrapy爬取北京链家二手房信息》

    原文作者:平凡的浩仔
    原文地址: https://www.jianshu.com/p/b262ed7a66fd
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞