• 最近一段好忙, 忙的都没时间去管理网站,网站被举报 被攻击 我也是醉了 :sad:

  • 好久没发说说了,感觉与世隔绝了 :lol:

  • 今天更换Git主题,以后本站由Git主题强力驱动 :mrgreen: :mrgreen:
  • 六一儿童节快乐

  • 今天全站启用又拍云 CDN进行加速

  • 这两天有些忙所以没来得及更新,愿一切安好
  • 锲而不舍是取得成功关键的一环
  • 当你无助时,你可以哭,但哭过你必须要振作起来,绝地逢生并不罕见,何况不是绝境! 早安!

  • 今天五一,没有出去玩,主要是人太多了

  • 今天外面风好大,天气也有点冷,出门一定要多穿衣服!

Scrapy 框架

爬虫精进 慕白 5个月前 (05-17) 498次浏览 已收录 0个评论

Scrapy 框架

01 – 结构

Scrapy Engine(引擎)
概念:收集其下四个模块的反馈数据,并对其下达操作指令,是
框架中的核心点。

Scheduler(调度器)
概念:主要负责处理引擎发送过来的 requests 对象(即网页请
求的相关信息集合,包括params,data,cookies,request
headers… 等),会把请求的 url 以有序的方式排列成队,并等
待引擎来提取(功能上类似于 gevent 库的 queue 模块)。

Downloader(下载器)
概念:负责处理引擎发送过来的 requests,进行网页爬取,并将
返回的 response(爬取到的内容)交给引擎。它对应的是爬虫
程【获取数据】这一步。

Spiders(爬虫
概念:主要任务是创建 requests 对象和接受引擎发送过来的
response(Downloader 部门爬取到的内容),从中解析并提取
出有用的数据。它对应的是爬虫流程【解析数据】和【提取数据】
这两步。

Item Pipeline(数据管道)
概念:只负责存储和处理 Spiders 部门提取到的有用数据。这个对应的是爬虫
程【存储数据】这一步。

Downloader Middlewares(下载中间件)
概念:会提前对引擎发送的诸多 requests 做出处理。

Spider Middlewares(爬虫中间件)
概念:提前接收并处理引擎发送来的 response,过滤掉一些重复无用的东西。

02 – 用法

1 创建项目

创建方法:
在本地电脑打开终端(windows:Win+R,输入cmd;mac:command+空格,搜
索“终端”),然后跳转到你想要保存项目的目录下。比如:我们要在电脑的【下载】
文件夹下保存,需要我们在 cmd 里输入 cd C:\Users\user\Downloads ;
再输入一行能帮我们创建 Scrapy 项目的命令:scrapy startproject douban,
douban 就是 Scrapy 项目的名字。按下 enter 键,一个 Scrapy 项目就创建成功了。

2 编辑项目

创建爬虫文件:
spiders 是放置爬虫的目录。我们可以在 spiders 这个文件夹里创建爬虫文件 top250,
后面的大部分代码都需要在这个 top250.py 文件里编写。

编辑代码:
导入模块:import scrapy,bs4
核心代码:以豆瓣为例

class DoubanSpider(scrapy.Spider):
#定义一个爬虫类 DoubanSpider
(DoubanSpider 类继承自 scrapy.Spider 类)
name = ‘douban’
#name = ‘douban’ 意思是定义爬虫的名字为 douban
(我们启动爬虫的时候,要用到这个名字)
allowed_domains = [‘book.douban.com’]
#定义允许爬虫爬取的网址域名(不需要加 https:// )。
如果网址的域名不在这个列表里,就会被过滤掉
start_urls = [‘https://book.douban.com/top250?start=0’%5D
#start_urls 是定义起始网址,就是爬虫从哪个网址开始抓取

def parse(self, response):
print(response.text)
#parse 是 Scrapy 里默认处理 response 的一个方法,中文是解析

定义数据:item.py文件

import scrapy #导入scrapy
class DoubanItem(scrapy.Item):
#定义一个类DoubanItem,它继承自scrapy.Item
title = scrapy.Field() #定义书名的数据属性
publish = scrapy.Field() #定义出版信息的数据属性
score = scrapy.Field() #定义评分的数据属性

设置:setting.py

将 USER _AGENT 注释取消(删除 # ),替换掉 user-agent 的内容,修改请求头内容
在本地电脑的终端跳转到 scrapy 项目的文件夹(跳转方法:cd + 文件夹的路径名),
然后输入命令行:scrapy crawl douban(douban 就是我们爬虫的名字)
将 ROBOTSTXT_OBEY = True 改成 ROBOTSTXT_OBEY = False,就是把遵守
robots 协议换成无需遵从 robots 协议,这样 Scrapy 就能不受限制地运行


清宁时光 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Scrapy 框架
喜欢 (0)
[6447834@qq.com]
分享 (0)
慕白
关于作者:
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址