文章目录

  • 1. 无法连接至pypi开源网站
  • 2. SSLError: wrong version number
  • 3. UnicodeEncodeError
  • 4. VS Code OUTPUT里无法输入
  • 5. 无法加载文件 E:\SpiderPractice\venv\Scripts\Activate.ps1
  • 6. 伪造User-Agent
  • 6. FakeUserAgentError
  • 7. BeautifulSoup中文乱码
  • 8. lxml.etree.XMLSyntaxError
  • 9. Running setup.py install for pycrypto ... error
  • 10. TypeError: string indices must be integers
  • 11. 写进csv格式每个字符都会后面加一个逗号
  • 12. 写进csv每行都会多一个空行

1. 无法连接至pypi开源网站

记录:起初无法通过pip install requests下载因为python的开源网站被墙了翻不过去,所以添加了一个安装包;

解决方法:也可以使用其他开源镜像网站,比如清华、阿里。

$ pip install pywinauto -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

2. SSLError: wrong version number

报错信息:在写好爬虫脚本后就出现了以下

requests.exceptions.SSLError: HTTPSConnectionPool(host='www.sogou.com', port=443): Max retries exceeded with url: /web?querry=%E5%91%A8%E6%9D%B0%E4%BC%A6 (Caused by SSLError(SSLError(1, '[SSL: WRONG_VERSION_NUMBER] wrong version number (_ssl.c:1076)')))

解决方法

关闭代理服务器,在登录搜狗浏览器时,我是随机启动sidecar加速器。

❓TODO:服务代理器会对URL访问有什么影响?

3. UnicodeEncodeError

报错信息:输入一个页面带汉字的网址后,爬取页面显示打印处出错

UnicodeEncodeError: 'gbk' codec can't encode character '\xbb' in position 103672: illegal multibyte sequence

报错原因:

使用utf-8遇见中文时会出现乱码,应更改为gb18030.
1.UTF-8:即国际通用字符编码,该编码方式囊括了世界各个国家及地区使用的字符集,尤其是对于英文字母的表示方法仅占用一个字节,很好的支持了欧美等国家的需要。优点:为了统一世界上各种编码而设计,通用性强。缺点:为了兼顾世界所有语言的字符,必须采用多位给字符编号,例如中文字符采用3字节编码方式,而gb18030采用2字节。
2.gb18030:是新出的国家标准。这个标准由国家强制执行(也是为了保证中国信息业的地位,以及争取一定的主动权),所以所有在中国大陆销售的操作系统必须支持gb18030。现在的Gb18030不仅包含了简体和繁体汉字,支持中国少数名族文字,还包含了日韩等国的象形文字。优点:兼容性好,与以前的国标码都兼容。缺点:对英文字母需要2个字节的编码。

解决方法:

import io
import sys
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='gb18030')

4. VS Code OUTPUT里无法输入

解决方法:

# 1.settings
# 2.搜索 run in terminal
# 3.在Run In Terminal前面打钩即可
# 4.然后程序就会在终端运行并可以输入

5. 无法加载文件 E:\SpiderPractice\venv\Scripts\Activate.ps1

报错信息:

& : 无法加载文件 E:\SpiderPractice\venv\Scripts\Activate.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的about_Execution_Policies

报错原因:

win10默认的执行策略是不载入任何配置文件,不运行任何脚本。

解决方法:

$ get-executionpolicy #查看策略权限,
$ Set-ExecutionPolicy -Scope CurrentUser RemoteSigned #修改策略

参考链接:CSDN

6. 伪造User-Agent

报错信息:在获取豆瓣高分电影时IP被封

# IP请求次数过多 请登录豆瓣

解决方法:获取伪造UA的库

$ pip install fake-useragent   #终端输入的pip install直接下载到当前文件夹 要复制到c盘的sites-pakage下面from fake_useragent import UserAgent  #不然这里会报红
ua = UserAgent()
ua.random

6. FakeUserAgentError

报错信息:最前面的信息也是有用的,每个错误都会报出详细的类型,虽然错误类型可能一样,但错误原因不一定都相同,解决问题的时候还是要看清别人解决方案解决的是什么问题,不要盲目尝试浪费时间。对症下药。

