Scrapy爬取链家数据(二):爬取小区详细信息

前言

       上一篇文章中有朋友问不能正确获取页面,一个原因是没有设置不遵守爬虫协议,设置方法如下,在settings.py文件中,将图中字段设置为False即可:

# Obey robots.txt rules
ROBOTSTXT_OBEY = False

        在上一篇文章中,我们通过相关命令,引入了Scrapy框架,并且成功运行了第一个爬虫,获取了北京朝阳地区某个小区的名称。在这篇文章中,我们将继续获取小区其他信息,比如小区位置、建筑年代、楼栋数、户数等。

1. 构建小区信息数据结构

        在上一篇文章中项目结构简介章节中,我们介绍了items.py文件的用处,简单来说,该文件是用来定义爬虫最终返回数据的具体内容。我们在该文件中通过XiaoquItem类定义小区所有相关信息如下:


# '小区ID': xiao_id,
# '小区名称': xiao_name,
# '位置': position
# '挂牌平均价': average_price,
# '产权类型': right_type
# '供暖方式' heat
# '房屋总数': total_house,
# '楼栋总数': total_building
# '建成年代': complete_year,
# '开发商': developer,
# '用水类型': water,
# '用电类型': electricity,
# '绿化率': green_ratio,
# '容积率': plot_ratio,
# '价格变动记录': price_info
# '连接': url
class XiaoquItem(scrapy.Item):
    xiao_id = scrapy.Field()
    xiao_name = scrapy.Field()
    position = scrapy.Field()
    average_price = scrapy.Field()
    right_type = scrapy.Field()
    heat = scrapy.Field()
    total_house = scrapy.Field()
    complete_year = scrapy.Field()
    developer = scrapy.Field()
    total_building = scrapy.Field()
    water = scrapy.Field()
    electricity = scrapy.Field()
    green_ratio = scrapy.Field()
    plot_ratio = scrapy.Field()
    price_info = scrapy.Field()
    url = scrapy.Field()
    pass

在该文件中,通过class来定义小区信息结构体,该类继承了scrapy.Item类。按照官方文档解释,Field类相当于Python内置字典类的一个别名,并没有提供额外的方法和属性。在此阶段,我们可以默认为这是Scrapy中通用写法即可,如果想深入了解Field()实现,可以进入对应源码查看。

2. 解析页面中数据

        定义完小区数据结构后,就需要在链家页面中找到数据结构中对应字段的值。Scrapy中使用 Xpath作为HTML页面解析器,可以帮助爬虫定位和提取 HTML 或 XML 文档中的数据。在具体解析页面之前,可以安装一个浏览器Xpath插件,该类型插件具体作用是帮助我们快速定位元素,即告诉我们

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值