首页 > 其他分享 >scrapy简介

scrapy简介

时间:2022-08-17 15:22:09浏览次数:45  
标签:en 简介 html scrapy 引擎 https 下载

'''
scrapy简介

​ Scrapy是由Python语言开发的一个快速、高层次的屏幕抓取和web抓取框架,
用于抓取 web站点并从页面中提取结构化的数据,只需要实现少量的代码,
就能够快速的抓取。Scrapy使用了Twisted异步网络框架,可以加快我们的下载速度

twisted下载:https://www.lfd.uci.edu/~gohlke/pythonlibs/

​ pip install twisted
下载完以后,就可以下载scrapy
pip install scrapy
切换盘 f: 回车(进到F盘)
cd+文件名(进入文件)
创建项目 scrapy startproject (自己取文件名)

# 常亮 (小写为变量名,大写为常亮) 不能修改爬取

LKSJJFLK_jksdj = 'zhangsan'

# Obey robots.txt rules
# 爬虫不需要遵守,必须该为False 才能爬起
ROBOTSTXT_OBEY = False
# 在终端打印运行的结果
scrapy crawl fz
# 在settings里面输入LOG_LEVEL = 'ERROR' 就只会打印报错信息,
# 不写就把每天操作的日志打印出来
# 只打印报错的信息
LOG_LEVEL = 'ERROR'

ITEM_PIPELINES = {
# 数值越小,优先级越高
'myspider.pipelines.MyspiderPipeline': 300,
}
'''
'''
scrapy框架流程
1 引擎:Hi!Spider, 你要处理哪一个网站?

2 Spider:老大要我处理xxxx.com。

3 引擎:你把第一个需要处理的URL给我吧。

4 Spider:给你,第一个URL是xxxxxxx.com。

5 引擎:Hi!调度器,我这有request请求你帮我排序入队一下。

6 调度器:好的,正在处理你等一下。

7 引擎:Hi!调度器,把你处理好的request请求给我。

8 调度器:给你,这是我处理好的request

9 引擎:Hi!下载器,你按照老大的下载中间件的设置帮我下载一下这个request请求

10 下载器:好的!给你,这是下载好的东西。(如果失败:sorry,这个request下载失败了。然后引擎告诉调度器,这个request下载失败了,你记录一下,我们待会儿再下载)

11 引擎:Hi!Spider,这是下载好的东西,并且已经按照老大的下载中间件处理过了,你自己处理一下(注意!这儿responses默认是交给def parse()这个函数处理的)

12 Spider:(处理完毕数据之后对于需要跟进的URL),Hi!引擎,我这里有两个结果,这个是我需要跟进的URL,还有这个是我获取到的Item数据。

13 引擎:Hi !管道 我这儿有个item你帮我处理一下!调度器!这是需要跟进URL你帮我处理下。然后从第四步开始循环,直到获取完老大需要全部信息。

14 管道调度器:好的,现在就做!

Scrapy engine(引擎) 总指挥:负责数据和信号的在不同 scrapy已经实现
模块间的传递

Scheduler (调度器) 一个队列,存放引擎发过来的 scrapy已经实现
request请求,并返回给引擎

Downloader(下载器) 下载把引擎发过来的requests请求 scrapy已经实现
并返回给引擎

Spider(爬虫) 处理引擎发出来的response,提取 需要手写
数据,提取url,并交给引擎

Item Pipline(管道) 处理引擎传过来的数据,比如储存 需要手写

Downloader
Middlewares(下载中间件) 可以自定义的下载扩展,比如设置代理 一般不用手写

Spider Middlewares(中间件) 可以自定义requests请求和进行 一般不手写
response过滤
'''
'''
scrapy shell:
pip install ipython

​ Scrapy终端是一个交互终端,供您在未启动spider的情况下尝试及调试您的爬取代码。
其本意是用来测试提取数据的代码,不过您可以将其作为正常的Python终端,在上面测试任何的Python代码。



使用方法
scrapy shell www.baidu.co
- response.url:当前响应的URL地址

- respons.request.url:当前响应的请求URL地址

- response.headers:响应头信息

- response.body:响应体,也就是HTML代码

- response.request.headers:当前响应的请求头

- response.xpath():测试xpath


## 豆瓣电影实战
'''
'''
1,创建项目
scrapy startproject 项目名称

2,进入项目
cd 项目名称
3,创建爬虫 (scrapy genspider fz chii.in)

scrapy genspider 爬虫名字 域名(www.xxx.com)

# 1、创建一个项目
scrapy startproject myspider
# 2、生成一个爬虫,demo为爬虫名
scrapy genspider demo "demo.cn"   
# 3、提取数据完善spider  使用xpath,css等
# 4、保存数据pipeline中保存数据
# 5、执行爬虫, name就是爬虫的名字
scrapy crawl name   
'''
'''
1, 基于终端命令的持久化存储
指令:scrapy crawl 爬虫 -o filename(文件名)
只能将parse方法的返回值存储到本地,支持的文件类型有限
2, 基于管道的持久化存储

2,
'''
'''
创建的spider:
import scrapy
class DbSpider(scrapy.Spider):    
name = 'db'    
allowed_domains = ['douban.com'] # 允许爬取的域名    
start_urls = ['http://douban.com/'] # 抓取的目标URL    
def parse(self, response):        
# pass
'''
'''
# Scrapy settings for maoyan project#
# For simplicity, this file contains only settings considered important or# commonly used. You can find more settings consulting the documentation:
#
#     https://doc.scrapy.org/en/latest/topics/settings.html
#     https://doc.scrapy.org/en/latest/topics/downloader-middleware.html
#     https://doc.scrapy.org/en/latest/topics/spider-middleware.html
#
#Scrapy项目的名字,这将用来构造默认 User-AgentBOT_NAME = 'BLZX'SPIDER_MODULES = ['BLZX.spiders']         # Scrapy搜索spider的模块列表 默认: [xxx.spiders]NEWSPIDER_MODULE = 'BLZX.spiders'        
# 使用 genspider 命令创建新spider的模块。默认: 'xxx.spiders'
# 通过在用户代理上标识您自己(和您的网站)来负责地爬行
# Crawl responsibly by identifying yourself (and your website) on the user-agent#USER_AGENT = 'maoyan (+http://www.yourdomain.com)'
# Obey robots.txt rules    遵守robots.txt规则
ROBOTSTXT_OBEY = False
# 配置Scrapy执行的最大并发请求(默认值:16)
# Configure maximum concurrent requests performed by Scrapy (default: 16)#CONCURRENT_REQUESTS = 32
# 同一网站的请求配置延迟(默认值:0)# Configure a delay for requests for the same website (default: 0)
# See https://doc.scrapy.org/en/latest/topics/settings.html#download-delay# See also autothrottle settings and docs
# 下载延迟#DOWNLOAD_DELAY = 3
# 下载延迟设置将仅满足以下条件之一(二选一)
# The download delay setting will honor only one of:#CONCURRENT_REQUESTS_PER_DOMAIN = 16            
# 每个域的并发请求的最大值#CONCURRENT_REQUESTS_PER_IP = 16                
# 对单个IP进行并发请求的最大值
# 禁用cookie(默认情况下启用)
# Disable cookies (enabled by default)#COOKIES_ENABLED = False
# 禁用telnet控制台(默认启用)
# Disable Telnet Console (enabled by default)
#TELNETCONSOLE_ENABLED = False# 覆盖默认请求头
# Override the default request headers:
#DEFAULT_REQUEST_HEADERS = {
#   'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
#   'Accept-Language': 'en',
#}
# 启用或禁用蜘蛛中间件
# Enable or disable spider middlewares
# See https://doc.scrapy.org/en/latest/topics/spider-middleware.html
#SPIDER_MIDDLEWARES = {
#    'maoyan.middlewares.MaoyanSpiderMiddleware': 543,
#}
# 启用或禁用下载器中间件
# Enable or disable downloader middlewares
# See https://doc.scrapy.org/en/latest/topics/downloader-middleware.html
# DOWNLOADER_MIDDLEWARES = {  
# 'maoyan.middlewares.MaoyanDownloaderMiddleware': 543,
# }
# 启用或禁用扩展
# Enable or disable extensions
# See https://doc.scrapy.org/en/latest/topics/extensions.html
#EXTENSIONS = {
#    'scrapy.extensions.telnet.TelnetConsole': None,
#}
# 管道配置项目
# Configure item pipelines
# See https://doc.scrapy.org/en/latest/topics/item-pipeline.html
#ITEM_PIPELINES = {
#    'maoyan.pipelines.MaoyanPipeline': 300,
#}
# 启用和配置AutoThrottle扩展(默认情况下禁用)
# Enable and configure the AutoThrottle extension (disabled by default)
# See https://doc.scrapy.org/en/latest/topics/autothrottle.html
#AUTOTHROTTLE_ENABLED = True
# 初始下载延迟
# The initial download delay
#AUTOTHROTTLE_START_DELAY = 5
# 在高延迟情况下设置的最大下载延迟
# The maximum download delay to be set in case of high latencies
#AUTOTHROTTLE_MAX_DELAY = 60
# Scrapy平均请求数应与每个远程服务器并行发送
# The average number of requests Scrapy should be sending in parallel to
# each remote server
#AUTOTHROTTLE_TARGET_CONCURRENCY = 1.0
# Enable showing throttling stats for every response received:
#AUTOTHROTTLE_DEBUG = False
# 启用和配置HTTP缓存(默认情况下禁用)
# Enable and configure HTTP caching (disabled by default)
# See https://doc.scrapy.org/en/latest/topics/downloader-middleware.html#httpcache-middleware-settings
#HTTPCACHE_ENABLED = True#HTTPCACHE_EXPIRATION_SECS = 0
#HTTPCACHE_DIR = 'httpcache'
#HTTPCACHE_IGNORE_HTTP_CODES = []
#HTTPCACHE_STORAGE = 'scrapy.extensions.httpcache.FilesystemCacheStorage'
'''