Error occurred during loading data. Trying to use cache server https://fake-useragent.herokuapp.com/browsers/0.1.11
...
raise FakeUserAgentError('Maximum amount of retries reached')
fake_useragent.errors.FakeUserAgentError: Maximum amount of retries reached

解决方案:

# 1. ctrl+click 信息中的网址:https://fake-useragent.herokuapp.com/browsers/0.1.11
# 2. 获取到页面信息,保存到当前python的临时存储路径中,查看路径方法:
import tempfile
print(tempfile.gettempdir())
# 3. 命名为fake_useragent_0.1.11.json

参考链接:CSDN 解决FakeUserAgentError

7. BeautifulSoup中文乱码

原代码

page_text = requests.get(url=get_url, headers=headers).text
soup = BeautifulSoup(page_text, 'lxml')

解决方法:将text换成content 就能解决乱码。当然还有一些其他方式。

page_text = requests.get(url=get_url, headers=headers).content
soup = BeautifulSoup(page_text, 'lxml')

8. lxml.etree.XMLSyntaxError

报错信息:

lxml.etree.XMLSyntaxError: Specification mandates value for attribute itemscope, line 2, column 27

报错原因:

html代码书写不规范,不符合xml解析器的使用规范

解决方法:

parser = etree.HTMLParser(encoding='utf-8')
tree = etree.parse('pagecontent.html', parser=parser)

9. Running setup.py install for pycrypto … error

报错信息:在执行安装pycrypto失败

Running setup.py install for pycrypto ... error
ERROR: Command errored out with exit status 1:

解决方法

pip install pycryptodome

10. TypeError: string indices must be integers

报错信息:用json按key访问时出现问题, 原因是text获取的是字符串不是json

print(response_json['current'])
TypeError: string indices must be integers

解决方法:

#主动加载成json格式
response = requests.post(url=post_url, data=data, headers=headers).text
response_json = json.loads(response)
response_list = response_json['list']
#直接以json格式获取
response = requests.post(url=post_url, data=data, headers=headers).json()
print(response['list'])

11. 写进csv格式每个字符都会后面加一个逗号

原代码:writerow接收元组,如果传进去的是一个字符串,一个字符串也是一堆字符串,每个字符都会加 ,

for row in response['list']:info = row['prodName']+row['avgPrice']+row['place']+row['unitInfo']csvwriter.writerow(info)

解决方法:换成元组传进去

for row in response['list']:info = (row['prodName'], row['avgPrice'], row['place'], row['unitInfo'])csvwriter.writerow(info)

12. 写进csv每行都会多一个空行

**解决方法:**加入newline=’ ’

f = open('vegetablesPrice.csv', mode='w', encoding="utf-8", newline='')

