
爬虫
yugu2day
这个作者很懒,什么都没留下…
展开
-
Scrapy logging日志重复输出的解决方法
如果是完全在scrapy流程中的日志,一般有三种输出方式。from scrapy.log import loggerlogger.info("info")# 会抛出warning,警告scrapy.log已经被废弃,此时的logger为 scrapy.log# ScrapyDeprecationWarning: Module `scrapy.log` has been depreca...原创 2020-04-08 19:08:18 · 1835 阅读 · 6 评论 -
【爬虫】Python http.client能拿到数据而requests状态码异常
遇到一个case,抓包之后丢进postman无法正常拿到数据,使用curl和requests时也无法正常取到数据。而java,go,python的http.client库可以正常取到数据。当url和headers相同时,不同库的请求拿到结果不同。对requests和http.client请求抓包进行对比。headers一个个看过去发现requests多了一个accept请求头,那accept请求...原创 2020-03-18 10:23:39 · 734 阅读 · 0 评论 -
scrapy请求头首字母大写的解决方法
背景:同样的url, headers, payload进行post请求,requests可以正确的拿到数据,而scrapy则无法通过验证。通过抓包发现,scrapy所发出的请求头首字母均为大写,在postman中将请求头的各个key改为小写后能正确拿到请求数据。原因:scrapy的Request对象通过传入的headers字典初始化了一个scrapy.http.Headers对象,Head...原创 2020-01-09 12:01:58 · 1616 阅读 · 1 评论 -
uiautomatorviewer报错:java.lang.reflect.InvocationTargetException
在使用uiautomatorviewer对设备进行截屏时,出现异常Unexpected error while obtaining UI hierarchy java.lang.reflect.InvocationTargetException解决方法:通过android studio对sdk tool进行了更新,从25.x 升级到了26.1.1升级后sdk manager没有界面了,ui...原创 2019-12-16 20:50:02 · 2526 阅读 · 0 评论 -
在linux服务器上搭建mitmproxy
pip install mitmproxymitmdump --listen-host 0.0.0.0 -p 5555如果服务器与手机不在同一局域网,确定手机能连通服务器的情况下,启动mitmproxy时增加–set block_global=false...原创 2019-12-14 16:58:17 · 1139 阅读 · 0 评论 -
【Pyppeteer】ConnectionError:Connection is closed解决办法
想着用Pyppeteer写一个渲染web页面的接口,测试的时候发现过不了多久。常驻的browser在newPage()创建的时候就会报错。一直提示Connection is closed。这种情况应该也适于其他连接异常的情况。出现这种情况的原因是建立连接是通过websocket库,而websocket连接默认过期时间是20s,所以经过20s后连接断开也就无法控制浏览器了。解决方法:在...原创 2019-04-18 15:04:29 · 9610 阅读 · 0 评论 -
(六)Scrapy的抓取流程——Downloader
当通过Scheduler取出一条request之后,engine就会调用_download方法进行对这条request的下载。图中downloader的fetch方法就是下载器对request的操作方法。通过DownloaderMiddlewareManager在download方法中定义了process_request, process_response, process_excepti...原创 2019-04-26 19:44:23 · 482 阅读 · 0 评论 -
(三)Scrapy的抓取流程——CrawlerProcess
上一章提到scrapy的启动是通过ScrapyCommand对象中的crawler_process实现的,crawler_process是通过crawler.py下的CrawlerProcess类创建的实例。该文件下定义了Crawler,CrawlerProcess和CrawlerRunner三个类。CrawlerProcess是CrawlerRunner的子类,而命令文件中的self.craw...原创 2019-04-09 20:25:33 · 5848 阅读 · 0 评论 -
(一)Scrapy的命令行
最近一直都是在用自己写的抓取框架做爬虫,还是系统的整理一下Scrapy相关的知识,做一个old school 的爬虫。爬虫的整个流程,就是发送网络请求,处理返回的内容两个过程。然后我们将这个流程细化;如何准备需要访问的链接,需要访问的链接应该是哪些链接;发送请求时我们带上什么,如何更快的发送更多请求;对返回的内容需要做哪些操作……不讲实例,只看实现。从Scrapy的源码来读Scrapy到底是如...原创 2019-04-02 20:12:36 · 6041 阅读 · 0 评论 -
(五)Scrapy的抓取流程——Scheduler
在Engine中,是通过Engine实例化的slot对象进行对scheduler对象的初始化,和任务状态的记录。# engine.py中ExecutionEngine的crawl方法def crawl(self, request, spider): assert spider in self.open_spiders, \ "Spider %r not opened w...原创 2019-04-11 20:04:33 · 2747 阅读 · 0 评论 -
(四)Scrapy的抓取流程——Engine
上一篇提到在Crawler的crawl方法中,启动了Engine。而如Scrapy流程图中描述的,抓取的流程由Engine主导完成。engine是ExecutionEngine的实例,初始化时会初始化诸如scheduler、downloader、scraper(itempipeline和spidermiddleware这一块)等属性。engine.py所在的目录,抓取流程中的主要模块。E...原创 2019-04-10 20:41:27 · 1012 阅读 · 0 评论 -
【爬虫】使用Selenium爬取腾讯漫画
目标:以自动下载指定漫画的最新一话为例,或下载某部指定漫画。 思路:因为在漫画页内漫画图片地址是动态加载出来的,因此选用Selenium进行浏览器的模拟操作,处罚js行为进行地址的加载。再获取到图片地址后进行下载。每部漫画的地址都是有一个固定的id,可以直接请求指定漫画的详情页。ROOT_URL = "http://ac.qq.com"TargetUrls = [ ROOT_U...原创 2018-03-14 11:59:01 · 8592 阅读 · 5 评论 -
xpath中匹配正则表达式
etree = lxml.html.fromstring(html) ns = {“re”: “http://exslt.org/regular-expressions“} etree.xpath(“//div[re:match(@class,’<正则表达式>’)]”, namespace=ns) 用正则表达式匹配有规律的某种属性...原创 2018-05-29 18:16:05 · 21083 阅读 · 9 评论 -
pymysql.err.InterfaceError: (0, '')解决办法
背景在使用手机模拟器抓取数据时,通过mitmproxy进行返回数据的解析存储。 因为不清楚mitmproxy在设置脚本后是一次开启还是每次请求都会运行一次,所以在脚本里直接开启了数据库连接并没有关闭。 写好脚本后,在爬取过程中,时间过久后会报错pymysql.err.InterfaceError: (0, ”) 在response方法里关闭数据库也没有什么用,甚至存不进数据库。解决...原创 2018-06-08 09:54:42 · 29466 阅读 · 0 评论 -
python selenium带插件启动
from selenium import webdriveroptions = webdriver.ChromeOptions()options.add_extension("xxx.crx")browser = webdriver.Chrome(chrome_options=options)原创 2018-06-20 15:37:41 · 3294 阅读 · 0 评论 -
Message: 'chromedriver' executable needs to be in PATH的处理
下载与chrome对应版本的chromedriver,解压后放入chrome的文件夹下,并将该路径添加到环境变量。如:C:\Program Files (x86)\Google\Chrome\Application下载地址添加环境变量后仍然没有用的情况下,将chromedriver 放入python解释器目录下。如虚拟环境下的venv/Scripts...原创 2018-10-26 16:29:12 · 499 阅读 · 0 评论 -
Fiddler抓部分app时网络连接失败
通过fiddler抓app时,在安装手机安装fiddler证书后,发现有的app可以正常联网,有的app连不上网,如知乎、微博。在Options-HTTPS 取消勾选Decrypt HTTPS traffic后一切正常。...原创 2018-11-08 16:07:16 · 16865 阅读 · 20 评论 -
【爬虫】一道爬虫面试题
最近在群里看到老哥提到这题面试题,刚好有关js的混淆。自己撸一下思路怎么做。http://shaoq.com:7777/exam这里第一行的字除了python和题都是由css给span标签设置的style。直接对这个地址进行访问的话,返回的内容只是设置了5.5秒后进行了一次地址的重定向。并对cookie进行了一次设置所以可以通过session保存cookie后重复访问这一链接,但是...原创 2019-03-14 15:44:25 · 1232 阅读 · 0 评论 -
(二)Scrapy的初始化
初始化一个scrapy项目时往往是通过startproject 和 genspider两个命令。了解scrapy进行命令输入时的逻辑是怎样实现的之后,我们可以看看commands文件夹下这两个命令是如何运行的。(1) startproject当我们新建一个项目时通过scrapy startproject <project_name> [project_dir] 命令实现。输入...原创 2019-04-03 21:07:29 · 1293 阅读 · 0 评论 -
【爬虫】Python使用requests爬取代理IP并验证可用性
在编写爬虫的过程中为了避免IP地址被Ban掉,可以通过抓取IP代理后,通过代理IP进行对网页的访问。网络上有很多提供免费代理IP的网站,我们可以选择西刺进行代理IP的爬取并存储到csv文件中,并通过多进程来验证爬取IP的可用性。http://www.xicidaili.com/就提供了很多免费的代理IP。通过requests和lxml进行网页的爬取和解析。 在爬取之前我们首先设置请求头,...原创 2018-03-08 15:12:30 · 9071 阅读 · 0 评论