爬虫:scrapy基本使用:链家实例

scrapy基本使用

Scrapy是用纯Python实现一个为了爬取网站数据、提取结构性数据而编写的应用框架,用途非常广泛。 框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,非常之方便。

安装scrapy:

        1. 安装pywin32         - Microsoft Windows的Python扩展提供对大部分Win32 API的访问,创建和使用COM对象的能力以及Pythonwin环境。    - 不论电脑是32位还是64位都可以选择安装。         - pip install pywin32

        2. 安装wheel         - pip install wheel

        3. 下载Twisted          - Twisted是用Python实现的基于事件驱动的网络引擎框架。                   - pip install twisted

        4. 安装 scrapy框架         pip install scrapy

        5. 验证:在cmd输入scrapy没有报错则安装成功

scrapy工作流程

制作一个scrapy爬虫需要四步:

        1.创建一个Scrapy项目

        2.定义提取的结构化数据(Item)

        3.编写爬取网站的 Spider 并提取出结构化数据(Item)

        4.编写 Item Pipelines 来存储提取到的Item(即结构化数据)

1.新建项目

说明:在开始爬取之前,必须创建一个新的Scrapy项目。进入自定义的项目目录中,运行下列命令:

-使用命令:scrapy startproject mySpider

其中需要再终端中执行。其中,scrapyDemo01为项目名称,可以看到将会创建scrapyDemo01 文件夹,目录结构大致如下图:

2.明确爬取目标

         打开mySpider目录下的items.py,以爬取链家的信息为例,

上面的你创建第一个class项目自动生成的,它实例了怎么去定义一个存储的字段

下面的是我们刚才创建的链家项目,这里我们定义好了标题,位置信息,房子的信息,总价及一平米的价格的字段。

3.制作爬虫

        爬虫功能分两步: 爬数据和取数据 

爬数据

创建好scrapyDemo01项目之后,在终端输入 

cd scrapyDemo01

scrapy genspider lianjia lianjia.com

spider路径下的lianjia.py文件

为什么使用yield,而不使用return??

因为yield返回之后还可以执行接下来的内容 而return不行

要建立一个Spider, 你必须用scrapy.Spider类创建一个子类,并确定了三个强制的属性 和 一个方法。

- `name = ""` :这个爬虫的识别名称,必须是唯一的,在不同的爬虫必须定义不同的名字。

- `allow_domains = []` 是搜索的域名范围,也就是爬虫的约束区域,规定爬虫只爬取这个域名下的网页,一般把它要注释掉

- `start_urls = ()` :爬取的URL元祖/列表。爬虫从这里开始抓取数据,所以,第一次下载的数据将会从这些urls开始。其他子URL将会从这些起始URL中继承性生成。

- `parse(self, response)` :解析的方法,每个初始URL完成下载后将被调用,调用的时候传入从每一个URL传回的Response对象来作为唯一参数,主要作用如下:   1. 负责解析返回的网页数据(response.body),提取结构化数据(生成item)   2. 生成需要下一页的URL请求。

执行爬虫,使用命令: scrapy crawl lianjia

log日志:

        如果再出现的结果中出现了很多其他的信息,不需要恐慌,这是它的日志信息。 scrapy日志信息分四级: ERROR :一般错误。 WARNING : 警告。 INFO : 一般信息 。DEBUG : 调试信息 。默认的显示级别是DEBUG

        在settings.py配置文件中,加入LOG_LEVEL = ‘指定日志信息种类’即可。LOG_FILE = 'log.txt'则表示将日志信息写入到指定文件中进行存储。一般使用LOG_LEVEL = WARING。

4.保存爬虫信息:

        pipelines文件中自定义了一个process_item方法,用来给我们处理保存的信息。,第一个Scrapydemo01Pipeline是自动生成的一个方法,它实例了一个怎么保存信息的方法。

        在创建lianjia的保存方法时,要创建一个生命周期

# 生的时候做什么事情, 再开始爬虫的时候会被调用一次

def open_spider(self,spider):

# 死的时候做什么事情, 结束爬虫的时候被调用一次

def close_spider(self,spider): 

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值