导航
  • JS逆向
...

python2.7 urllib2 抓取新浪乱码

stevenxxxx 2013-08-25 10:05:40
只有新浪是乱码,其它网站 百度啊qq啊都没问题

  1. import urllib2
  2. url="http://www.qq.com/"
  3. headers={"User-Agent":"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1"}
  4. req = urllib2.Request(url,headers=headers)
  5. response= urllib2.urlopen(req)
  6. html = response.read()
  7. print html


求助大师们
...全文
给本帖投票
5301 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
xghyxx 2013-11-06
  • 打赏
  • 举报
回复
用chardet模块查下采集的内容的编码,任何decode encode转成你想要的编码就行了。
hello_bonjour 2013-10-27
  • 打赏
  • 举报
回复
我的解决方案是,源码编码格式选择UTF-8,跟新浪的网页编码保持一致,所有问题就不见了。
完美算法 2013-10-12
  • 打赏
  • 举报
回复
这是编码问题
keepiton 2013-09-26
  • 打赏
  • 举报
回复
建议你试试这个
data = urllib2.urlopen(req)
    data = data.read()
    data = data.decode('unicode-escape')
    data = data.encode('utf-8')
crifan 2013-09-22
  • 打赏
  • 举报
回复
引用 15 楼 jeky198306 的回复:
报错的异常是 UnicodeDecodeError: 'gbk' codec can't decode bytes in position 2-3: illegal multibyte sequence
专门写了个总结,教你如何处理这类,不只是这一个,错误: 【整理】Python中遇到"UnicodeDecodeError: ‘gbk’ codec can’t decode bytes in position 2-3: illegal multibyte sequence"之类的编码或解码的错误时如何处理
crifan 2013-09-17
  • 打赏
  • 举报
回复
引用 12 楼 jeky198306 的回复:
你好,有个问题想请教下,我在eclipse中写的python脚本 (wxpython),文件头加了utf-8标识,python文件中有中文。 在eclipse中可以正常运行,工程编码是utf-8 在外面的文件夹,反键文件,点击打开,也可以运行,弹出窗口 但是在cmd中运行python 文件名,就报编码异常,这个可能是哪里的原因?谢谢~~ 异常在我另外一个电脑,明天发上来。
1."我在eclipse中写的python脚本 (wxpython),文件头加了utf-8标识,python文件中有中文。" 你自己确保文件本身也是UTF-8编码吧? 不清楚的话,去看: 【整理】Python中用encoding声明的文件编码和文件的实际编码之间的关系 2.“工程编码是utf-8” 自己确保是文件的编码。 3.“在外面的文件夹,反键文件,点击打开,也可以运行,弹出窗口” 什么叫做“反键文件”??? 4.“在cmd中运行python 文件名,就报编码异常” 写出你的具体用法。 最好有截图。
jeky_zhang2013 2013-09-17
  • 打赏
  • 举报
回复
报错的异常是 UnicodeDecodeError: 'gbk' codec can't decode bytes in position 2-3: illegal multibyte sequence
crifan 2013-09-16
  • 打赏
  • 举报
回复
引用 楼主 u011755500 的回复:
只有新浪是乱码,其它网站 百度啊qq啊都没问题