标签:en,简介,html,scrapy,引擎,https,下载
From: https://www.cnblogs.com/longwanghzx/p/16595359.html

相关文章

  • HTTP请求以及缓存简介
    HTTP的定义:hypertexttransferprotocol超文本传输协议,是一个应用层的协议,是在互联网中传输数据的一个规定,是万维网中数据传输的基础报文:服务器与浏览器之间传输数据的......
  • AWS服务 简介
    1AmazonElasticComputeCloud(AmazonEC2)是一种提供可调节计算容量的Web服务–简单来说,就是Amazon数据中心里的服务器–您可以使用它来构建和托管您的软件系......
  • scrapy多级请求中priority设置
    基于优先获取item的想法,最下级请求最优先请求优先级是基于scrapy有很多请求要发起的情况priority越大请求越优先不在设置中修改配置scrapy代码太复杂,这是目前可以接......
  • golang gin简介,特性,快速开始,小结
    简介Gin是一个用Go(Golang)编写的Web框架。它具有类似martini的API,性能要好得多,多亏了httprouter,速度提高了40倍。特性快速基于Radix树的路由,小内存占......
  • Filed Play:简介
    目录引子What?Howthisprojectworks?Floatpacking参考资料引子在尝试数学函数可视化的时候,发现了一个有趣的库FieldPlay,对README中的说明进行部分翻译......
  • HTML和CSS简介
    问HTML为何物,其实就是标记语言HTMLHTML"""HTML(HypertextMarkupLanguage)超文本标记语言它负责网页的三个要素之中的结构HTML使用标签的的形式来标识网页中的不同......
  • 课程简介
    做什么?#其实不管是前端工程师还是后台工程师我们要做的工作无非就是软件的开发。#软件主要分两种架构C/S和B/S#我们主要从事的是B/S的软件的开发什么是B/S?#B......
  • WebAssembly简介及体验
    webassembly官方简介WebAssembly/wasmWebAssembly或者wasm是一个可移植、体积小、加载快并且兼容Web的全新格式.WebAssembly在web中被设计成无版本、特性可测......
  • Apollo简介
    1、SpringCloudConfig和Apollo的对比 SpringCloudConfigVSApollo.jpg如上图对比SpringCloudConfig优势是对SpringBoot原生支持,且是SpringCloud组件。缺点是......