使用Python模块urllib2和BeautifulSoup进行Web抓取

时间:2015-11-26 05:26:13

标签: python-2.7 web-scraping beautifulsoup urllib2

最近我尝试使用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()

但结果令人沮丧。有没有解决方案?

错误消息的屏幕截图:

Error Message

上周末我在上面的代码中添加了模块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()

1 个答案:

答案 0 :(得分:0)

您可以发布错误消息吗?或者问题是它没有在屏幕上显示中文字符?

尝试切换到gb18030编码。尽管该页面的字符集是gb2313,但必须有一个字符会破坏解码。切换编码将我的终端输出从垃圾转换为中文字符(Source

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()