【问题标题】:Web scraping with Python modules urllib2 and BeautifulSoup使用 Python 模块 urllib2 和 BeautifulSoup 进行网页抓取
【发布时间】:2016-02-29 02:35:09
【问题描述】:

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

【问题讨论】:

    标签: python-2.7 web-scraping beautifulsoup urllib2


    【解决方案1】:

    您可以发布错误消息吗?还是只是屏幕不显示汉字的问题?

    尝试切换到 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()
    

    【讨论】:

    • 谢谢。我只是将“gb2312”更改为“gb18030”并再次运行脚本,但得到了相同的结果。添加了错误信息的截图。
    • 嗯。这对我有用。您发布的错误消息是 BeautifulSoup 错误。你有什么版本的BS? python -c "import bs4; print bs4.__version__"
    • 版本为4.4.1。我尝试了其他一些在线发布的方法,但仍然没有任何线索。新方式不打印任何内容。
    猜你喜欢
    • 2020-08-09
    • 1970-01-01
    • 1970-01-01
    • 2020-10-04
    • 2021-01-31
    • 1970-01-01
    • 2018-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多