总结一下最近爬虫遇到的问题
最近爬虫的过程中遇到了不少代码的报错和问题,以下会分别将自己遇到的报错的代码和思考的问题写上作为一个记录,如果能够帮助遇到相同困难的人那就更好了!
1.Max retries exceeded with url: /cn/vl_star.php?&mode=&s=aentc&page=9 (Caused by SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:1129)')))
这是你挂了vpn,并且urllib3库的版本大于1.26造成的
2.(Caused by ProxyError('Cannot connect to proxy.', FileNotFoundError(2, 'No such file or directory')))
proxy顾名思义是代理的意思,这段代码是在request.get的过程中出现的,即如果用户通过设置如下代理代码出现的问题:
proxies = {"HTTP":'HTTP://178.62.16.161:811',"HTTPS":'HTTP://178.62.16.161:811'}
resp=requests.get('https://www.google.com',proxies=proxies)
3.Max retries exceeded with url: /cn/vl_star.php?&mode=&s=aentc&page=9 (Caused by ProxyError('Cannot connect to proxy.', ConnectionResetError(10054, '远程主机强迫关闭了一个现有的连接。', None, 10054, None)))
这段报错和上面的很类似,但是有一点差别,请读者仔细观看区别:
proxies={'http': 'http://178.62.16.161:811', "https": "http://178.62.16.161:811"}
resp = requests.get('https://www.google.com',proxies=proxies)
现在就1,2,3三段代码进行说明。
上述第1个代码报错的原因,是由于urllib3这个库的版本导致的,如果你的urllib3的库版本大于1.26,那么则会出现第一种情况。在此基础上,根据笔者的尝试发现,如果你写的代码和第3个类似,其中的字典的key的http或https都是小写,那么则会出现第3个代码的报错。如果你的字典的key的http或https都是大写,但是urllib3的库是大于1.26的,则会出现第2个代码的报错。
要解决这个问题,只需要pip install urllib3==1.25.11即可
在此笔者补充以下,部分网友可能会遇到pip install 库名 出现以下两种代码报错的情况
代码报错一、:
The repository located at pypi.doubanio.com is not a trusted or secure host and is being ignored
代码报错二、:
ERROR: Cannot unpack file C:\Users\ZHANGW~1\AppData\Local\Temp\pip-unpack-ikp51qe3\simple.htm (downloaded from C:\Users\ZHANGW~1\AppData\Local\Temp\pip-req-build-7u4k70qf, content-type: text/html); cannot detect archive format
ERROR: Cannot determine archive format of C:\Users\ZHANGW~1\AppData\Local\Temp\pip-req-build-7u4k70qf
一般来说,部分网友可能会在解决了第一个报错之后遇到第二个报错,这里可以统一的通过以下代码进行解决(pakegename即你要安装的库的名称):
pip install -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com pakegename
注意:如果你已经将urllib3的库重新安装为1.25.11的版本,那么你可以通过设置proxy代理ip,也可以通过直接挂vpn来进行request.get请求。
接下来是笔者解决了以上问题之后出现的其他一些问题。
1.于是我考虑换一种方式,使用selenium模拟登录,使用模拟登录基本解决了问题,但是笔者发现了一个小细节与刚刚提到的urllib3有关————笔者是通过虚拟环境安装的selenium,在按照selenium之前已经将urllib3重置为1.25.11的版本,安装完senium之后,笔者发现之前的代码又出现了报错,仔细一看才发现,selenium这个库必须要求urllib3大于1.26版本,否则无法使用,所以如果你两种方法都想尝试,记得这个可能出现的问题。
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
selenium 4.3.0 requires urllib3[secure,socks]~=1.26, but you have urllib3 1.25.11 which is incompatible.
2.在爬取某网页的时候发现返回的源代码和f12查看到的不一样,在设置了header头的cookie和agent之后,通过response.read().decode('utf-8')读取,结果发现报错了,报错代码如下:
"utf-8 codec can't decode byte 0x"
也查询了网上的一些方法,例如将原byte数据通过gbk进行解码等都不成功,仍然报错,最后发现,是自己在header头中除了cookie和agent还设置了如下代码:
"accept-encoding" : "gzip, deflate, br"
把这个代码添加到请求头就会导致返回的response是压缩了的编码,需要通过deflate算法进行解码,就必须要额外的设置了,所以最好的方法是直接不写"accept-encoding"这段
总结一下最近爬虫遇到的问题相关推荐
- html,xml_网页开发_爬虫_笔记
20220402 笔记本走手机热点,重连之后又是另一个ip 20220331 https://mp.weixin.qq.com/s/znXuCB0Fl32TbP_0UaO6SQ 爬虫相关知识快速复习 ...
- Python 爬虫框架Scrapy安装汇总
传统方式安装Scrapy(慎用) 练习了基本的操作之后,当然就要找框架来进行爬虫实验啊.于是就在网上找Windows 64安装Scrapy的方法,查到的都是非常繁琐的安装方式,由于Scrapy有很多个 ...
- Python:爬虫框架Scrapy的安装与基本使用
一.简单实例,了解基本. 1.安装Scrapy框架 这里如果直接pip3 install scrapy可能会出错. 所以你可以先安装lxml:pip3 install lxml(已安装请忽略). 安装 ...
- Python:从零搭建Redis-Scrapy分布式爬虫
Scrapy-Redis分布式策略: 假设有四台电脑:Windows 10.Mac OS X.Ubuntu 16.04.CentOS 7.2,任意一台电脑都可以作为 Master端 或 Slaver端 ...
- Python案例:使用XPath的爬虫
案例:使用XPath的爬虫 现在我们用XPath来做一个简单的爬虫,我们尝试爬取某个贴吧里的所有帖子,并且将该这个帖子里每个楼层发布的图片下载到本地. # tieba_xpath.py#!/usr/b ...
- Python案例:使用正则表达式的爬虫
案例:使用正则表达式的爬虫 现在拥有了正则表达式这把神兵利器,我们就可以进行对爬取到的全部网页源代码进行筛选了. 下面我们一起尝试一下爬取内涵段子网站: http://www.neihan8.com/ ...
- 关于Python爬虫原理和数据抓取1.1
为什么要做爬虫? 首先请问:都说现在是"大数据时代",那数据从何而来? 企业产生的用户数据:百度指数.阿里指数.TBI腾讯浏览指数.新浪微博指数 数据平台购买数据:数据堂.国云数据 ...
- python爬虫之Scrapy框架的post请求和核心组件的工作 流程
python爬虫之Scrapy框架的post请求和核心组件的工作 流程 一 Scrapy的post请求的实现 在爬虫文件中的爬虫类继承了Spider父类中的start_urls,该方法就可以对star ...
- Rstudio 实现 爬虫 文本分词 个性化词云设计--我爱中国我爱党
Rstudio 爬虫 文本分词个性化词云设计 目录 1.环境准备,加载依赖 2.rvest 爬虫,数据爬取 3.jiebaR用于分词,词频统计 4.wordcloud2 结果可视化 ========= ...
- 『Scrapy』爬虫框架入门
框架结构 引擎:处于中央位置协调工作的模块 spiders:生成需求url直接处理响应的单元 调度器:生成url队列(包括去重等) 下载器:直接和互联网打交道的单元 管道:持久化存储的单元 框架安装 ...
最新文章
- 窗口键 键位码_键盘上这些被冷落的键位居然有这么强大的功能
- 丰度决定了细菌在复杂群落中的功能作用
- self的含义,为什么类调用方法时需要传参数?
- 7.Redis常用命令:ZSet
- linux lvm uuid绑定,LVM:“找不到具有uuid的设备”但是blkid找到了UUID
- React开发(263):react中处理时间的判断
- std::vector中resize()和reserve()区别
- c语言中格式化字符串系列函数包括,解析C语言中常用的格式化输入、输出函数...
- 流量主系列|微信AI人脸转换小程序源码
- 多品类适合电商美工收藏|品质页面PSD模板
- SPOJ LIS2 Another Longest Increasing Subsequence Problem 三维偏序最长链 CDQ分治
- mysql 帮助文档使用
- 服装智能制造开启服装企业信息化建设
- SIM-MICRO-SIM- NANO SIM 区别
- 利用DroidCam将手机摄像头打造成电脑摄像头
- 破解Charles抓包工具
- libGDX游戏开发之NPC敌人事件(六)
- Redis开发运维实践开发者设计规范之延迟考虑
- Windows中的SysWow64文件夹
- 彻底理解Linux的各种终端类型以及概念