基于Scrapy的链家二手房爬虫

本项目通过Python的Scrapy框架爬取链家网站的二手房信息,数据存储在MongoDB中,使用Studio 3T进行查看。该项目加深了对Python编程和Scrapy爬虫框架的理解,提升了编程技能。
摘要由CSDN通过智能技术生成

摘要

本项目是python课程的期末练手项目,在简要学习完python和爬虫相关的Scrapy框架后,基于这两者的运用最终完成了对于链家网站二手房页面的信息进行爬取,并将爬取的数据存放于MongoDB之中,使用Studio 3T进行查看。

1引言

1.1背景

在本学期的python课程中,通过网课粗略的掌握了python的基础知识之后,老师提出通过运用python的模块进行附加的学习,于是我选择了Scrapy框架的学习,由此为基础对于链家网站的信息进行了爬取数据的操作,并将爬取的数据保存。

1.2意义

这个项目提高了我的python编程水平,使得我对于爬虫技术的了解更加深入,粗略掌握了如何使用Scrapy框架进行爬虫操作,懂得了python的附加模块的强大之处,也激发了继续学习编程的兴趣。

1.3相关研究

Scrapy 是用 Python 实现的一个为了爬取网站数据、提取结构性数据而编写的应用框架。Scrapy 常应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。通常我们可以很简单的通过 Scrapy 框架实现一个爬虫,抓取指定网站的内容或图片。之前在基础学习的时候使用的是Python的request模块也能对网站页面的数据进行爬取,但是request属于页面级爬虫,重点在于页面下载,并发考虑不足,性能较差。

2.系统结构

该项目是基于Scrapy框架来进行的,因此整体的框架如图1所示。由于Scrapy本身封装了大量的内容操作使得代码编写者可以简化自己的代码量。由于大量的封装,在本次项目中只需要修改SPIDERS模块和ITEM PIPELINES模块。
SPIDERS模块是该项目的python模块。在此放入代码。它解析Downloader返回的响应(Response)产生爬取项(scraped item)。产生额外的爬取请求(Request)
ITEM PIPELINES模块,以流水线的方式处理Spider产生的爬取项。由一组操作顺序组成,类似流水线,每个操作都是一个item Pipeline类型。它的操作包括:清理、检验、和查重爬取的HTML数据、将数据存储到数据库。
图1 Scrapy爬虫框架结构
图2 示例爬虫详细结构

3实现代码

3.1建立工程和Spider模板

scrapy startproject lianjia
建立名为lianjia的工程
scrapy genspider lianjiacrawl lianjia.com
创建一个名为lianjiacrawl的爬虫,搜索的域名范围是lianjia.com

3.2编写Spider

这一部分主要是配置lianjiacrawl.py文件,修改对返回页面的处理,修改对新增URL爬取请求的处理。首先通过对https://sz.lianjia.com/ershoufang/pg{}网页进行信息提取,获取每个二手房的详情链接网址,再通过yield关键字不断提取详情链接网址中的信息。这里信息的提取这里使用的是xpath。

通过游览器查看网页源代码可以详细去查看view-source:https://sz.lianjia.com/ershoufang/pg1/的代码,然后可以发现div class=“info clear”><div class="title"标签后面紧跟的标签中的属性值就是每个二手房的详情链接网址
图3 二手房的详情链接网址
在通过游览器查看网页源代码可以详细去查看每个二手房的详情的源代码可知,二手房的详细信息在如下图所示的标签之中,使用xpath进行一一提取即可。
图4 二手房网页源码所显示的部分信息(1)
图5 二手房网页源码所显示的部分信息(2)

# -*- coding: utf-8 -*-
import scrapy


class LianjiacrawlSpider(scrapy.Spider):
    name = 'lianjiacrawl'#这个爬虫的识别名称,必须是唯一的
    allowed_domains = ['lianjia.com']#是搜索的域名范围,也就是爬虫的约束区域,规定爬虫只爬取这个域名下的网页,不存在的URL会被忽略
    start_urls = ['https://sz.lianjia.com/ershoufang/pg{}/'.format(i) for i in range(1,100)]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值