Scrapy框架原理学习

本文深入探讨Scrapy框架的异步核心原理,解释同步与异步的概念,指出同步爬虫的问题及异步如何解决。介绍了Scrapy的运行机制,并详细讲解项目创建、配置,包括Spider属性和方法、中间件应用、pipelines管道配置。同时,文章还讨论了请求链优化和异步IO在数据持久化中的应用。
摘要由CSDN通过智能技术生成

Scrapy框架原理

Scrapy异步框架核心原理

  1. 同步与异步
  2. Scrapy运行原理

同步与异步

同步:是下一个方法依赖于上一个方法的结果
异步:下一个方法不依赖于上一个方法的结果

同步爬虫程序的问题:
href_s = [url1,url2,url3]
for href in href_s:
response = urlopen(href).read()
//处理response

只有前一个url被访问时才能继续访问,前端向服务器发出访问和得到响应的时间过长

异步解决问题:
每个url会各自与服务器发现访问和响应,可以同时进行。

Scrapy运行原理

在这里插入图片描述

Scrapy项目创建与配置

  1. Scrapy的安装
  2. 项目创建
  3. 基本配置
  4. 入门案例
项目创建
  1. 创建项目 >> scrapy startproject 【项目名字】
  2. 进入项目 >> cd 【项目名字】
  3. 创建爬虫文件 >> scrapy genspider 【爬虫名字】 “【HOST地址】“
  4. 运行爬虫文件 >> scrapy crawl 【爬虫名字】
基本配置
Settings中的常用配置: USER_AGENT = "" # User-Agent 
ROBOTSTXT_OBEY = True|Flase # 是否遵守机器人协议 
DEFAULT_REQUEST_HEADERS = {
   } # 默认Headers 
CONCURRENT_REQUESTS = 16 # 下载器最大处理的请求数 
DOWNLOAD_DELAY = 3 # 下载延时 
SPIDER_MIDDLEWARES # Spider中间件 
DOWNLOADER_MIDDLEWARES # Downloader中间件 
ITEM_PIPELINES # 管道文件
Spider中的属性和方法:
# 爬虫名字 
name = 's1' 
# 如果URL地址的HOST不属于allowed_domains,则过滤掉该请求 
allowed_domains = ['edu.csdn.net'] 
# 项目启动时,访问的URL地址 
start_urls = ['http://edu.csdn.net/'] 
# 访问start_urls,得到响应后调用的方法 
def parse(self, response): # response为响应对象 
	pass
# 爬虫开始,执行的方法,相当于start_urls 
def start_requests(self): 
	yield scrapy.Request(  # 向调度器发送一个Request对象 
	url='http://edu.csdn.net', # 请求地址,默认Get方式 
	callback=self.parse2 # 得到响应后,调用的函数 
	) 
def parse2(self,response): # 得到响应后,调用的函数 
	print(response.body) # 得到字节类型的数据
中间件的应用

配置DownlaoderMiddleware,可设置代理IP

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

# Define here the models for your spider middleware
#
# See documentation in:
# https://docs.scrapy.org/en/latest/topics/spider-middleware.html

from scrapy import signals
from scrapy.http.headers import Headers
from myscrapy1 import user_agent
import urllib.request as ur
class Myscrapy1SpiderMiddleware(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值