![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
scrapy
文章平均质量分 66
笑笑布丁
个人博客:https://madpudding.github.io/
展开
-
scrapy 兼容 cloudscraper
scrapy 兼容 cloudscraperscrapy 原生对 cloudscraper的兼容性差神奇的AroayCloudScraper超级简单的使用方式(参考作者的文档)settings 设置:建议:Middleware:代码样本:proxy说明headers 说明scrapy 原生对 cloudscraper的兼容性差经过我这几天的摸索和时间,scrapy对cloudscerper兼容性并不好,所以需要进行一定的二次开发,才能加强兼容性神奇的AroayCloudScraper上面说需要做二次原创 2021-05-13 10:52:52 · 2861 阅读 · 6 评论 -
scrapy + cloudscraper 产生错误: CloudflareChallengeError Detected a Cloudflare version 2 challenge
错误示例Traceback (most recent call last):cloudscraper.exceptions.CloudflareChallengeError: Detected a Cloudflare version 2 Captcha challenge, This feature is not available in the opensource (free) version.2021-04-27 09:59:30 [scrapy.core.scraper] ERROR: Er原创 2021-04-27 10:49:23 · 5137 阅读 · 5 评论 -
scrapy killed原因探究
scrapy killed原因探究scrapy killed原因探究原因什么会导致scrapy内存溢出呢?可能导致内存溢出的元素lxml吃掉内存如何查看scrapy内存使用使用telent使用prefs()查看scrapy指标从上图可以看到,爬虫运行2000多秒时,scrapy的scheduler已经堆积了1318个request等待处理,600多的response等待处理.使用 muppy 查看内存 使用可以看到问题爬虫运行到600s秒时,bytes就已经暴涨到500多MB了,这是导致问题爬虫运行一段时间原创 2021-04-26 15:36:08 · 530 阅读 · 2 评论 -
Cloudflare反爬
Cloudflare反爬Cloudflare反爬实例背景解决途径------盗文章死妈---------.Cloudflare反爬实例很久没有写博文了,今儿个遇到了一个之前没有碰到的情况,目标网站使用了cloudflare进行反爬设置,这里记录一下.背景解决途径# 解决办法 # 首先 pip install cloudscraperimport cloudscraperscraper = cloudscraper.create_scraper() print(scraper.ge原创 2021-04-20 17:44:58 · 3536 阅读 · 1 评论 -
设计爬虫代理池的一点个人设想
这个只是个人的一点思考,因为我的提议被否决了,所以只停留在我个人的设计层面,以下的个人设想针对的是scrapy的框架.众所周知,国内的ip代理池是混淆的,所以不需要考虑自己再混淆一次,二国外的代理池,一般是固定ip,这个旧很要命了,如果是高频次的抓取,是特别容易被封禁的,如果想降低频次的话,一是扩大代理池,二是混淆代理,增加复用率。如何提高复用率呢?针对scrapy框架,个人有一些设想:假如我们有80个代理,我们可以用:random.choice(代理list)通过每次random不同的代理来原创 2020-11-12 18:08:16 · 120 阅读 · 0 评论 -
爬虫数据实时统计的一些思路
上周接了个需求,需要统计爬虫的一些数据,众所周知scrapy提供了一些统计数据的生成,如任务数:scheduler/dequeued,记录错误数:log_count/ERROR……,这不包括数据处理的数据,当然你其实可以在pipeline魔改加数据统计(只是我的一个思路,不知道能否实行).然而,早在今年初期,我就对公司的爬虫系统做了拆分,将数据处理部分,拆分出来,作为一个独立的模块运行,这样既降了耦合,又提高了爬虫的速度.那么我需要在数据处理模块来进行一些数据统计,标记哪些数据做了处理,哪些没有变化.思原创 2020-09-10 18:00:48 · 1191 阅读 · 0 评论 -
scrapy redis.exceptions.ResponseError
错误如下:2020-02-05 10:58:30 [twisted] CRITICAL:Traceback (most recent call last): File "C:\Users\pudding\Anaconda3\lib\site-packages\twisted\internet\defer.py", line 1418, in _inlineCallbacks res...原创 2020-02-05 11:06:16 · 525 阅读 · 0 评论 -
scrapy AWS图片存储
scrapy将爬取下来的图片存储到AWS 的 S3 bucket上.一.在settings里面配置AWS现有的scrapy还不支持boto3,只有boto,所以我加上了AWS这些参数.二. 你需要改写 ImageDownloadPipeline类1.其中会有几个方法比较重要,第一是 get_media_requests 请求下载图片方法,不改写的话维持默认2. file_path, 意指...原创 2020-02-04 15:49:02 · 606 阅读 · 0 评论 -
Python scrapy发送邮件
背景:给scrapy加入发送邮件功能,其目的旨在报错预警,这对运维现有爬虫有着很大的积极意义.或者爬虫爬取结束后,发邮件告诉开发者,hi,任务已经完成了.实现:我不纠结于是否使用scrapy自带的发送邮件功能,我的目的只是去实现它,用简单直接的方式.发送邮件功能,我推荐大家使用yagmil来发送邮件,因为简单方便,填入的参数少,只需三个参数,记得开启邮箱的smtp服务.pip install...原创 2020-01-19 11:47:59 · 1130 阅读 · 0 评论 -
scrapy 运行多爬虫
背景:scrapy是支持多爬虫启动的,有两种方式.你可以使用scrapy.crawler.CrawlerProcess这个类来运行你的spider,这个类会为你启动一个Twisted reactor,并能配置你的日志和shutdown处理器。所有的scrapy命令都使用这个类.另外一个功能更强大的类是scrapy.crawler.CrawlerRunner,我用的就是这个,目前同时启动过7个爬...原创 2020-01-14 16:01:58 · 803 阅读 · 0 评论 -
python OSError: [Errno 24] Too many open files
背景:scrapy启动了多个爬虫,每个爬虫都有读写文件的pipeline。发生了这一问题.原因:超出了进程同一时间最多可开启的文件数.解决办法: ulimit -n 2048,将数目提高,mac默认是256,linux是1024,自行体会....原创 2020-01-14 15:09:23 · 6702 阅读 · 0 评论 -
scrapy 没有加载ImagesPipeline
背景:使用scrapy crawl命令时是加载了image pipeline,用脚本的形式,启动多爬虫时,却没有加载imagepipeline, 却加载了productraw和fileweiter两个pipeline.解决办法:思路因为scrapy的image pipeline是需要在settings里面加IMAGES_STORE这个参数的,没有的话就无法加载图片管道.我在settings里面...原创 2019-12-30 17:28:51 · 1002 阅读 · 0 评论 -
scrapinghub 傻瓜教程
部署scrapy到scrapinghub 踩坑详尽记录.1、注册scrapinghub账号,没有scrapinghub账号是无法部署爬虫的.2、创建项目(找到图下按钮):3、再创建完项目之后,scrapinghub会提供API key 以及项目ID:4、拿到API key 和 project id后,来到本地的爬虫项目,先安装scrapinghub的官方包:shub, pip inst...原创 2019-12-05 15:34:03 · 1557 阅读 · 0 评论 -
execjs._exceptions.ProcessExitedWithNonZeroStatus
报错如下图:提示我292的换行符有问题,刚开始我以为是我服务器的nodejs环境没有配好,就忽略了换行错误,后面发现nodejs已经配置好了,才转过来正视这个问题.在gitlab的textview里发现了端倪:在pycharm里面根本发现不了啊,删除空格,结果如下:然后,还是不行,emmm…后面我开始审视这句话:fuck you!!!! 不支持let 和const写法!!!!!...原创 2019-11-14 16:50:57 · 8006 阅读 · 7 评论 -
scrapy假死
背景:进程还在跑,数据没有产出,日志记录停留在昨天.解决办法:在settings里设置timeoutDOWNLOAD_TIMEOUT = 15 # timeout 为15s原创 2019-11-01 10:43:40 · 896 阅读 · 0 评论 -
scrapy 忽略|屏蔽请求
背景:有时候在scrapy中,我们经常会碰到一些我们并不需要的url请求,一是它会带来脏数据,而是它会占用请求资源,造成不必要浪费.解决办法:碰到这种情况,我们可以自己写一个过滤这些请求的中间件(middleware).比如,我的这个是它会在url里面有些关键字,当url中有这些关键字的时候,中间件就会把请求过滤掉.这是这个middleware的设计思路,下面来看具体怎么去实现它:# 需要用...原创 2019-10-28 15:42:15 · 1539 阅读 · 0 评论 -
scrapy 一开始就结束的原因
背景:昨天跑爬虫的时候,碰到了这个情况,爬虫启动后,然后,就显示finished。原因:之前还没启动splash的时候,启动了下爬虫,start_urls跑了,这个是没有设置dontfilter=True的,然后这些url存到redis里面,去重插件检测已经跑过了,就结束了.蛋疼的是,我splash都没启动,这些url是怎么crawled的,未解之谜....原创 2019-10-24 17:26:37 · 1196 阅读 · 2 评论 -
scrapy 怎么设置时间间隔?
在 spiders 文件中写如下:custom_settings = { ‘DOWNLOAD_DELAY’: 0.2, ‘CONCURRENT_REQUESTS_PER_IP’: 4, ‘DOWNLOADER_MIDDLEWARES’: {},}原创 2019-05-31 11:37:12 · 5175 阅读 · 0 评论 -
scrapy shell初探
记一次简单的scrapy shell调试虽然使用scrapy很多次了,但是shell调试一直没有用过,说了惭愧,今天用了一次记录一下.1、第一步在terminal中输入:scrapy shell 调试网址.当出现以下这个图片的时候,就可以进行shell交互调试了.2.输入提取xpath的语句在输入:response.xpath(’//a[@class=“page-next”]/@hr...原创 2019-06-25 22:26:02 · 423 阅读 · 0 评论 -
scrapy Filtered offsite request to
scrapy Filtered offsite request to原因是这样滴:allowed_domains出问题了,应该设置为顶级域名。eg:刚开始我用的是 allowed_domains = [“https://www.uniqlo.com/sg/store/women”],发现第二级parse调用Request的根本进入不了请求。后改成 allowed_domains = [“u...原创 2019-07-02 15:48:39 · 212 阅读 · 0 评论 -
scrapy splash 504错误解决以及若干建议
原因:使用splash经常出现504 get-away错误,很头疼,查了一圈,在官方文档那里的到若干建议或者说解决注意方法。splash 504原因官方解释:HTTP 504错误意味着对Splash的请求花费超过超时秒数(默认为30秒) - Splash在超时后中止脚本执行。 要覆盖超时值,请将’timeout’参数传递给您正在使用的Splash端点。 请注意,允许的最大超时值受最大超时设置...原创 2019-07-02 16:13:38 · 3276 阅读 · 0 评论 -
解决scrapy ValueError('Missing scheme in request url: %s' % self._url)
解决scrapy ValueError(‘Missing scheme in request url: %s’ % self._url)当start_urls = [‘https://www.ae.com/us/en/c/women/’, ] 最后一个元素,需要加上逗号。原创 2019-07-09 15:12:38 · 758 阅读 · 2 评论 -
scrapy Splash Request设置请求头
scrapy Splash Request设置请求头1. 在lua里直接设置:splash:set_user_agent(“Mozilla/5.0”)2. 写在middleware里面:class HeaderMiddleware(object): @classmethod def from_crawler(cls, crawler): # This meth...原创 2019-07-18 15:52:38 · 2545 阅读 · 0 评论 -
linux上创建python虚拟环境
背景,想在Ubuntu server上部署scrapy,由于不是通过scrapy.cfg的方式部署的,所以想通过创建python虚拟环境,来运行scrapy的命令,也方便安装项目需要的python包。一、安装所需要用到的包pip3 install virtualenvwrapperpip3 install virtualenv二、通过命令创建虚拟环境然后使用:mkvirtualenv 命...原创 2019-09-02 17:38:06 · 1192 阅读 · 0 评论 -
scrapy 404 问题 & HTTP status code is not handled or not allowed
背景:在使用scrapy爬取网页时,当一个页面的http code是404时,scrapy会略掉它,然而,如果你想在爬虫里对http code是404,做特殊处理的时候,就不会应验。解决办法: 在settings 文件里 加上 :HTTPERROR_ALLOWED_CODES = [404]...原创 2019-09-25 15:26:12 · 2774 阅读 · 0 评论 -
python 爬虫之scrapy-splash 带cookie请求示例
简单示例这是一个scrapy + splash 带cookie请求网站的示例,适用于需要登录且是js渲染的网站抓取。1.首先需要导入这些包:2.编写起始方法:在方法里,SplashRequest是启动splash的方法,其他你如果是想完成登录操作的话,你可以使用SplashFormRequest方法带参登录。3. 在lua里设置请求头:众所周知,splash可以通过lua进行调用,...原创 2019-05-07 12:23:40 · 3706 阅读 · 2 评论