那些小白不可跨越Python爬虫框架(文末附赠python学习资料分享)

那些小白不可跨越Python爬虫框架(文末附赠python学习资料分享)

那些小白不可跨越Python爬虫框架(文末附赠python学习资料分享)

目标

Scrapy简介

Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。

使用过程

  • 创建一个Scrapy项目
  • 定义提取的Item
  • 编写爬取网站的 spider 并提取 Item
  • 编写 Item Pipeline 来存储提取到的Item(即数据)

接下来的图表展现了Scrapy的架构,包括组件及在系统中发生的数据流的概览(绿色箭头所示)。 下面对每个组件都做了简单介绍,并给出了详细内容的链接。数据流如下所描述

那些小白不可跨越Python爬虫框架(文末附赠python学习资料分享)

Paste_Image.png

组件

  • Scrapy Engine
  • 引擎负责控制数据流在系统中所有组件中流动,并在相应动作发生时触发事件。 详细内容查看下面的数据流(Data Flow)部分。
  • 调度器(Scheduler)
  • 调度器从引擎接受request并将他们入队,以便之后引擎请求他们时提供给引擎。
  • 下载器(Downloader)
  • 下载器负责获取页面数据并提供给引擎,而后提供给spider。
  • Spiders
  • Spider是Scrapy用户编写用于分析response并提取item(即获取到的item)或额外跟进的URL的类。 每个spider负责处理一个特定(或一些)网站。 更多内容请看 Spiders 。
  • Item Pipeline
  • Item Pipeline负责处理被spider提取出来的item。典型的处理有清理、 验证及持久化(例如存取到数据库中)。 更多内容查看 Item Pipeline 。
  • 下载器中间件(Downloader middlewares)
  • 下载器中间件是在引擎及下载器之间的特定钩子(specific hook),处理Downloader传递给引擎的response。 其提供了一个简便的机制,通过插入自定义代码来扩展Scrapy功能。更多内容请看 下载器中间件(Downloader Middleware) 。
  • Spider中间件(Spider middlewares)
  • Spider中间件是在引擎及Spider之间的特定钩子(specific hook),处理spider的输入(response)和输出(items及requests)。 其提供了一个简便的机制,通过插入自定义代码来扩展Scrapy功能。更多内容请看 Spider中间件(Middleware) 。

三:实例分析

那些小白不可跨越Python爬虫框架(文末附赠python学习资料分享)

那些小白不可跨越Python爬虫框架(文末附赠python学习资料分享)

Paste_Image.png

值得注意的是这里的表情有两种:一个jpg,一个gif动图。如果获取图片地址时只抓取a标签下面第一个img的src就会出错,所以我们要抓取img中的含有data-original的值。这里a标签下面还一个p标签是图片简介,我们也抓取下来作为图片文件的名称。

那些小白不可跨越Python爬虫框架(文末附赠python学习资料分享)

Paste_Image.png


四:实战代码

那些小白不可跨越Python爬虫框架(文末附赠python学习资料分享)

2.打开Doutu文件夹中的items.py,改为以下代码,定义我们爬取的项目。

import scrapyclass DoutuItem(scrapy.Item):

3.打开spiders文件夹中的doutula.py,改为以下代码,这个是爬虫主程序。

# -*- coding: utf-8 -*-import os

3.这里面有很多值得注意的部分:

那些小白不可跨越Python爬虫框架(文末附赠python学习资料分享)

4.配置settings.py,如果想抓取快一点CONCURRENT_REQUESTS设置大一些,DOWNLOAD_DELAY设置小一些,或者为0.

# -*- coding: utf-8 -*-BOT_NAME = 'ScrapyDoutu'SPIDER_MODULES = ['ScrapyDoutu.spiders']NEWSPIDER_MODULE = 'ScrapyDoutu.spiders'DOWNLOADER_MIDDLEWARES = {

5.配置middleware.py配合settings中的UA设置可以在下载中随机选择UA有一定的反ban效果,在原有代码基础上加入下面代码。这里的user_agent_list可以加入更多。

import randomfrom scrapy.downloadermiddlewares.useragent import UserAgentMiddlewareclass RotateUserAgentMiddleware(UserAgentMiddleware):

6.到现在为止,代码都已经完成了。那么开始执行吧!

scrapy crawl doutu

之后可以看到一边下载,一边修改User Agent。

那些小白不可跨越Python爬虫框架(文末附赠python学习资料分享)

Paste_Image.png


五:总结

学习使用Scrapy遇到很多坑,但是强大的搜索系统不会让我感觉孤单。所以感觉Scrapy还是很强大的也很意思,后面继续学习Scrapy的其他方面内容。

最后,想学习Python的小伙伴们!

请关注+私信回复:“学习”就可以拿到一份我为大家准备的Python学习资料!

那些小白不可跨越Python爬虫框架(文末附赠python学习资料分享)

pytyhon学习资料

那些小白不可跨越Python爬虫框架(文末附赠python学习资料分享)

python学习资料

相关推荐