
爬虫
文章平均质量分 63
笑笑布丁
个人博客:https://madpudding.github.io/
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
搭建nodejs服务器
搭建nodejs服务器原创 2024-01-23 10:57:20 · 668 阅读 · 0 评论 -
【Python爬虫 js渲染思路一】
按照上面的思路,我们应该仿照正确翻页API构造正确的api url,但在这之前,我们应该先请求js的url,拿到key之后,把key加到请求头中请求API。该网站在请求加了两个额外参数,很显然,如果不在请求的时候加上这两个参数,你永远得不到正确的数据。那么这两个参数要怎么得到呢?搜索后你发现,咦,原来某些js文件有该。好家伙,居然一个字都没改,真是妙哉。原创 2023-10-11 15:18:20 · 733 阅读 · 0 评论 -
Chrome 无头模式下载文件
环境版本chrome 版本: 76selenium 4.1.3解决办法def enable_download_headless(browser, download_dir): browser.command_executor._commands["send_command"] = ("POST", '/session/$sessionId/chromium/send_command') params = {'cmd': 'Page.setDownloadBeh原创 2022-05-10 18:13:33 · 1405 阅读 · 0 评论 -
scrapy 兼容 cloudscraper
scrapy 兼容 cloudscraperscrapy 原生对 cloudscraper的兼容性差神奇的AroayCloudScraper超级简单的使用方式(参考作者的文档)settings 设置:建议:Middleware:代码样本:proxy说明headers 说明scrapy 原生对 cloudscraper的兼容性差经过我这几天的摸索和时间,scrapy对cloudscerper兼容性并不好,所以需要进行一定的二次开发,才能加强兼容性神奇的AroayCloudScraper上面说需要做二次原创 2021-05-13 10:52:52 · 3140 阅读 · 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 · 5246 阅读 · 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 · 697 阅读 · 2 评论 -
Cloudflare反爬
Cloudflare反爬Cloudflare反爬实例背景解决途径------盗文章死妈---------.Cloudflare反爬实例很久没有写博文了,今儿个遇到了一个之前没有碰到的情况,目标网站使用了cloudflare进行反爬设置,这里记录一下.背景解决途径# 解决办法 # 首先 pip install cloudscraperimport cloudscraperscraper = cloudscraper.create_scraper() print(scraper.ge原创 2021-04-20 17:44:58 · 3755 阅读 · 1 评论 -
设计爬虫代理池的一点个人设想
这个只是个人的一点思考,因为我的提议被否决了,所以只停留在我个人的设计层面,以下的个人设想针对的是scrapy的框架.众所周知,国内的ip代理池是混淆的,所以不需要考虑自己再混淆一次,二国外的代理池,一般是固定ip,这个旧很要命了,如果是高频次的抓取,是特别容易被封禁的,如果想降低频次的话,一是扩大代理池,二是混淆代理,增加复用率。如何提高复用率呢?针对scrapy框架,个人有一些设想:假如我们有80个代理,我们可以用:random.choice(代理list)通过每次random不同的代理来原创 2020-11-12 18:08:16 · 169 阅读 · 0 评论 -
OpenSSL.SSL.Error: [(‘SSL routines‘, ‘ssl3_get_record‘, ‘wrong version number‘)
这种情况一般发生在使用代理的情况下解决办法将https://asdasd.com 替换为 http://sdadas.com附上stackoverflow链接原创 2020-10-29 18:34:43 · 14083 阅读 · 2 评论 -
爬虫数据实时统计的一些思路
上周接了个需求,需要统计爬虫的一些数据,众所周知scrapy提供了一些统计数据的生成,如任务数:scheduler/dequeued,记录错误数:log_count/ERROR……,这不包括数据处理的数据,当然你其实可以在pipeline魔改加数据统计(只是我的一个思路,不知道能否实行).然而,早在今年初期,我就对公司的爬虫系统做了拆分,将数据处理部分,拆分出来,作为一个独立的模块运行,这样既降了耦合,又提高了爬虫的速度.那么我需要在数据处理模块来进行一些数据统计,标记哪些数据做了处理,哪些没有变化.思原创 2020-09-10 18:00:48 · 1276 阅读 · 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 · 693 阅读 · 0 评论 -
Python scrapy发送邮件
背景:给scrapy加入发送邮件功能,其目的旨在报错预警,这对运维现有爬虫有着很大的积极意义.或者爬虫爬取结束后,发邮件告诉开发者,hi,任务已经完成了.实现:我不纠结于是否使用scrapy自带的发送邮件功能,我的目的只是去实现它,用简单直接的方式.发送邮件功能,我推荐大家使用yagmil来发送邮件,因为简单方便,填入的参数少,只需三个参数,记得开启邮箱的smtp服务.pip install...原创 2020-01-19 11:47:59 · 1295 阅读 · 0 评论 -
scrapy 运行多爬虫
背景:scrapy是支持多爬虫启动的,有两种方式.你可以使用scrapy.crawler.CrawlerProcess这个类来运行你的spider,这个类会为你启动一个Twisted reactor,并能配置你的日志和shutdown处理器。所有的scrapy命令都使用这个类.另外一个功能更强大的类是scrapy.crawler.CrawlerRunner,我用的就是这个,目前同时启动过7个爬...原创 2020-01-14 16:01:58 · 874 阅读 · 0 评论 -
python OSError: [Errno 24] Too many open files
背景:scrapy启动了多个爬虫,每个爬虫都有读写文件的pipeline。发生了这一问题.原因:超出了进程同一时间最多可开启的文件数.解决办法: ulimit -n 2048,将数目提高,mac默认是256,linux是1024,自行体会....原创 2020-01-14 15:09:23 · 6774 阅读 · 0 评论 -
scrapy 没有加载ImagesPipeline
背景:使用scrapy crawl命令时是加载了image pipeline,用脚本的形式,启动多爬虫时,却没有加载imagepipeline, 却加载了productraw和fileweiter两个pipeline.解决办法:思路因为scrapy的image pipeline是需要在settings里面加IMAGES_STORE这个参数的,没有的话就无法加载图片管道.我在settings里面...原创 2019-12-30 17:28:51 · 1055 阅读 · 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 · 1774 阅读 · 0 评论 -
关于celery连接rabbitMQ错误:ConnectionResetError: [Errno 104] Connection reset by peer
爬虫使用celery从RabbitMQ取数据的时候,会遇到这个错误,关于错误的原因在于:网络不稳定或者连接时间过长.我的原因是在于时间过长,因为爬虫消化需要一定的时间.下面开始我的填坑之路:1、在github issue里面,发现有人跟我是同样的错误,遂采用它得到的解决办法:broker_pool_limit = None结论: 不行.2 在kombu 包的pidbox文件的rep...原创 2019-11-27 10:25:35 · 3147 阅读 · 0 评论 -
爬虫爬取js渲染网站的思路
如何辨别哪些网站时js渲染的网站?使用requests库访问得到网页文本是否与浏览器得到的网页文本一致,若不一致(可能会存在因浏览器不同,导致不同结构的细微差异),网站多多少少存在js渲染的情况。如何爬取js渲染的网站呢?在这里我提供三种思路:1、使用 selenium pyppeteer splash等等模拟浏览器的方式去爬取,这是最便捷的方法,缺点就是耗时比较慢,但胜在渲染无敌,xpa...原创 2019-11-20 12:09:39 · 3564 阅读 · 3 评论 -
execjs._exceptions.ProcessExitedWithNonZeroStatus
报错如下图:提示我292的换行符有问题,刚开始我以为是我服务器的nodejs环境没有配好,就忽略了换行错误,后面发现nodejs已经配置好了,才转过来正视这个问题.在gitlab的textview里发现了端倪:在pycharm里面根本发现不了啊,删除空格,结果如下:然后,还是不行,emmm…后面我开始审视这句话:fuck you!!!! 不支持let 和const写法!!!!!...原创 2019-11-14 16:50:57 · 8497 阅读 · 9 评论 -
scrapy假死
背景:进程还在跑,数据没有产出,日志记录停留在昨天.解决办法:在settings里设置timeoutDOWNLOAD_TIMEOUT = 15 # timeout 为15s原创 2019-11-01 10:43:40 · 953 阅读 · 0 评论 -
The X11 connection broke (error 1). Did the X11 server die?
背景: mac跑docker的spalsh遇到的错误,开始我以为时mac休眠的问题(远程链接的),后面看了docker日志,发现并不是这样.解决办法:将lua里面的在这里: splash.images_enabled = false # 改为true附上GitHub issue:戳这里....原创 2019-10-31 12:29:15 · 6352 阅读 · 2 评论 -
scrapy 忽略|屏蔽请求
背景:有时候在scrapy中,我们经常会碰到一些我们并不需要的url请求,一是它会带来脏数据,而是它会占用请求资源,造成不必要浪费.解决办法:碰到这种情况,我们可以自己写一个过滤这些请求的中间件(middleware).比如,我的这个是它会在url里面有些关键字,当url中有这些关键字的时候,中间件就会把请求过滤掉.这是这个middleware的设计思路,下面来看具体怎么去实现它:# 需要用...原创 2019-10-28 15:42:15 · 1664 阅读 · 0 评论 -
scrapy 一开始就结束的原因
背景:昨天跑爬虫的时候,碰到了这个情况,爬虫启动后,然后,就显示finished。原因:之前还没启动splash的时候,启动了下爬虫,start_urls跑了,这个是没有设置dontfilter=True的,然后这些url存到redis里面,去重插件检测已经跑过了,就结束了.蛋疼的是,我splash都没启动,这些url是怎么crawled的,未解之谜....原创 2019-10-24 17:26:37 · 1274 阅读 · 2 评论 -
python爬虫之 BeautifulSoup修复残损的html文本
原因众所周知,当你使用lxml解析html文本时,它是不能解析残损的html文本的,所以一旦你下载的是残损的文本,它也要么解析不出来,要么parse出错,那怎么解决呢?Beautifulsoup首先 pip install beautifulsoup4, pip install htmllib5 data = requests.get(url=get_url, headers=hea...原创 2019-04-30 15:53:51 · 765 阅读 · 0 评论 -
python爬虫之字体反爬虫
原因今天下午在抓取一个网页时,发现的网页字体反爬,这种情况一句话总结:即网页文本里的数字与网页上显示的字体不一致。为什么会出现这样的情况呢?原因是开发者在网页文本里引入了改变字体的文件。然后可以看到,这是网页文本里的数字:这是网页显示数字:手段并不是太高明,这个动态网页比,难度还是不大的。解决办法如下:在请求完网页下载完网页文本后,找到网页文本里字体的源地址:然后,把它下载下来...原创 2019-04-29 18:42:39 · 1718 阅读 · 4 评论 -
python 翻译爬虫
比较简单的请求爬虫,不过多做介绍,eng代表英文,翻译效果还行吧,能用。代码def translate_content(content): # 翻译 form_data = {} translae_url = "https://fanyi.so.com/index/search" form_data['query'] = content form_da...原创 2019-04-29 11:25:21 · 354 阅读 · 0 评论 -
facebook-sdk 简介上手
关于facebook-sdk调用facebook 的图谱api,你需要在线请求,或者构造它的ajax去请求,如果你想在python中去访问需要更高级的特殊访问口令,这里只简要的介绍如何上手这一切都建立在您的开发者账号,已经通过了facebook的验证的前提下才能使用,切记from facebook import GraphAPIaccess_token = ' ......' 在这里导入...原创 2019-03-27 11:34:29 · 1622 阅读 · 0 评论 -
Facebook Splash 登录爬虫
背景这个facebook登录的方法是我偶然间发现的,之所以把它公布呢,是因为facebook的爬虫项目公司在看完我做的facebook cookie压力测试后,和预期目标差的有点多,就停止了,以后启用也不会是这个方法了,所以我才会公布出来。关于splash代码是需要splash的,关于splash大家可以去看看别的博主所作的介绍,我在这里就不多描述了,你只要知道它其实是一个js渲染服务就行了...原创 2019-03-26 19:00:27 · 5836 阅读 · 15 评论 -
Java使用Selenium+ChromeDriver 爬取中国知网
Java使用Selenium 爬取中国知网所需Jar包中国知网的网页结构,我就不在这里赘述了,自己去看,这里我操作的是爬取博硕论文,只抓取前十页当Selenium无法调取ChromeDriver时可参考以下建议:1.chromedriver是否与当前Chrome版本兼容 2.chromedriver是否放置在Chrome安装目录下 3.chromedriver是否配置环...原创 2018-07-05 12:53:14 · 8067 阅读 · 2 评论 -
Java 知网博硕论文信息爬虫
知网博硕论文信息爬虫声明 代码首先声明这段代码,是我刚毕业进公司写的,整个爬虫系统我还没写完,就被调去学python支援公司的某个项目去了,所以代码距离我写文章时候,其实已经过去了大半年有余了,代码后面因为项目的终止,再也没更新过,其中需要说明的是Tools类不能使用,因为这是以前公司大佬写的底层解析HTML的类,建议你使用Jsoup或者正则表达式去解析HTML文本。这只是个爬取信息的爬虫,...原创 2019-03-20 15:18:51 · 1908 阅读 · 0 评论 -
python 解决网页文本乱码
python3 解决网页文本乱码python解决网页乱码,网页乱码有几种:1.编码的问题如:utf-8, iso, gbk 等等,这些你可以使用python的chardet包去检验它是哪种编码,从而匹配相应的编码格式,就能解决。2.非编码问题:最近的碰到的,scrapy抓下来的网页,无论怎么匹配编码格式都不正确,chardet结果为None,这种情况多半是因为,服务器传过来的网页文本是经过...原创 2019-01-21 19:52:37 · 1009 阅读 · 0 评论 -
python爬虫之多线程、多进程爬虫
一、原因多线程对爬虫的效率提高是非凡的,当我们使用python的多线程有几点是需要我们知道的:1.Python的多线程并不如java的多线程,其差异在于当python解释器开始执行任务时,受制于GIL(全局解释所),Python 的线程被限制到同一时刻只允许一个程执行这样一个执行模型。2.Python 的线程更适用于处理 I/O 和其他需要并发行的阻塞操作(比如等待 I/O、等待从数据库获取...原创 2019-05-09 17:22:00 · 43001 阅读 · 32 评论 -
python 爬虫之scrapy-splash 带cookie请求示例
简单示例这是一个scrapy + splash 带cookie请求网站的示例,适用于需要登录且是js渲染的网站抓取。1.首先需要导入这些包:2.编写起始方法:在方法里,SplashRequest是启动splash的方法,其他你如果是想完成登录操作的话,你可以使用SplashFormRequest方法带参登录。3. 在lua里设置请求头:众所周知,splash可以通过lua进行调用,...原创 2019-05-07 12:23:40 · 3856 阅读 · 2 评论 -
python爬虫利器之faker_useragent构造user-agent池
原因一部分网站反爬,会通过检查请求的请求头里是否有浏览器的user-agent来判断请求是否是爬虫。当你在请求头里加上user-agent,然后,进行反复的请求后,系统又会判断请求时爬虫,因为单一版本浏览器请求过多,为了达到以假乱真的目的,你需要构建一个user-agent池,然后随机调用,那样相对比较繁琐但有效,如果你不想构造池呢,请看下面。解决方法pip install fake_use...原创 2019-05-12 10:42:17 · 3716 阅读 · 3 评论 -
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 · 2947 阅读 · 0 评论 -
在UbuntuServer后台运行python脚本
原因爬虫的python脚本,生怕网络连接不稳定导致脚本停止。nohup python3 something.py & nohup挂起,后面加&符号即可,没有指定日志文件输出在哪,就会在同级文件夹nohup.out输出日志。...原创 2019-08-27 15:40:31 · 486 阅读 · 0 评论 -
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 · 2624 阅读 · 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 · 808 阅读 · 2 评论 -
scrapy splash 504错误解决以及若干建议
原因:使用splash经常出现504 get-away错误,很头疼,查了一圈,在官方文档那里的到若干建议或者说解决注意方法。splash 504原因官方解释:HTTP 504错误意味着对Splash的请求花费超过超时秒数(默认为30秒) - Splash在超时后中止脚本执行。 要覆盖超时值,请将’timeout’参数传递给您正在使用的Splash端点。 请注意,允许的最大超时值受最大超时设置...原创 2019-07-02 16:13:38 · 3444 阅读 · 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 · 261 阅读 · 0 评论