【爬虫Practice】学习过程中遇到的问题相关推荐

  1. 目标检测中如何定义正负样本,和正负样本在学习过程中loss计算起的作用

    如何定义正负样本,和正负样本在学习过程中loss计算起的作用 正负样本定义 分类和回归head如何学习和利用划分后的正负样本(loss如何计算) 正负样本在分类中loss计算的处理 正样本在bbox ...

  2. 心得丨走过最长的路,就是机器学习过程中的弯路

    营长的一位转型AI的朋友,最近对营长抱怨,"走过的最远的路,就是机器学习过程中的弯路",然后开始各种blablabla,从论文的坑,到模型的坑,再到培训的坑...一路吐槽. 尤其是 ...

  3. linux 学习过程中的坑之 find 正则表达式

    1 标准的正则表示式 格式 . 表示任意单个字符 * 表示任意次数 + 表示1次或1次以上 {3} 表示精确匹配次数为3次 {n,m}表示n次到m 次之间 ^ 行首锚定 $行尾锚定 \< 单词首 ...

  4. Refresh your Java skills–面对Java学习过程中的一些迷茫

    原文出自:https://muyinchen.github.io/2017/11/14/Refresh%20your%20Java%20skills–面对Java学习过程中的一些迷茫/ 很多时候,我们 ...

  5. java future用法_纯干货:Java学习过程中的21个知识点和技术点

    我们在Java学习过程中要学会抓重点,善于总结,Java学习过程中常见的21个知识点和技术点你知道吗?下面和千锋广州小编一起来看看吧! 1. JVM相关 对于刚刚接触Java的人来说,JVM相关的知识 ...

  6. Stream学习过程中遇到的一个问题记录

    Stream学习过程中遇到的一个问题记录 @Test public void stream_modifiedV2(){List<String> strings = Arrays.asLis ...

  7. 你走过最长的路 ,就是机器学习过程中的弯路

    营长的一位转型AI的朋友,最近对营长抱怨,"走过的最远的路,就是机器学习过程中的弯路",然后开始各种blablabla,从论文的坑,到模型的坑,再到培训的坑...一路吐槽. 2 尤 ...

  8. python爬虫开发环境中几个爬虫库的主要用途_分分钟了解Python爬虫

    一:Scrapy框架 在python爬虫时我们需要使用Scrapy框架,来提取结构化数据,他是Python开发的一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据 ...

  9. 本文主要讲述如何开通自己的博客。若读者不想或已经知道如何开通使用博客,那么就可以跳过。 一直以来,想把自己在学习过程中遇到的问题及解决办法共享给志同道合的人,那么如何分享自己的见解呢?有如下方法

    本 本文主要讲述如何开通自己的博客.若读者不想或已经知道如何开通使用博客,那么就可以跳过. 一直以来,想把自己在学习过程中遇到的问题及解决办法共享给志同道合的人,那么如何分享自己的见解呢?有如下方法, ...

  10. DeepMind用基于AI的元强化学习框架研究多巴胺在学习过程中的作用

    内容来源:ATYUN AI平台 最近,AI已经应用到一系列视频游戏中,如Atari经典的Breakout和Pong.尽管这样的表现令人印象深刻,但人工智能仍然依靠数千小时的游戏时间来达到并超越人类玩家 ...

最新文章

  1. Xamarin SimplerCursorAdapter 适配器(三)
  2. Visual Studio 2010构建Web浏“.NET研究”览器应用程序
  3. linux 服务器 iptables 防止arp病毒,让Linux系统有效防御ARP攻击的实用技巧
  4. 服务去获取配置中心配置
  5. 神器 Nginx 的学习手册 ( 建议收藏 )
  6. 图论 BZOJ 3669 [Noi2014]魔法森林
  7. Hibernate中saveOrUpdate()和merge()的区别
  8. python3.7安装步骤-python安装步骤_python 3.7.2安装教程
  9. 高旭东:科普返利网站模式,做到知己知彼放心购物!
  10. 读《Ideal MHD》(1)-磁流体力学方程组推导
  11. 如何将PC上的Word文档分享到朋友圈
  12. linux实现文件共享的方式,Linux文件共享的实现方式
  13. 6个哄自己开心的小技巧
  14. Excel去掉函数错误值#VALUE!的方法
  15. 指纹图像方向图matlab,基于Matlab实现的指纹图像细节特征提取
  16. Python提取PDF文档页面——PyMuPDF使用
  17. 陷波器的离散化及仿真验证
  18. Junit Test类报错Class not found XXX
  19. 什么是网络变压器共模抑制比?120dB与60dB的共模抑制比区别大吗?
  20. 2021-2027中国18650锂电池市场现状及未来发展趋势

热门文章

  1. 快速在同一个Web程序中集成扫描仪和手机摄像头
  2. 手机品牌、机型/浏览器市场份额查询
  3. 编写一个C程序,运行时输出以下图形:
  4. html给隐藏域赋值,selenium webDriver给隐藏域赋值 input hidden set value
  5. 一文带你了解程序员进入各种外包公司是如何工作的
  6. F-44处理未清项时未显示出某供应商的所有未清项
  7. HMS生态的华为主题样式太丰富了
  8. html表单设置单选框,html如何实现表单的选择框效果?单选框与多选框的实现(代码实例)...
  9. 来银行实习建议准备这样的自我介绍
  10. 根据路由器MAC地址精确计算PIN码第八位的方法