最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

python抓取并保存html页面时乱码问题的

来源:动视网 责编:小采 时间:2020-11-27 14:16:33
文档

python抓取并保存html页面时乱码问题的

python抓取并保存html页面时乱码问题的:在用Python抓取html页面并保存的时候,经常出现抓取下来的网页内容是乱码的问题。出现该问题的原因一方面是自己的代码中编码设置有问题,另一方面是在编码设置正确的情况下,网页的实际编码和标示的编码不符合造成的。html页面标示的编码在这里: 代码如下:
推荐度:
导读python抓取并保存html页面时乱码问题的:在用Python抓取html页面并保存的时候,经常出现抓取下来的网页内容是乱码的问题。出现该问题的原因一方面是自己的代码中编码设置有问题,另一方面是在编码设置正确的情况下,网页的实际编码和标示的编码不符合造成的。html页面标示的编码在这里: 代码如下:
 在用Python抓取html页面并保存的时候,经常出现抓取下来的网页内容是乱码的问题。出现该问题的原因一方面是自己的代码中编码设置有问题,另一方面是在编码设置正确的情况下,网页的实际编码和标示的编码不符合造成的。html页面标示的编码在这里:

代码如下:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

这里提供一种简单的办法解决:使用chardet判断网页的真实编码,同时从url请求返回的info判断标示编码。如果两种编码不同,则使用bs模块扩展为GB18030编码;如果相同则直接写入文件(这里设置系统默认编码为utf-8)。

import urllib2
import sys
import bs4
import chardet
reload(sys)
sys.setdefaultencoding('utf-8')
def download(url):
 htmlfile = open('test.html','w')
 try:
 result = urllib2.urlopen(url)
 content = result.read()
 info = result.info()
 result.close()
 except Exception,e:
 print 'download error!!!'
 print e
 else:
 if content != None:
 charset1 = (chardet.detect(content))['encoding'] #real encoding type
 charset2 = info.getparam('charset') #declared encoding type
 print charset1,' ', charset2
 # case1: charset is not None.
 if charset1 != None and charset2 != None and charset1.lower() != charset2.lower():
 newcont = bs4.BeautifulSoup(content, from_encoding='GB18030') #coding: GB18030
 for cont in newcont:
 htmlfile.write('%s
'%cont)
 # case2: either charset is None, or charset is the same.
 else:
 #print sys.getdefaultencoding()
 htmlfile.write(content) #default coding: utf-8
 htmlfile.close()
if __name__ == "__main__":
 url = 'http://www.gxlcms.com'
 download(url)

得到的test.html文件打开如下,可以看到使用的是UTF-8无BOM编码格式存储的,也就是我们设置的默认编码:

更多python抓取并保存html页面时乱码问题的相关文章请关注PHP中文网!

文档

python抓取并保存html页面时乱码问题的

python抓取并保存html页面时乱码问题的:在用Python抓取html页面并保存的时候,经常出现抓取下来的网页内容是乱码的问题。出现该问题的原因一方面是自己的代码中编码设置有问题,另一方面是在编码设置正确的情况下,网页的实际编码和标示的编码不符合造成的。html页面标示的编码在这里: 代码如下:
推荐度:
标签: 乱码 的时候 网页
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top