1. 秦子帅的博客首页
  2. Python

初识Scrapy框架+爬虫实战(7)-爬取链家网100页租房信息

点击上方“扎心了Python”,选择“置顶公众号”
关键时刻,第一时间送达!

初识Scrapy框架+爬虫实战(7)-爬取链家网100页租房信息

Scrapy简介

Scrapy,Python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改。它也提供了多种类型爬虫的基类,如BaseSpider、sitemap爬虫等,最新版本又提供了web2.0爬虫的支持。

Scrapy项目结构

scrapy.cfg: 项目的配置文件
lianjia/: 该项目的python模块。之后您将在此加入代码。
lianjia/items.py: 项目中的item文件.
lianjia/pipelines.py: 项目中的pipelines文件.
lianjia/settings.py: 项目的设置文件.
lianjia/spiders/: 放置spider代码的目录.

下面主要说一下几个比较重要的:

item.py

Item 是保存爬取到的数据的容器。比如我下面将要爬取的链家网租房信息的地点、平米数、价格,我会在item.py文件中定义相应的字段。

spider.py
此文件是我们在spiders文件下自己创建的,用来写爬虫的代码的,非常重要。
我们需要创建一个Spider,必须继承
scrapy.Spider,并有下面三个属性:

name: 用于区别Spider。 该名字必须是唯一的,您不可以为不同的Spider设定相同的名字。
start_urls: 包含了Spider在启动时进行爬取的url列表。 因此,第一个被获取到的页面将是其中之一。 后续的URL则从初始的URL获取到的数据中提取。
parse() 是spider的一个方法。 被调用时,每个初始URL完成下载后生成的 Response 对象将会作为唯一的参数传递给该函数。 该方法负责解析返回的数据(response data),提取数据(生成item)以及生成需要进一步处理的URL的 Request 对象。

pipelines.py

主要作用是为爬取下的数据的做处理。比如txt或者存入数据库的操作。

settings.py

主要是对爬虫项目的设置

Scrapy框架爬虫实战

今天主要爬取一下链家网租房主页的前一百页数据,也是为了带大家去入门熟悉一下Scrapy框架。

创建项目

命令行切换到你想创建Scrapy项目的路径,我是在D盘pycharm文件夹创建的
输入:

初识Scrapy框架+爬虫实战(7)-爬取链家网100页租房信息

然后我们用PyCharm导入:File–>Open

初识Scrapy框架+爬虫实战(7)-爬取链家网100页租房信息
爬取链家网详解

1.编写item.py,定义爬取的字段。我们爬取链家网条目的租房地点、平米数以及价位,所以定义三个字段,代码如下:

2.在spiders文件夹下创建spider.py,用来爬取代码。代码如下:

通过代码我们会发现,Item字段是通过Selector选择器提取的。
它有四个基本的方法:

xpath(): 传入xpath表达式,返回该表达式所对应的所有节点的selector list列表 。
css(): 传入CSS表达式,返回该表达式所对应的所有节点的selector list列表.
**extract(): **序列化该节点为unicode字符串并返回list。
re(): 根据传入的正则表达式对数据进行提取,返回unicode字符串list列表。

另外也可以在Shell中调试xpath等,具体的操作在下面,慢慢看。

3.txt形式存储
pipelines.py就是对爬取下的数据做处理的,所以我们可以在此文件中写txt或者数据库存储等等,今天就以txt存储为例:

另外还需要在settings.py中配置一下,名称一定要换成你的项目名称:

4.运行
运行scrapy项目两种方式:
(1).在Terminal输入命令运行,也就是在项目路径的命令行输入:

(2).在Pycharm中运行。我们要在scrapy.cfg同层目录下建一个begin.py文件,输入代码:

然后再点击Run–>Edit Configurations…

初识Scrapy框架+爬虫实战(7)-爬取链家网100页租房信息

 

初识Scrapy框架+爬虫实战(7)-爬取链家网100页租房信息

然后我们就可以运行了。
强调:第一次运行的时候,我遇到no module named win32API错误,这是因为Python没有自带访问windows系统API的库的,需要下载第三方库。

初识Scrapy框架+爬虫实战(7)-爬取链家网100页租房信息

 

直接在pip安装即可:

安装完成后运行成功,查看TXT:

初识Scrapy框架+爬虫实战(7)-爬取链家网100页租房信息

Scrapy Shell调试xpath

快捷命令:

shelp() – 打印可用对象及快捷命令的帮助列表
fetch(request_or_url) – 根据给定的请求(request)或URL获取一个新的response,并更新相关的对象
view(response) – 在本机的浏览器打开给定的response。 其会在response的body中添加一个  tag ,使得外部链接(例如图片及css)能正确显示。 注意,该操作会在本地创建一个临时文件,且该文件不会被自动删除。

在命令行输入:

然后会显示你能内容如下,说明成功进入shell:

初识Scrapy框架+爬虫实战(7)-爬取链家网100页租房信息

 

下面主要说一下response.xpath调试,为了判断我们的xpath是否正确。
例如我们想调试一下链家网租房的地点信息,输入:

结果显示:

初识Scrapy框架+爬虫实战(7)-爬取链家网100页租房信息

 

说明我们的xpath没有问题。
然后可以输入:

效果如下:

初识Scrapy框架+爬虫实战(7)-爬取链家网100页租房信息

源码文件获取

加我的微信,我发给你,一起交流,交个朋友!:

初识Scrapy框架+爬虫实战(7)-爬取链家网100页租房信息

初识Scrapy框架+爬虫实战(7)-爬取链家网100页租房信息

大家觉得可以的话可以加入我的知识星球,带你了解不一样的Android、Python等技术,可以点击阅读全文来了解我的星球。

初识Scrapy框架+爬虫实战(7)-爬取链家网100页租房信息

原文始发于微信公众号( 扎心了Python ):初识Scrapy框架+爬虫实战(7)-爬取链家网100页租房信息

发布者:秦子帅,转转请注明出处:http://qinzishuai.cn/index.php/2018/06/12/b428a5a9c7/

联系我们

912241847

在线咨询:点击这里给我发消息

邮件:qzs531156@163.com

QR code