scrapy分页抓取网页(Scrapy框架介绍架构图安装Scrapy使用爬虫使用使用)

优采云 发布时间: 2021-12-07 04:26

  scrapy分页抓取网页(Scrapy框架介绍架构图安装Scrapy使用爬虫使用使用)

  scrapy框架简介

  Scrapy是用纯Python实现一个为了爬取网站数据、提取结构性数据而编写的应用框架,用途非常广泛。

Scrapy框架:用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,非常之方便。

Scrapy 使用了Twisted(其主要对手是Tornado)多线程异步网络框架来处理网络通讯,可以加快我们的下载速度,不用自己去实现异步框架,并且包含了各种中间件接口,可以灵活的完成各种需求。

  粗糙*敏*感*词*

  

  Scrapy主要包括了以下组件:

Scrapy Engine(引擎):

负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等。

Scheduler(调度器):

它负责接受`引擎`发送过来的Request请求,并按照一定的方式进行整理排列,入队,当`引擎`需要时,交还给`引擎`。

Downloader(下载器):

负责下载`Scrapy Engine(引擎)`发送的所有Requests请求,并将其获取到的Responses交还给`Scrapy Engine(引擎)`,由`引擎`交给`Spider`来处理,

Spider(爬虫):

它负责处理所有Responses,从中分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给`引擎`,再次进入`Scheduler(调度器)`,

Item Pipeline(管道):

它负责处理`Spider`中获取到的Item,并进行后期处理(详细分析、过滤、存储等)的地方.

Downloader Middlewares(下载中间件):

你可以当作是一个可以自定义扩展下载功能的组件。

Spider Middlewares(Spider中间件):

你可以理解为是一个可以自定扩展和操作`引擎`和`Spider`中间`通信`的功能组件(比如进入`Spider`的Responses和从`Spider`出去的Requests)

  安装刮板

  Scrapy的安装介绍

Scrapy框架官方网址:http://doc.scrapy.org/en/latest

Scrapy中文维护站点:http://scrapy-chs.readthedocs.io/zh_CN/latest/index.html

安装方式:

pip install scrapy

如果安装出现错误,可以按照下面的顺序先安装依赖包:

1、安装wheel

pip install wheel

2、安装lxml

pip install lxml

3、安装pyopenssl

pip install pyopenssl

4、安装Twisted

需要我们自己下载Twisted,然后安装。这里有Python的各种依赖包。选择适合自己Python以及系统的Twisted版本:https://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted

# 3.6版本(cp后是python版本)

pip install Twisted-18.9.0-cp36-cp36m-win_amd64.whl

5、安装pywin32

pip install pywin32

6、安装scrapy

pip install scrapy

安装后,只要在命令终端输入scrapy来检测是否安装成功

  可以按照以下步骤将爬虫程序与scrape一起使用:创建一个scrape项,定义提取的项,将爬行器写入爬网网站,提取项,写入项管道以存储提取的项(即数据)1.创建一个新的scrape项以对数据进行爬网,并使用以下命令:

  scrapy startproject meiju

  创建爬虫

  cd meiju

scrapy genspider meijuSpider meijutt.tv

其中:

meijuSpider为爬虫文件名

meijutt.com为爬取网址的域名

  在创建一个碎片项目后,将自动创建多个文件。下面简要介绍每个主文件的功能:

  scrapy.cfg:

项目的配置信息,主要为Scrapy命令行工具提供一个基础的配置信息。(真正爬虫相关的配置信息在settings.py文件中)

items.py:

设置数据存储模板,用于结构化数据,如:Django的Model

pipelines:

数据处理行为,如:一般结构化的数据持久化

settings.py:

配置文件,如:递归的层数、并发数,延迟下载等

spiders:

爬虫目录,如:创建文件,编写爬虫规则

注意:一般创建爬虫文件时,以网站域名命名

  2.定义项目

  项是用于存储爬网数据的容器;其使用方法类似于Python字典。虽然我们可以在scripy中直接使用dict,但item提供了额外的保护机制,以避免拼写错误导致的未定义字段错误

  与ORM中的模型定义字段类似,我们可以定义要在场景中爬网的字段。项目类别

  import scrapy

class MeijuItem(scrapy.Item):

name = scrapy.Field()

  3.写入爬虫程序

  # -*- coding: utf-8 -*-

import scrapy

from lxml import etree

from meiju.items import MeijuItem

class MeijuspiderSpider(scrapy.Spider):

# 爬虫名

name = 'meijuSpider'

# 被允许的域名

allowed_domains = ['meijutt.tv']

# 起始爬取的url

start_urls = ['http://www.meijutt.tv/new100.html']

# 数据处理

def parse(self, response):

# response响应对象

# xpath

mytree = etree.HTML(response.text)

movie_list = mytree.xpath('//ul[@class="top-list fn-clear"]/li')

for movie in movie_list:

name = movie.xpath('./h5/a/text()')

# 创建item(类字典对象)

item = MeijuItem()

item['name'] = name

yield item

  启用项目管道组件

  为了启用项目管道组件,必须将其类添加到settings.py文件item\管道配置修改settings.py并设置优先级。分配给每个类的整数值决定了它们的运行顺序。项目按从低到高的顺序排列。通过管道,这些数字通常定义在0-1000范围内(0-1000可以任意设置,值越低,组件的优先级越高)

  ITEM_PIPELINES = {

'meiju.pipelines.MeijuPipeline': 300,

}

  设置UA

  在代理的setting.py_uu值中设置用户

  4.编写一个管道来存储提取的项目(即数据)

  class SomethingPipeline(object):

def init(self):

# 可选实现,做参数初始化等

def process_item(self, item, spider):

# item (Item 对象) – 被爬取的item

# spider (Spider 对象) – 爬取该item的spider

# 这个方法必须实现,每个item pipeline组件都需要调用该方法,

# 这个方法必须返回一个 Item 对象,被丢弃的item将不会被之后的pipeline组件所处理。

return item

def open_spider(self, spider):

# spider (Spider 对象) – 被开启的spider

# 可选实现,当spider被开启时,这个方法被调用。

def close_spider(self, spider):

# spider (Spider 对象) – 被关闭的spider

# 可选实现,当spider被关闭时,这个方法被调用

  运行爬虫程序:

  scrapy crawl meijuSpider

# nolog模式

scrapy crawl meijuSpider --nolog

  在草稿中保存信息的最简单方法如下,-o以指定格式输出文件:

  scrapy crawl meijuSpider -o meiju.json

scrapy crawl meijuSpider -o meiju.csv

scrapy crawl meijuSpider -o meiju.xml

  练习:scripy将新浪新闻爬行到数据库中

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线