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

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

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

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

一、建立爬虫项目"lianjia"

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


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

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


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

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

1、items.py文件


2、lianjia.py文件

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


#设置抓取规则

'''

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

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

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

'''



3、pipelines.py文件



4、settings.py 文件


三、启动爬虫

输入启动命令 "scrapy crawl lianjia"。

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

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容