Scrapy框架解析,使用

Scrapy

Install

command: `pip install [name]`

lib:
lxml 解析库
pyOpenSSL SSL协议库
Twisted 异步Web框架
main:
Scrapy 框架

Use

command:
创建项目
scrapy startproject [name]
编辑项目后, 启动爬虫脚本
scrapy crawl [scriptname]

结构分析:

在scrapy框架中.
执行新项目指令之后.例如: scrapy crawl newgrasp
会生成如下目录

└── newgrasp
    ├── newgrasp
    │   ├── __init__.py
    │   ├── items.py
    │   ├── middlewares.py
    │   ├── pipelines.py
    │   ├── __pycache__
    │   ├── settings.py
    │   └── spiders
    │       ├── __init__.py
    │       └── __pycache__
    └── scrapy.cfg

生成了一个项目名的根目录 newgrasp

一级目录下:

newgrasp

用来放置项目中各种重要组成部分, 以及爬虫文件.

scrapy.cfg

项目的设置文件, 主要确定项目名项目设置文件
内容也很简单.

[settings]
default = newgrasp.settings

[deploy]
project = newgrasp

二级目录下(重点)

二级目录的newgrasp中. 包含了scrapy最重要的处理流程.
items.py

用来放置抓取的内容, 一般是资源对应的url例如:xxx.xxx.xxx.jpg; 获得url之后,放入对应的ItemModel.后面框架会自动交给pipeline处理.
middlewares.py
在获取response响应的时候, 请求和返回的时候都要经过中间件.
pipelines.py
pipeline是用来处理item的, 能够将item保存的url直接交给scrapy的DOWNLOADER组件,自动去下载对应资源.需要注意的是,其实response也是由该组件进行请求下载.同资源一样也有相对应的队列和pipeline, 唯一不同的是, 没有经过item.
settings.py
对scrapy进行一些设置调配.例如下载并行数, 下载目录设置等.
spiders
完成爬虫的逻辑,在scrapy中, 我们在其他模块中完成了请求, 和保存的动作. 在spider中, 唯一需要做的逻辑就是在Spider中设置开始抓取的页面,然后parse方法, 找到相对应的页面元素,放入对应的item中的field中. 在获取元素方面, 直接使用xpath找到元素, 放入item中即可. 如果当需要爬取的网页为多级页面, 则需要针对不同的页面创建对应parse_x方法. 在使用parse分析一级页面, 然后使用Scrapy.Request(需另导入),callback参数中调用子分析方法, 分析子页面. 仍有其他子页面或者分类的话, 就进行判断然后callback对应的parse函数.
需要导入

from scrapy import Request # 用来形成yield生成器, 接入pipeline, 并且调用对应的parse,形成多级抓取
from grasp.items import ImageItem # 导入对应的Item, 才能把需要获取的资源元素url放入在pipeline设置好的对应字段中. 

调试

在使用scrapy的时候, 有的时候感觉命令行调用并不是很方便. 这个时候可以导入scrapy中内置的包, 直接再控制台运行该爬虫脚本

from scrapy.crawler import CrawlerProcess
from scrapy.utils.project import get_project_settings
......
......
if __name__ == '__main__':
    process = CrawlerProcess(get_project_settings())
    process.crawl(对应的Scriper类)
    process.start()

猜你喜欢

转载自www.cnblogs.com/jrri/p/12945340.html