python爬虫之scrapy

scrapy框架

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

scrapy整体框架结构

scrapy整体框架结构图,如下所示:
在这里插入图片描述
由上图所知,scrapy主要由以下5大组件构成

  • Spiders(爬虫)
    用户可在此处定制自己的爬虫,从网页中提取需要的信息,即所谓的实体(item),返回给pipeline进行持久化操作;用户也可提取出链接,提交给调度器,继续爬取。
  • Schedule(调度器)
    一个URL(抓取网页的网址或者说是链接)的优先队列,由它来决定下一个要抓取的网址是 什么,同时去除重复的网址(不做无用功)。用户可以自己的需求定制调度器。
  • Item pipeline(实体管道)
    用于处理爬虫提取的实体。主要的功能是持久化实体、验证实体的有效性、清除不需要的信息。例如将其写入数据库中这些操作可以放在此处进行
  • Downloader(下载器)
    下载器,主要用于下载请求的页面,并将爬取到的页面返回给spiders进行处理
  • Scrapy Engine(Scrapy 引擎)
    Scrapy引擎是整个框架的核心.它用来控制调试器、下载器、爬虫。实际上,引擎相当于计算机的CPU,它控制着整个流程。

Scrapy 流程

1.引擎从调度器中取出一个url 用于接下来得爬取
2.将上述取出的url封装为一个Request请求传给下载器
3.下载器下载的网页信息,并将相应的信息返回给爬虫
4.爬虫对网页进行相应的处理,将需要的数据封装为实体,返回给pipeline;如果是链接则将链接提交给调度器,等待爬取
5.pipeline对数据进行持久化

scrapy.Spider

1.自定义类

class JobboleSpider(scrapy.Spider): 
		name = jobbole		#自定义名称
		allowed_domains = ['blog.jobbole.com']	#服务器域名
		start_urls = ['http://blog.jobbole.com/all-posts/']  #首次请求的url

继承Spider基类,在自定义类中需要注意几个函数:

  • def start_requests(self):
    该方法将读取start_urls内的地址,并为每一个地址生成一个Request对象,交给Scrapy下载器
  • def parse(self):
    默认的Request对象回调函数,处理返回的response。

大部分情况下都只重载这两个函数,然后通过这两个函数引申出一些其他操作,例如在parse 函数中:(记录404的url)

def __init__(self):
	self.fail_urls = []
def parse(self):
	if response.status == 404:
		self.fail_urls.append(response.url)

爬虫实例

        在安装python后,最好创建一个虚拟环境进行操作,这样你在这个环境内随意操作都不会对其他产生影响。具体如何创建虚拟环境可以自行百度进行查看。
        在安装包时,可以 -i https://pypi.douban.com/simple/ 链接一些国内的镜像源加快下载速度
        在初次爬取网站的时候,最好从简单的静态网站开始爬,然后慢慢爬些有难度的网站,例如知乎,淘宝。
        具体实例网上很多,也有很多视频讲解,可跟着视频敲一遍,就可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值