最近我尝试使用urllib2和BeautifulSoup来提取一些网页的源代码,但由于输出了不正确的代码而失败。脚本如下(在Python IDLE中运行)
import urllib2
from bs4 import BeautifulSoup
web = "http://www.qq.com"
page = urllib2.urlopen(web)
soup = BeautifulSoup(page, "html.parser")
print soup.prettify()
我发现"http://www.qq.com"是gb2312,所以在上面的脚本中添加了这样的内容:
import urllib2
from bs4 import BeautifulSoup
web = "http://www.qq.com"
page = urllib2.urlopen(web)
soup = BeautifulSoup(page, "html.parser", from_encoding="gb2312")
print soup.prettify()
但结果令人沮丧。有什么解决方案吗?
错误消息截图:
错误消息
上周末,我在上面的代码中添加了模块sys,但它什么也不打印,这次没有警告。
#coding=utf-8
import urllib2
from bs4 import BeautifulSoup
import sys
reload(sys)
sys.setdefaultencoding('gbk')
web = "http://www.qq.com"
page = urllib2.urlopen(web)
soup = BeautifulSoup(page, "html.parser")
print soup.prettify()
您能发布错误消息吗?还是问题是它没有在屏幕上显示汉字?
尝试切换到gb18030编码。尽管页面上说它的字符集是gb2313,但一定有一个字符扰乱了解码。切换编码使我的终端输出从垃圾变成了中文字符(来源)
import urllib2
from bs4 import BeautifulSoup
web = "http://www.qq.com"
page = urllib2.urlopen(web)
soup = BeautifulSoup(page, "html.parser", from_encoding="gb18030")
print soup.prettify()