import urllib2
url="http://www.qq.com/"
headers={"User-Agent":"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1"}
req = urllib2.Request(url,headers=headers)
response= urllib2.urlopen(req)
html = response.read()
print html
求助大师们
1.前面有些人解释过了,你这个是编码问题。 关于编码,你需要了解的是: html中的charset: 【整理】关于HTML网页源码的字符编码(charset)格式(GB2312,GBK,UTF-8,ISO8859-1等)的解释 然后再去搞懂python中的字符串编码 Python专题教程:字符串和字符编码 然后就可以搞懂并自己处理了。 你这里,就是: 搞清楚你所要处理的网页的charset,然后对于得到的网页,去选择合适的编码去解码 举例: 你这里的: http://www.qq.com/ 查看网页源码是:
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
所以,你应该去用:
htmlUnicode = html.decode("GBK");
或:
htmlUnicode = html.decode("GB18030");
然后再去打印,就可以了。 2.另外,如果你之前发送http请求之前,给了accept-encoding为gzip等值的话,那么返回的是压缩后的二进制,也会导致你看起来以为得到的是乱码,所以也需要你先去解压缩,再去解码才可以。 3.如果在解码和编码时遇到错误UnicodeEncodeError或者是UnicodeDecodeError,则去看: 【总结】Python 2.x中常见字符编码和解码方面的错误及其解决办法 4.上面的内容,只算你要折腾网络抓取所需要了解的部分内容,其他更多的东西,我已整理至相关教程 感兴趣的话,自己去看: 和网络抓取有关的逻辑讲解,工具,示例代码,等等 详解抓取网站,模拟登陆,抓取动态网页的原理和实现(Python,C#等) 搞懂后,再去用具体语言实现,比如python: Python专题教程:抓取网站,模拟登陆,抓取动态网页 python处理html即字符串时需要搞懂的: Python专题教程:字符串和字符编码 python处理其他的,比如json,也要搞懂的: JSON详解 5.其他还有很多相关的内容,内容太多,就不一一贴出来了。 需要的可以联系我。
crifan 2013-09-16
  • 打赏
  • 举报
回复
引用 9 楼 jeky198306 的回复:
[quote=引用 3 楼 agui2200 的回复:] http://www.crifan.com/how_to_use_some_language_python_csharp_to_implement_crawl_website_extract_dynamic_webpage_content_emulate_login_website/
很不错,有收获![/quote] 那是我的帖子。。。 你要是知道我写的教程,会发现更不错: 上面那个帖子,也已整理到下面的教程中了。 专门解释网络抓取方面的事情的: 详解抓取网站,模拟登陆,抓取动态网页的原理和实现(Python,C#等) 再去解释,和python实现网络抓取的: Python专题教程:抓取网站,模拟登陆,抓取动态网页
jeky_zhang2013 2013-09-14
  • 打赏
  • 举报
回复
引用 3 楼 agui2200 的回复:
http://www.crifan.com/how_to_use_some_language_python_csharp_to_implement_crawl_website_extract_dynamic_webpage_content_emulate_login_website/
很不错,有收获!
iasky 2013-09-14
  • 打赏
  • 举报
回复
应该是gzip压缩的了,你处理下内容就好了 参见:http://obmem.info/?p=753
panghuhu250 2013-08-25
  • 打赏
  • 举报
回复
引用 6 楼 panghuhu250 的回复:
好像是gbk编码的,print html.decode('gbk')就可以。
啊,,,你说的是新浪,试了下www.sina.com的内容编码是utf-8.
panghuhu250 2013-08-25
  • 打赏
  • 举报
回复
好像是gbk编码的,print html.decode('gbk')就可以。

import urllib2
url="http://www.qq.com/"
headers={"User-Agent":"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1"}
req = urllib2.Request(url,headers=headers)
response= urllib2.urlopen(req)
html = response.read()
print html.decode('gbk')
ImN1 2013-08-25
  • 打赏
  • 举报
回复
从贴图看,似乎是一个压缩二进制文件流……gzip?
agui2200 2013-08-25
  • 打赏
  • 举报
回复
这个是咱们论坛的大神写的,我也是看了这个才来这边玩的,哈哈,写的很清楚了
agui2200 2013-08-25
  • 打赏
  • 举报
回复
http://www.crifan.com/how_to_use_some_language_python_csharp_to_implement_crawl_website_extract_dynamic_webpage_content_emulate_login_website/
stevenxxxx 2013-08-25
  • 打赏
  • 举报
回复
引用 1 楼 agui2200 的回复:
编码问题看了吗?


返回的不知道是什么
agui2200 2013-08-25
  • 打赏
  • 举报
回复
编码问题看了吗?

37,744

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧

手机看
关注公众号

关注公众号

客服 返回
顶部