![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
爬虫
Kwoky
这个作者很懒,什么都没留下…
展开
-
利用grequest 实现高并发爬虫
利用grequest 实现高并发爬虫grequests模块GRequests是一个用requests和gevent写的异步http请求库。实现了真正的多并发请求,通过size参数设置一下同时并发数。grequests底层使用的是requests,因此它支持GET,OPTIONS, HEAD,POST,PUT,DELETE 等各种http方法。安装pip install grequests使用实例化请求对象: grequests.request(method, url, *..原创 2020-12-21 18:56:59 · 4060 阅读 · 1 评论 -
Scrapy中传入自定义参数
通常我们执行Scrapy的时候是类似这样的:scrapy crawl spiderName在加入参数后我们可以这样执行:scrapy crawl spiderName -a parameter1=value1 -a parameter2=value2爬虫文件中可以获取这些参数:class MySpider(Spider): name = 'myspider' ... def parse(self, response): ... if sel...原创 2020-12-04 08:55:00 · 3110 阅读 · 0 评论 -
安卓模拟器连接端口一览表
模拟器名称 端口号-------------------------------------逍遥游 21503夜神模拟器 62001海马玩模拟器 26944网易mumu模拟器 7555天天模拟器 6555Blu...原创 2020-10-23 18:15:07 · 4336 阅读 · 0 评论 -
详解cookie的属性
name属性name属性是必需的,它是一个键值对,用于指定Cookie的键。value属性value属性是必需的,它是一个键值对,用于指定Cookie的值。expires属性expires属性用于指定Cookie过期时间。它采用UTC或GMT格式,比如通过new date().toUTCString()或new Date().toGMTString()获取到的Thu, 09 Aug 2018 03:17:40 GMT。如果不设置该属性,或者设为null,Cookie只在当前会话(sessio原创 2020-08-04 18:18:19 · 3047 阅读 · 0 评论 -
scrapy实现布隆过滤器对接
Bloom FilterBloom Filter,中文名称叫作布隆过滤器,是1970年由Bloom提出的,它可以被用来检测一个元素是否在一个集合中。Bloom Filter的空间利用效率很高,使用它可以大大节省存储空间。Bloom Filter使用位数组表示一个待检测集合,并可以快速地通过概率算法判断一个元素是否存在于这个集合中。利用这个算法我们可以实现去重效果。Bloom Filter的算法在Bloom Filter中使用位数组来辅助实现检测判断。在初始状态下,我们声明一个包含m位的位数组,它原创 2020-07-22 09:32:55 · 2915 阅读 · 0 评论 -
【转】http与https代理中的差异及细节
前提:HTTP/1.1中,默认开启长连接,如客户端不需要,需要加上请求首部connection:close告知服务器。如服务器不支持长连接,则需要加上响应首部connection:close告知客户端,否则需要加上响应首部connection:keep-aliveHTTP/1.0中,默认不开启长连接,如客户端需要,需要加上请求首部connection:keep-alive告知服务器。如服务器不支持长连接,则需要加上响应首部connection:close告知客户端,否则需要加上响应首部connectio原创 2020-07-13 17:04:03 · 2709 阅读 · 1 评论 -
SOCKS5代理
SOCKS协议SOCKS:防火墙安全会话转换协议 (Socks: Protocol for sessions traversal across firewall securely) SOCKS协议提供一个框架,为在 TCP和UDP域中的客户机/服务器应用程序能更方便安全地使用网络防火墙所提供的服务。协议工作在OSI参考模型的第5层(会话层),使用TCP协议传输数据,因而不提供如传递 ICMP信息之类的网络层网关服务。SOCKS代理采用socks协议的代理服务器就是SOCKS服务器,是一种通用的代原创 2020-06-30 16:45:45 · 6270 阅读 · 0 评论 -
chrome:initiator
Initiator:发送请求的对象,主要包含Parser和ScriptInitiator: The object or process that initiated the request. It can have one of the following values:发起请求的对象或进程。它可以具有以下值之一:1.Parser - Chrome’s HTML parser initi...原创 2020-04-22 13:58:29 · 4227 阅读 · 0 评论 -
框架
框架(Framework)是一个框子——指其约束性,也是一个架子——指其支撑性。 IT语境中的框架,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构。在此结构上可以根据具体问题扩展、安插更多的组成部分,从而更迅速和方便地构建完整的解决问题的方案。也就是说:1)框架本身一般不完整到可以解决特定问题;2)框架天生就是为扩展而设计的;3)框架里面可以为后续扩展的组件提供很多辅助性、支...原创 2020-04-20 08:41:28 · 2376 阅读 · 0 评论 -
scrapyd部署遇到的问题
scrapyd部署遇到的问题最近在scrapyd部署时,用了无数变了,老司机还是翻车了:File "d:\python\virtualenv\env11\lib\site-packages\scrapyd\utils.py", line 140, in get_spider_list tmp = out.decode('utf-8').splitlines(); ...原创 2020-04-14 19:19:29 · 3011 阅读 · 1 评论 -
内置spider中间件含义
DepthMiddlewareclassscrapy.contrib.spidermiddleware.depth.DepthMiddlewareDepthMiddleware是一个用于追踪每个Request在被爬取的网站的深度的中间件。 其可以用来限制爬取深度的最大深度或类似的事情。DepthMiddleware 可以通过下列设置进行配置(更多内容请参考设置文档):DEPTH_LIMIT...原创 2020-04-09 20:18:46 · 2445 阅读 · 0 评论 -
scrapy中使用讯代理动态转发
scrapy源代码中查找http11.py文件,相对路径为:Lib/site-packages/scrapy/core/downloader/handlers/http11.py找到下面内容,注释掉:if isinstance(agent, self._TunnelingAgent): headers.removeHeader(b'Proxy-Authorization')否则p...原创 2020-04-09 19:08:19 · 3358 阅读 · 2 评论 -
pyquery UnicodeDecodeError的问题
pyquery加载本地html文件:from pyquery import PyQuery as pqtest_html = pq(filename = './data/test.html')遇到了编码问题:Traceback (most recent call last): File "E:/Python/pythoncode/scrapy/21_pyquery/demo_p...原创 2020-03-28 10:51:18 · 2694 阅读 · 0 评论 -
win10下安装pyspider总结
win10下安装pyspider有很多坑,为了记录下来,专门新建了虚拟环境从头安装加以记录,所有出错信息和截图均来自安装过程,不对你的症请找其他大夫,不喜勿喷。安装:pip install pyspider启动:pyspider报错: File "d:\Python\virtualEnv\env10\lib\site-packages\pyspider\webui\app.p...原创 2020-03-28 09:40:29 · 3017 阅读 · 0 评论 -
execjs执行接js报编码错误的解决方法
python 使用execjs执行接js时报错UnicodeDecodeError:Exception in thread Thread-5:Traceback (most recent call last): File "d:\python\python36\Lib\threading.py", line 916, in _bootstrap_inner self.run()...原创 2020-03-13 15:17:55 · 3790 阅读 · 0 评论 -
celery 定时任务不执行的问题解决
在使用celery 执行定时任务时,发现任务不会执行原因:celery使用的是UTC时区解决办法:定时需要设置的时区在配置文件中指定:CELERY_TIMEZONE = 'Asia/Shanghai'CELERY_ENABLE_UTC=True在程序中指定:app.conf.enable_utc = Falseapp.conf.timezone = "Asia/Sh...原创 2020-02-28 19:51:11 · 7559 阅读 · 5 评论 -
python中demjson的使用
python的json模块只能解析规则的json字符串,即字典的key要用双引号。安装:pip install demjson用法:encode() 将 Python 对象编码成 JSON 字符串decode() 将已编码的 JSON 字符串解码为 Python 对象demo:import demjsond = {"title":"叶问4:完结篇"...原创 2020-02-20 12:33:52 · 3628 阅读 · 1 评论 -
lxml.etree.XMLSyntaxError问题的解决方法
lxml解析数据,在使用parse加载本地的html文件的时候出现报错:lxml.etree.XMLSyntaxError: xmlParseEntityRef: no name, line 18, column 258原因:html代码书写不规范,不符合xml解析器的使用规范解决的办法:使用parse方法的parser参数:parser = etree.HTMLParser(e...原创 2019-10-18 16:18:19 · 13707 阅读 · 4 评论 -
Error:Element is not clickable at point解决思路
一、由于存在JavaScript或AJAX调用,元素未被点击尝试使用ActionChainsactions = ActionChains(browser);actions.move_to_element(next_page_btn).click().perform();二、元素未被点击,它不在视口内很多网站的列表页不是立马返回所有内容,是根据视图来显示的。所以,我们就需要拖动滚动条来把...原创 2019-10-15 14:47:15 · 2876 阅读 · 0 评论 -
python保存csv文件内容每隔一行就有空行的问题
爬虫把item交给pipeline保存为csv文件,发现保存的文件里,每行内容后面都插入一个空行,有些教程去修改scrapy包里在CsvItemExporter的__init__ 的io.TextIOWrapper添加了newline='',但是我试了没有效果 self.file = open('data.csv', 'w',encoding='utf-8') ...原创 2018-06-18 18:54:37 · 5035 阅读 · 1 评论 -
win10下celery ValueError: not enough values to unpack (expected 3, got 0)错误的处理
win10上运行celery4.x就会出现问题:ValueError: not enough values to unpack (expected 3, got 0) 解决办法:pip install eventlet启动worker的时候加一个参数,如下:celery -A <mymodule> worker -l info -P eventlet...原创 2018-10-20 16:33:06 · 3774 阅读 · 0 评论 -
解决Python3 爬虫InsecureRequestWarning的问题
问题:使用Python3 requests发送HTTPS请求,已经关闭认证(verify=False)情况下,控制台会输出以下错误:InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://...原创 2018-11-03 21:25:55 · 3814 阅读 · 0 评论 -
selenium通过class属性识别空格分割多值的情况
http://www.baidu.com 页面中提交按钮:<input type="submit" value="百度一下" id="su" class="btn self-btn bg s_btn">class属性值中包括带有空格的多个值定位的方法:browser.find_element_by_css_selector(".btn.self-btn.bg.s_bt...原创 2018-12-14 16:16:48 · 2878 阅读 · 0 评论 -
selenium 获取某个元素的html
page_source属性,但是那个是获取整个网页的html而不是元素的html通过 get_attribute('innerHTML')的方式可以获取某个元素的html信息driver.find_element_by_id('tb-37327761306').get_attribute('innerHTML')...原创 2018-12-14 17:33:19 · 11940 阅读 · 0 评论 -
Python-requests内容编码问题
问题:用requests请求页面,用print(req.encoding)查看网页编码,有时候会显示:ISO-8859-1原因:requests会从服务器返回的响应头的 Content-Type 去获取字符集编码,如果content-type有charset字段那么requests才能正确识别编码,否则就使用默认的 ISO-8859-1. 一般那些不规范的页面往往有这样的问题.解决...原创 2019-02-25 16:00:55 · 2394 阅读 · 0 评论 -
selenium常见问题:element is not attached to the page document
问题:selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element is not attached to the page document解决办法:具体原因不明,试着加了等待时间,OK...原创 2019-03-29 22:05:21 · 4382 阅读 · 0 评论 -
关于provisional headers are shown 原因
有些网站想要查看请求header中相关信息,当刷新页面在发送http请求,审查元素查看网络,有时会出现请求头的信息无法查看,出现:provisional headers are shown。网上给出的原因很多:跨域,请求被浏览器拦截请求被浏览器插件拦截服务器出错或者超时,没有真正的返回强缓存from disk cache或者from memory cache,此时也不会显示实际分析...原创 2019-04-16 11:53:02 · 8658 阅读 · 0 评论 -
scrapy向spider传递不等的参数
如果希望spider定向爬取,就需要给spider传入参数首先在spider类中定义初始化函数def __init__(self, start_urls=None, number=5, *args, **kwargs): super(DouBanMovieSituationSpider, self).__init__(*args, **kwargs) self.start_...原创 2019-07-13 09:34:06 · 2437 阅读 · 0 评论 -
selenium配置chrome浏览器的选项
在使用selenium浏览器渲染技术,爬取网站信息时,默认情况下就是一个普通的纯净的chrome浏览器,而我们平时在使用浏览器时,经常就添加一些插件,扩展,代理之类的应用。相对应的,当我们用chrome浏览器爬取网站时,可能需要对这个chrome做一些特殊的配置,以满足爬虫的行为。常用的行为有:禁止图片和视频的加载:提升网页加载速度。添加代理:用于翻墙访问某些页面,或者应对IP访问频率限制...原创 2019-08-05 17:45:39 · 3459 阅读 · 0 评论 -
scrapy 速度优化
主要有三个设置项来控制下载器的容量:CONCURRENT_REQUESTS,CONCURRENT_REQUESTS_PER_DOMAIN和CONCURRENT_REQUESTS_PER_IP。CONCURRENT_REQUESTS设置项:提供了一个粗略的控制,无论如何不会有超过该数目的请求被并发下载。CONCURRENT_REQUESTS_PER_DOMAIN设置项:针对目标域名提供...原创 2019-08-13 22:29:59 · 3437 阅读 · 0 评论 -
selenium打开本地的html文件
browser = webdriver.Chrome()browser.get('file:///'+os.path.abspath('test.html'))os.path.abspath()方法返回的是文件的绝对路径原创 2019-08-20 22:28:05 · 7980 阅读 · 0 评论 -
chrome 快捷键CTRL+SHIFT+F
chrome 快捷键CTRL+SHIFT+F:所有请求返回内容中查找字符串,非常方便原创 2019-09-05 22:39:03 · 3153 阅读 · 0 评论 -
scrapyd异常job错误解决方法
scrapyd schedule job 时, 遇到错误 TypeError: init() got an unexpected keyword argument 'job' , 需要在spider的init_方法里添加 **kwargs 参数进入项目spiders目录, 修改pythonPosition.py文件里init 方法即可: def init(self, **kwargs):...原创 2018-10-16 18:24:31 · 3613 阅读 · 0 评论 -
xpath实现一个节点的后邻兄弟节点的选取
这是一个翻页的按钮链接,需要用写一个LinkExtractor对象匹配下一页链接,但是没有下一页按钮观察发现如下特征:1、span class ="main title"2、当前页的页码td下没有a标签,但是td下有u标签想根据这些特征用xpath定位到下一个td下的链接,涉及到了兄弟节点的访问://span[@class="main_title"]//td/u/.....原创 2018-10-16 11:46:48 · 10399 阅读 · 0 评论 -
BeautifulSoup解析出不含子节点的文本
tag_p = """<p> 目标文本 <a>子节点文本</a></p>"""bs4_p = BeautifulSoup(tag_p)print(bs4_p.p.contents)print(bs4_p.p.contents[0].strip())原创 2018-09-28 21:57:43 · 6551 阅读 · 0 评论 -
xpath解析网页中tbody问题
xpath解析网页是如果包含tbody标签,因为浏览器会对html文本进行一定的规范化,解析会报错去掉xpath中的tbody即可原创 2018-07-19 12:02:01 · 3101 阅读 · 0 评论 -
python3 urlopen打开包含中文的url的问题
打开包含中文的url时,报错:UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 10-12: ordinal not in range(128)解决方法:url = 'https://baike.baidu.com/item/比特币/4143690'url = parse.quote(url,...原创 2018-07-19 10:08:04 · 2623 阅读 · 0 评论 -
lxml解析本地HTML文件报错的问题
使用lxml.etree.parse()解析html文件,该方法默认使用的是“XML”解析器,所以如果碰到不规范的html文件时就会解析错误,报错代码如下:lxml.etree.XMLSyntaxError: Opening and ending tag mismatch: meta line 3 and head, line 3, column 87解决办法:自己创建html解析器,增...原创 2018-07-18 15:56:57 · 6489 阅读 · 4 评论 -
Filtered offsite request to 错误
用scrapy-redis进行数据爬取,遇到了问题:DEBUG: Filtered offsite request to 'www.xxx.com': 。。。 那就是request的地址和allow_domain里面的冲突而被过滤我的爬虫类继承自RedisSpider,是不需要写allowd_domains的解决方法:使用Request的参数dont_filter=True,即:yield Re...原创 2018-07-10 11:27:42 · 5317 阅读 · 1 评论 -
XX Spider.parse callback is not defined
scrapy报错之:XX Spider.parse callback is not defined解决办法:爬虫继承的父类改为CrawlSpider即可原创 2018-07-02 11:01:47 · 5288 阅读 · 1 评论