python3的urllib以及urllib2的报错问题

1.

urllib.urlencode(params)

换成

urllib.parse.urlencode(params)

2.

在python3.3后urllib2已经不能再用,只能用urllib.request来代替

response=urllib2.urlopen(‘

File "b.py", line 1, in <module>

ImportError: No module named ‘urllib2‘

response=urllib.urlopen(‘File "b.py", line 2, in <module>

http://www.baidu.com‘)

将urllib2给改为urllib.request即可正常运行

import urllib.requestprint(urllib.request.__file__)

3.

在学习爬虫的时候,用到postdata时,遇到了一个问题:

POST data should be bytes or an iterable of bytes

一开始以为是自己代码写的有问题,对照着教程和自己的代码,又没有错误。

在网上查了一下,可以用下面的一个语句解决。

data = urllib.parse.urlencode(values).encode(encoding=‘UTF8‘)

原文地址:https://www.cnblogs.com/chenlove/p/8996671.html

时间: 2024-07-30 12:40:40

python3的urllib以及urllib2的报错问题的相关文章

python3 load Iris.data数据集出现报错key words: b&#39;Iris-setosa&#39;

通过搜索原因,发现有可能是在对文件读取是编译出现了问题,并且Keyword中提示b'Iris-setosa',而我们的string转float函数中没有字母b,很奇怪.所以尝试将转换函数所有的string前加b.结果发现数据读取正常.下边附上转换函数: def iris_type(s): it = {b'Iris-setosa': 0, b'Iris-versicolor': 1, b'Iris-virginica': 2} return it[s] python3 load Iris.data

python3.6使用chardet模块总是报错ValueError: Expected a bytes object, not a unicode object

py3里,字符串,str类型,是unicode编码格式.其他类型都是byte,编码格式是gbk,utf-8等 而chardet是检查byte类型的编码格式的,不是检查str类型的编码格式的. a="abc啊",是字符串,就不能用chardet了. 当获取的数据(byte)类型,需要当成字符串来处理,需要先将其编码成unicode(python处理的都是此编码). 而要将bytes转换成unicode,需要先知道bytes具体是什么编码格式如gbk,然后使用aa=decode("

python3.7.3使用web.py报错解决办法 and RuntimeError: generator raised StopIteration

这是想要创建一个用python编写的web项目.但是首先要确定自己的web.py已经安装成功了. 安装的命令是: pip install web.py==0.40-dev1 运行官网的如下的实例: import weburls = ('/(.*)', 'hello')app = web.application(urls, globals()) class hello: def GET(self, name):if not name: name = 'World'return 'Hello, '

┱Python中关于urllib和urllib2的问题

python3对urllib和urllib2进行了重构主要拆分成了:1.urllib.request 1.urllib.request.Request(url, data=None, headers={}, method=None) url = r'http://www.lagou.com/zhaopin/Python/?labelWords=label' headers = { 'User-Agent': r'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleW

[python爬虫]使用urllib函数urlretrieve报错[socket error][Errno 10054]

为了练手,使用爬虫爬一个"你懂得"图床的,使用的是urlretrieve函数,不但速度慢,还总是会报错,不是open的timeout就是上面提到的socket error. 在网上找了许多办法诸如请求中加入headers.在调用urllib2.Request.urlopen().read()后需要调用close()等方法并未奏效. 由于不想麻烦scrapy等库,所以发现了个简单粗暴的办法: 直接使用urllib自带的open函数打开数据流,再以二进制写入文件保存: 参考代码段:其中注释

python3 报错:UnicodeDecodeError: &#39;utf-8&#39; codec can&#39;t decode byte 0xd6 in position 201: invalid continuation byte

代码: # -*- coding:utf-8 -*- from urllib import request resp = request.urlopen('http://www.xxx.com') print(resp.read().decode('utf-8')) 报错: Traceback (most recent call last): File "F:/workspace/python/py3/test_urllib.py", line 7, in <module>

【使用python urllib时出现[SSL: CERTIFICATE_VERIFY_FAILED]报错的解决方案】

"首先,这个报错是告诉你,你的证书有问题. 其次,出现这个问题的原因,在于Python本身. 问题原因 Python升级到2.7.9以后,引入了一个新特性. 当使用urllib打开https的链接时,会检验一次ssl证书. 而当目标网站使用的是自签名证书时,就会抛出urllib2.URLError的错误. · 所以在爬取https协议的网站或伪装请求头都会导致这个错误. *** 解决方案 方案一 全局取消证书验证 import ssl ssl._create_default_https_cont

pycharm调试python3报错

使用python3.4在pycharm里面启动调试,提示错误: 我擦嘞!!!!! 不是说python3解决了各种编码问题么..咋回事.. 后来看调试的源文件才发现,原来,是因为自己的文件头部没有指定文件的编码类型…… 在头部加上: # -*- coding: utf-8 -*- (当然,我这里这样写也是为了好看.实际上,只需# coding: utf-8 就行) 就好了. pycharm调试python3报错,布布扣,bubuko.com

本地同时安装python2和python3时pip报错

引言: 安装完成后,想测试一下两个版本的pip是否都可以正常工作,结果python3的能正常工作,但是pip2 --version就会报错,报错信息如下: Traceback (most recent call last): File "/usr/local/bin/pip", line 9, in <module> load_entry_point('pip==1.3.1', 'console_scripts', 'pip')() File "/usr/loca