
- 外文名
- scrapy
- 基本功能
- 数据挖掘
- 特 点
- 应用框架
- 中文名
- 抓取
- 应 用
- 数据挖掘、监测和自动化测试
-
scrapy
2020-06-29 20:05:37scrapy 安装 scrapy 脚本 scrapy startproject mySpider scrapy genspider scrapy list scrapy genspider itcast “itcast.cn” scrapy crawl itcast -
Scrapy
2018-08-01 23:10:29Scrapy介绍 Scrapy一个开源和协作的框架,其最初是为了页面抓取(更确切来说,网络抓取)所设计的,使用它可以快速、简单、可扩展 的方式从网站中提取所需的数据。但目前Scrapy的用途十分广泛,可用于如挖掘、...Scrapy介绍
Scrapy一个开源和协作的框架,其最初是为了页面抓取(更确切来说,网络抓取)所设计的,使用它可以快速、简单、可扩展
的方式从网站中提取所需的数据。但目前Scrapy的用途十分广泛,可用于如挖掘、监测和自动化测试等领域,也可以应用在API
所返回的数据(例如Amazon Associates Web Services)或者通用的网络爬虫。
Scrapy是基于twisted框架开发而来,twisted是一个流行的事件驱动的python网络框架。因此Scrapy使用了一种非阻塞(又名异步)的代码来实现并发。整体架构大致如下
Scrapy数据流是由执行的核心引擎(engine)控制,流程是这样的:
1.引擎打开一个网站(open adomain),找到处理该网站的Spider并向该spider请求第一个要抓取的URL(s)。
2.引擎从Spider中获取到第一个要抓取的URL并在调度器(Scheduler)以Request调度。
3.引擎向调度器请求下一个要爬取的URL。
4.调度器返回下一个要抓取的URL给引擎,引擎将URL通过下载中间件(请求(request)方向)转发给下载器(Downloader).
5.一旦页面下载完毕,下载器生成一个该页面的Response,并将其通过下载中间件(返回(response)方向)发送给引擎。
6.引擎从下载器中接收到Response并通过Spider中间件(输入方向)发送给Spider处理。
7.Spider处理Response并返回爬取到的Item给Item Pipeline,将(Spider返回的)Request给调度器。
8.引擎将(Spider返回的)爬取的Item给Item Pipeline,将(Spider返回的)Request给调度器。
9.(从第二步)重复直到调度器中没有更多地request,引擎关闭该网站。
Scrapy主要包括了一下组件:
1.爬虫引擎(engine):爬虫引擎负责控制各个组件之间的数据流,当某些操作触发事件后都是通过engine来处理
2.调度器:调度接收来engine的请求并将请求请求放入队列中,并通过事件返回给engine
3.下载器:通过engine请求下载网络数据并将结果响应给engine
4.spider:Spider发出请求,并处理engine返回给它下载器响应数据,以items和规则内的数据请求(urls)返回给engine
5.管道数目(item pipeline):负责处理engine返回spider解析后的数据,并且将数据持久化,例如将数据存入数据库或者文件
6.下载中间件:下载中间件是engine和下载器交互组件,以钩子(插件)的形式存在,可以代替接收请求、处理数据的下载以及
将结果响应给engine
7.spider中间件:spider中间件是engine和spider之间的交互组件,以钩子(插件)的形式存在,可以代替处理response以及返回
给engine items及新的请求集
windows环境配置
Scrapy依赖包(也可到官网单独下载各文件安装):
1.lxml: pip install wheel
2.zope.interface:pip install zope.interface-4.3.3-cp35-cp35m-win_amd64.whl
3.pyOpenSSL:pip install pyOpenSSL
4.Twisted:pip install Twisted
5.Scrapy:pip install Scrapy
Anoconda+Pycharm+Scrapy Anaconda是包含了常用的数据科学库的Python发行版本,如果没有安装,
可以到http://www.continuum.io/downloads下载对应平台的包安装。如果已经安装,那么可以轻松地通过
conda命令安装Scrapy。conda install scrapy
Scrapy安装完成后,打开命令行终端输入scrapy,显示如下:
创建项目
- 创建爬虫项目命令
scrapy startproject project_name
- 创建爬虫文件命令
scrapy genspider example exameple.com
- 文件目录如下
D:\test>tree /F 卷 软件 的文件夹 PATH 列表 卷序列号为 58B6-0E53 D:. └─project_dir │ scrapy.cfg │ └─project_name │ items.py │ middlewares.py │ pipelines.py │ settings.py │ __init__.py │ ├─spiders │ │ __init__.py │ │ │ └─__pycache__ └─__pycache__
items.py:定义爬虫程序的数据模型,类似于实体类。
middlewares.py:爬虫中间件,负责调度。
pipelines.py:管道文件,负责对spider返回数据的处理。
spiders目录 负责存放继承自scrapy的爬虫类
scrapy.cfg.scrapy 基础配置
init:初始化文件
setting.py:负责对整个爬虫的配置,内容如下
# -*- coding: utf-8 -*- # Scrapy settings for baidu 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 BOT_NAME = 'baidu' # 爬虫所在地 SPIDER_MODULES = ['baidu.spiders'] NEWSPIDER_MODULE = 'baidu.spiders' # Crawl responsibly by identifying yourself (and your website) on the user-agent #USER_AGENT = 'baidu (+http://www.yourdomain.com)' # Obey robots.txt rules # 遵守爬虫协议 ROBOTSTXT_OBEY = False # Configure maximum concurrent requests performed by Scrapy (default: 16) # 最大请求并发量 默认16 # CONCURRENT_REQUESTS = 32 # configure 配置 请求延迟 # 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 # Disable cookies (enabled by default) # 是否使用cookie #COOKIES_ENABLED = False # 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 = { # 值越小,优先级越高,优先级越高,越先执行 # 'baidu.middlewares.BaiduSpiderMiddleware': 543, #} # Enable or disable downloader middlewares # See https://doc.scrapy.org/en/latest/topics/downloader-middleware.html #DOWNLOADER_MIDDLEWARES = { # 值越小,优先级越高,优先级越高,越先执行 # 'baidu.middlewares.BaiduDownloaderMiddleware': 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 = { # 值越小,优先级越高,优先级越高,越先执行 'baidu.pipelines.BaiduPipeline': 1, } # 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 # 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 # 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'
-
Scrapy 学习
2020-12-29 18:00:29文章目录一、概述二、Scrapy五大基本构成:三、整体架构图四、Scrapy安装以及生成项目五、日志等级与日志保存六、导出为json或scv格式七、一个完整的案例 一、概述 Scrapy,Python开发的一个快速、高层次的屏幕抓取和...一、概述
Scrapy,Python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试.
其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的, 后台也应用在获取API所返回的数据(例如 Amazon Associates Web Services ) 或者通用的网络爬虫.
Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改。它也提供了多种类型爬虫的基类,如BaseSpider、sitemap爬虫等,最新版本又提供了web2.0爬虫的支持.
二、Scrapy五大基本构成:
Scrapy框架主要由五大组件组成,它们分别是调度器(Scheduler)、下载器(Downloader)、爬虫(Spider)和实体管道(Item Pipeline)、Scrapy引擎(Scrapy Engine)。下面我们分别介绍各个组件的作用。
(1)、调度器(Scheduler):
调度器,说白了把它假设成为一个URL(抓取网页的网址或者说是链接)的优先队列,由它来决定下一个要抓取的网址是 什么,同时去除重复的网址(不做无用功)。用户可以自己的需求定制调度器。
(2)、下载器(Downloader):
下载器,是所有组件中负担最大的,它用于高速地下载网络上的资源。Scrapy的下载器代码不会太复杂,但效率高,主要的原因是Scrapy下载器是建立在twisted这个高效的异步模型上的(其实整个框架都在建立在这个模型上的)。
(3)、 爬虫(Spider):
爬虫,是用户最关心的部份。用户定制自己的爬虫(通过定制正则表达式等语法),用于从特定的网页中提取自己需要的信息,即所谓的实体(Item)。 用户也可以从中提取出链接,让Scrapy继续抓取下一个页面。
(4)、 实体管道(Item Pipeline):
实体管道,用于处理爬虫(spider)提取的实体。主要的功能是持久化实体、验证实体的有效性、清除不需要的信息。
(5)、Scrapy引擎(Scrapy Engine):
Scrapy引擎是整个框架的核心.它用来控制调试器、下载器、爬虫。实际上,引擎相当于计算机的CPU,它控制着整个流程。
三、整体架构图
本图按顺序说明整个程序执行时候发生的顺序。
注意在调用下载器时,往往有一个下载器中间件,使下载速度提速。
官网架构图
四、Scrapy安装以及生成项目
新建一个项目,该项目的结构如下:
执行命令,widows和ubuntu命令格式是一样的:
下载方式
ubuntu,打开一个终端,输入pip install scrapy(或pip3 install scrapy)
widows ,打开一个cmd,输入pip install scrapy,前提是你装了pip
scrapy startproject 项目名
scrapy genspider 爬虫名 域名
scrapy crawl 爬虫名
我使用的是widows版本,下面演示创建项目的例子
打开cmd,输入(默认是在C:\Users\Administrator>这个目录下,你可以自行切换)
scrapy startproject myfirstPj
cd my firstPj
scrapy genspider baidu www.baidu.com
创建后目录大致页如下
|-ProjectName #项目文件夹
|-ProjectName #项目目录
|-items.py #定义数据结构
|-middlewares.py #中间件
|-pipelines.py #数据处理
|-settings.py #全局配置
|-spiders
|-init.py #爬虫文件
|-baidu.py
|-scrapy.cfg #项目基本配置文件
spiders下的baidu.py是scrapy自动为我们生成的
下面再看一下spdier项目的配置文件,打开文件settings.py
BOT_NAME:项目名
USER_AGENT:默认是注释的,这个东西非常重要,如果不写很容易被判断为电脑,简单点洗一个Mozilla/5.0即可
ROBOTSTXT_OBEY:是否遵循机器人协议,默认是true,需要改为false,否则很多东西爬不了
CONCURRENT_REQUESTS:最大并发数,很好理解,就是同时允许开启多少个爬虫线程
DOWNLOAD_DELAY:下载延迟时间,单位是秒,控制爬虫爬取的频率,根据你的项目调整,不要太快也不要太慢,默认是3秒,即爬一个停3秒,设置为1秒性价比较高,如果要爬取的文件较多,写零点几秒也行
COOKIES_ENABLED:是否保存COOKIES,默认关闭,开机可以记录爬取过程中的COKIE,非常好用的一个参数
DEFAULT_REQUEST_HEADERS:默认请求头,上面写了一个USER_AGENT,其实这个东西就是放在请求头里面的,这个东西可以根据你爬取的内容做相应设置。
ITEM_PIPELINES:项目管道,300为优先级,越低越爬取的优先度越高
比如我的pipelines.py里面写了两个管道,一个爬取网页的管道,一个存数据库的管道,我调整了他们的优先级,如果有爬虫数据,优先执行存库操作。
ITEM_PIPELINES = { 'scrapyP1.pipelines.BaiduPipeline': 300, 'scrapyP1.pipelines.BaiduMysqlPipeline': 200, }
到这里我们尝试用scrapy做一下爬取,打开spider.py下的baidu.py(取决于你scrapy genspider 爬虫名 域名时输入的爬虫名)
输入一下代码,我们使用xpath提取百度首页的标题title
import scrapy class BaiduSpider(scrapy.Spider): name = 'baidu' allowed_domains = ['www.baidu.com'] start_urls = ['http://www.baidu.com/'] def parse(self, response): tile=response.xpath('//html/head/title/text()') print(tile)
打开一个终端cmd,输入scrapy crawl baidu(爬虫名),就可以看到一大堆输出信息,而其中就包括我们要的内容
使用终端运行太麻烦了,而且不能提取数据,我们一个写一个run文件作为程序的入口,splite是必须写的,目的是把字符串转为列表形式,第一个参数是scrapy,第二个crawl,第三个baidu
from scrapy import cmdline cmdline.execute('scrapy crawl baidu'.split())
可以在编辑器中输出了
使用终端运行太麻烦了,而且不能提取数据,我们一个写一个run文件作为程序的入口,splite是必须写的,目的是把字符串转为列表形式,第一个参数是scrapy,第二个crawl,第三个baidu
from scrapy import cmdline cmdline.execute('scrapy crawl baidu'.split())
可以在编辑器中输出了
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LHFlAlC1-1609235975912)(picture/20200321130523487.png)]
五、日志等级与日志保存
在setting.py里面可以设置日志的等级与日志存放的路径
相关变量
LOG_LEVEL= ""
LOG_FILE="日志名.log"
日志等级分为
1.DEBUG 调试信息
2.INFO 一般信息
3.WARNING 警告
4.ERROR 普通错误
5.CRITICAL 严重错误
如果设置
LOG_LEVEL=“WARNING”,就只会WARNING等级之下的ERROR和CRITICAL
默认等级是1
六、导出为json或scv格式
执行爬虫文件时添加-o选项即可
scrapy crawl 项目名 -o *.csv
scrapy crawl 项目名 -o *.json
对于json文件,在setting.js文件里添加,设置编码格式,否则会乱码:
FEED_EXPORT_ENCODING=‘utf-8’
示例:
from scrapy import cmdline cmdline.execute('scrapy crawl baidu -o baidu.csv'.split())
七、一个完整的案例
这个项目我们的主题是爬腾讯视频的电影信息,包括电影名和描述
1.创建项目
打开一个终端输入(建议放到合适的路径下,默认是C盘)
scrapy startproject TXmovies
cd TXmovies
scrapy genspider txms v.qq.com
2.修改setting
修改三项内容,第一个是不遵循机器人协议,第二个是下载间隙,由于下面的程序要下载多个页面,所以需要给一个间隙(不给也可以,只是很容易被侦测到),第三个是请求头,添加一个User-Agent,第四个是打开一个管道
ROBOTSTXT_OBEY = False DOWNLOAD_DELAY = 1 DEFAULT_REQUEST_HEADERS = { 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Accept-Language': 'en', 'User-Agent':'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36' } ITEM_PIPELINES = { 'TXmovies.pipelines.TxmoviesPipeline': 300, }
3.确认要提取的数据,item项
item定义你要提取的内容(定义数据结构),比如我提取的内容为电影名和电影描述,我就创建两个变量。Field方法实际上的做法是创建一个字典,给字典添加一个建,暂时不赋值,等待提取数据后再赋值。下面item的结构可以表示为:{‘name’:’’,‘descripition’:’’}。
# -*- coding: utf-8 -*- # Define here the models for your scraped items # # See documentation in: # https://docs.scrapy.org/en/latest/topics/items.html import scrapy class TxmoviesItem(scrapy.Item): # define the fields for your item here like: # name = scrapy.Field() name = scrapy.Field() description = scrapy.Field()
4.写爬虫程序
我们要写的部分是parse方法里的内容,重点在于如何写xpath,关于xpath我不多讲,有兴趣可以看看我另一篇文章,XPATH教程
引入刚刚写好的item,刚刚说了item里面创建的变量就是字典的键值,可以直接进行赋值。赋值后交给管道处理。
简单讲一下这一段代码的思路,首先腾讯视频的url为https://v.qq.com/x/bu/pagesheet/list?append=1&channel=cartoon&iarea=1&listpage=2&offset=0&pagesize=30
我们注意到offset这一项,第一页的offset为0,第二页为30,依次推列。在程序中这一项用于控制抓取第一页,但是也要给一个范围,不可能无限大,否则会报错,可以去看看腾讯一共有多少页视频,也可以写一个异常捕获机制,捕捉到请求出错则退出。我这里仅仅是示范,所以只给了120,也就是4页。
yield
程序里一共有两个yield,我比较喜欢叫它中断,当然中断只在CPU中发生,它的作用是移交控制权,在本程序中,我们对item封装数据后,就调用yield把控制权给管道,管道拿到处理后return返回,又回到该程序。这是对第一个yield的解释。
第二个yield稍微复杂点,这条程序里利用了一个回调机制,即callback,回调的对象是parse,也就是当前方法,通过不断的回调,程序将陷入循环,如果不给程序加条件,就会陷入死循环,如本程序我把if去掉,那就是死循环了。
yield scrapy.Request(url=url,callback=self.parse)
xpath
还有一个要注意的是如何提取xpathl里的数据,我们的写法有四种,第一种写法拿到selector选择器,也就是原数据,里面有一些我们用不到的东西。第二个extract(),将选择器序列号为字符串。第三个和第四个一样,拿到字符串里的第一个数据,也就是我们要的数据。
items[‘name’]=i.xpath(’./a/@title’)[0]
items[‘name’]=i.xpath(’./a/@title’).extract()
items[‘name’]=i.xpath(’./a/@title’).extract_first()
items[‘name’]=i.xpath(’./a/@title’).get()
# -*- coding: utf-8 -*- import scrapy from ..items import TxmoviesItem class TxmsSpider(scrapy.Spider): name = 'txms' allowed_domains = ['v.qq.com'] start_urls = ['https://v.qq.com/x/bu/pagesheet/list?append=1&channel=cartoon&iarea=1&listpage=2&offset=0&pagesize=30'] offset=0 def parse(self, response): items=TxmoviesItem() lists=response.xpath('//div[@class="list_item"]') for i in lists: items['name']=i.xpath('./a/@title').get() items['description']=i.xpath('./div/div/@title').get() yield items if self.offset < 120: self.offset += 30 url = 'https://v.qq.com/x/bu/pagesheet/list?append=1&channel=cartoon&iarea=1&listpage=2&offset={}&pagesize=30'.format( str(self.offset)) yield scrapy.Request(url=url,callback=self.parse)
5.交给管道输出
管道可以处理提取的数据,如存数据库。我们这里仅输出。
# -*- coding: utf-8 -*- # Define your item pipelines here # # Don't forget to add your pipeline to the ITEM_PIPELINES setting # See: https://docs.scrapy.org/en/latest/topics/item-pipeline.html class TxmoviesPipeline(object): def process_item(self, item, spider): print(item) return item
6.run,执行项目
from scrapy import cmdline cmdline.execute('scrapy crawl txms'.split())
7.测试结果
白色的管道输出的结果,红色的调试信息
8.流程梳理
新建项目-》进入项目-》新建爬虫文件-》明确抓取的内容,写item-》写爬虫程序,爬取数据-》交给管道处理数据-》调整全局配置setting-》执行爬虫程序,可以通过终端或者在程序里写一个run程序
9.提速:多线程爬取
如果你实现了上面的实验,不难发现其爬取速度是非常慢,根本的原因就是因为它是顺序执行的,你可以从结果中看出,总是前面一页的内容被输出,再输出后面的内容。不适合处理数据量较大的情况,一个好的方式是采用多线程的方法,这里的多线程是基于方法的多线程,并不是通过创建Thread对象来实现,是在一个方法中,一次性把请求交给调度器。
我们通过重写start_requests方法来实现我们的想法(这个方法的源码在__init__.py下面,有兴趣可以看一下)
# -*- coding: utf-8 -*- import scrapy from ..items import TxmoviesItem class TxmsSpider(scrapy.Spider): name = 'txms' allowed_domains = ['v.qq.com'] url='https://v.qq.com/x/bu/pagesheet/list?append=1&channel=cartoon&iarea=1&listpage=2&offset={}&pagesize=30' offset=0 def start_requests(self): for i in range(0,121,30): url=self.url.format(i) yield scrapy.Request( url=url, callback=self.parse ) def parse(self, response): items=TxmoviesItem() lists=response.xpath('//div[@class="list_item"]') for i in lists: items['name']=i.xpath('./a/@title').get() items['description']=i.xpath('./div/div/@title').get() yield items
-
scrapy 常用命令详解
2020-06-07 18:14:26官方文档:https://docs.scrapy.org/en/latest/topics/commands.html Global commands: startproject genspider settings runspider shell fetch view version Project-...官方文档:https://docs.scrapy.org/en/latest/topics/commands.html
Global commands:
Project-only commands:
genspider-->注意:-t指定创建模板,默认basic
-
Syntax:
scrapy genspider [-t template] <name> <domain>
-
Requires project: no
Usage example:
$ scrapy genspider -l Available templates: basic crawl csvfeed xmlfeed $ scrapy genspider example example.com Created spider 'example' using template 'basic' $ scrapy genspider -t crawl scrapyorg scrapy.org Created spider 'scrapyorg' using template 'crawl'
runspider-->好处是无须项目路径支持,但spider_file.py不支持相对路径
-
Syntax:
scrapy runspider <spider_file.py>
-
Requires project: no
Run a spider self-contained in a Python file, without having to create a project.
Example usage:
$ scrapy runspider myspider.py [ ... spider starts crawling ... ]
parse-->重点推荐,调试方便,可指定回调函数运行 例如:scrapy parse https://www.baidu.com -c parse_detail --spider=tencent
-
Syntax:
scrapy parse <url> [options]
-
Requires project: yes
Fetches the given URL and parses it with the spider that handles it, using the method passed with the
--callback
option, orparse
if not given.Supported options:
-
--spider=SPIDER
: bypass spider autodetection and force use of specific spider -
--a NAME=VALUE
: set spider argument (may be repeated) -
--callback
or-c
: spider method to use as callback for parsing the response -
--meta
or-m
: additional request meta that will be passed to the callback request. This must be a valid json string. Example: –meta=’{“foo” : “bar”}’ -
--cbkwargs
: additional keyword arguments that will be passed to the callback. This must be a valid json string. Example: –cbkwargs=’{“foo” : “bar”}’ -
--pipelines
: process items through pipelines -
--rules
or-r
: useCrawlSpider
rules to discover the callback (i.e. spider method) to use for parsing the response -
--noitems
: don’t show scraped items -
--nolinks
: don’t show extracted links -
--nocolour
: avoid using pygments to colorize the output -
--depth
or-d
: depth level for which the requests should be followed recursively (default: 1) -
--verbose
or-v
: display information for each depth level
Usage example:
$ scrapy parse http://www.example.com/ -c parse_item [ ... scrapy log lines crawling example.com spider ... ] >>> STATUS DEPTH LEVEL 1 <<< # Scraped Items ------------------------------------------------------------ [{'name': 'Example item', 'category': 'Furniture', 'length': '12 cm'}] # Requests ----------------------------------------------------------------- []
-
-
scrapy-splash简单使用
2020-06-03 10:04:33scrapy-splash简单使用: 1.docker安装splash docker info 查看docker信息 docker images 查看所有镜像 docker pull scrapinghub/splash 安装scrapinghub/splash docker run -p 8050:8050 scrapinghub/splash &... -
-
亲身经历——下载Scrapy
2020-08-25 22:51:56下载Scrapy Scrapy 是一套基于基于Twisted的异步处理框架,纯python实现的爬虫框架,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片等等。 首先 使用我们的pip命令对Scrapy进行... -
[Scrapy使用技巧] 如何在scrapy中捕获并处理各种异常
2018-06-15 16:29:50使用scrapy进行大型爬取任务的时候(爬取耗时以天为单位),无论主机网速多好,爬完之后总会发现scrapy日志中“item_scraped_count”不等于预先的种子数量,总有一部分种子爬取失败,失败的类型可能有如下图两种... -
Scrapy Shell
2019-12-18 23:47:46这篇文章很简单,可以说是 Scrapy 系列中最短最简单的文章。本篇文章主要讲解 Scrapy Shell 的相关知识。 零、 Scrapy Shell Scrapy Shell 是一个交互终端,可以在没有启动 Spider 的情况下调试代码。我们在开发爬虫... -
Python爬虫框架Scrapy
2019-08-07 15:57:44在Scrapy使用实践中,我们深刻体会到Scrapy框架只实现了爬虫流程,而真正的Scrapy核心是CSS选择器、xpath和正则表达式,所以本课程一开始先讲述了这三门课程,有了这三门课程的基础再学习Scrapy就会非常轻松。 -
Python3 Scrapy爬虫框架(Scrapy/scrapy-redis)
2018-04-19 20:10:52Python3 Scrapy爬虫框架(Scrapy/scrapy-redis) 本文由 Luzhuo 编写,转发请保留该信息. 原文: https://blog.csdn.net/Rozol/article/details/80010173 Scrapy Scrapy 是 Python 写的, 主要用于爬取网站... -
Scrapy 2.0
2020-03-25 11:04:49Scrapy 2.0 Scrapy 安装 (scrapy) C:\Users\15011>pip install scrapy -i https://pypi.douban.com/simple/ 如果遇到安装Twisted包的时候,报出以下错误。 Building wheels for collected packages: Twisted ... -
Scrapy入门
2020-04-12 22:06:58Scrapy入门 -
Scrapy简介
2021-02-15 17:10:45目录Scrapy介绍Scrapy工作流程Scrapy入门pipline使用总结 Scrapy介绍 什么是Scrapy Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,我们只需要实现少量的代码,就能够快速的抓取 Scrapy使用了... -
Scrapy-Redis入门实战
2019-05-05 19:28:13目录 ...scrapy-redis是一个基于redis的scrapy组件,用于快速实现scrapy项目的分布式部署和数据爬取,其运行原理如下图所示。 Scrapy-Redis特性 分布式爬取 你可以启动多个共享同一redis队列... -
Scrapy教程
2018-12-19 14:59:42Scrapy教程 Scrapy概述 Scrapy环境 Scrapy命令行工具 Scrapy蜘蛛 Scrapy选择器 Scrapy项目 Scrapy Item Loaders Scrapy shell Scrapy Item Pipeline Scrapy Feed exports Scrapy请求和响应 Scrapy链接提取器 ... -
Scrapy框架——安装Scrapy
2018-01-07 19:44:00Scrapy框架—— 安装Scrapy 需求配置 安装sqlite依赖库 编译python3.6 编译Twisted 安装Scrapy 测试Scrapy是否成功安装 Scrapy框架—— 安装Scrapy Scrapy 可以说是爬虫界鼎鼎有名的框架。 它是一个... -
[scrapy]scrapy-redis快速上手/scrapy爬虫分布式改造
2018-03-05 18:15:24了解scrapy,知道scrapy-redis可以用来干嘛,最好已经有了可以单机运行的scrapy爬虫。 已经尝试了一些反反爬措施后仍然觉得爬取效率太低。 已经看了无数scrapy-redis文章,却和我一样不得要领。(自己太笨) 已经看了... -
Scrapy 入门教程
2020-11-21 13:45:12Scrapy 是用 Python 实现的一个为了爬取网站数据、提取结构性数据而编写的应用框架。 Scrapy 常应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。 通常我们可以很简单的通过 Scrapy 框架实现一个爬虫... -
scrapyd,scrapy部署
2020-03-31 08:07:43/Library/Frameworks/Python.framework/Versions/3.7/bin/scrapyd-deploy:23: ScrapyDeprecationWarning: Module scrapy.utils.http is deprecated, Please import from w3lib.http instead. from scrapy.utils.... -
scrapy启动
2019-07-02 09:02:00在开始爬取之前,您必须创建一个新的Scrapy项目。 进入您打算存储代码的目录中,运行下列命令: scrapy startproject scrapytest 第一种scrapy genspider example example.com第二种scrapy genspider -t crawl ... -
记录一下scrapy中 settings 的一些配置
2020-01-16 11:49:41# 字符编码 FEED_EXPORT_ENCODING = 'utf-8' # redis写法一 # REDIS_URL = 'redis://localhost:6379' # redis写法二 REDIS_HOST = '192.168.10...# 默认的 scrapy redis 会读取下面的密码和db REDIS_PARAMS = {... -
scrapy实例
2018-08-30 20:21:31创建Scrapy项目 scrapy startproject Tencent 编写item import scrapy class TencentItem(scrapy.Item): # 职位名 positionname = scrapy.Field() # 详情连接 positionlink = scrapy.Field() # 职位类别... -
【Python爬虫:Scrapy】 之 PyCharm 搭建Scrapy环境+创建Scrapy项目 实例
2020-04-16 01:19:241.环境 win10 PyCharm Python 3.6 2.scrapy 环境搭建 ...安装两个python模块:Twisted、scrapy。... 安装scrapy:执行 pip installscrapy 【注】安装完成后,执行 pip list 检查以下上述两个模块是否安装成功。 ...