当相同的代码适用于另一个 url 时,我不知何故无法从我使用 urllib2.urlopen() 获取的 Guardian 文章中创建汤。这是我的代码:
import urllib2
from bs4 import BeautifulSoup
url = 'http://www.guardian.co.uk/sport/2012/mar/29/jessica-ennis-london-2012'
myfile = urllib2.urlopen(url)
data = myfile.read()
soup = BeautifulSoup(data)
这会触发以下错误:
回溯(最近一次调用最后):文件“/home/myhome/workspace/guardiangrep/testing.py”,第 13 行,soup = BeautifulSoup(数据)文件“/usr/lib/python2.7/site-packages/beautifulsoup4 -4.0.2-py2.7.egg/bs4/ init .py”,第 168 行,在init self._feed() 文件“/usr/lib/python2.7/site-packages/beautifulsoup4-4.0.2-py2 .7.egg/bs4/初始化.py”,第 181 行,在 _feed self.builder.feed(self.markup) 文件“/usr/lib/python2.7/site-packages/beautifulsoup4-4.0.2-py2.7.egg/bs4/builder/ _htmlparser.py”,第 133 行,在提要 parser.feed(markup) 文件中“/usr/lib/python2.7/HTMLParser.py”,第 108 行,在提要 self.goahead(0) 文件中“/usr/lib/ python2.7/HTMLParser.py”,第 148 行,在 goahead k = self.parse_starttag(i) 文件“/usr/lib/python2.7/HTMLParser.py”,第 229 行,在 parse_starttag endpos = self.check_for_whole_start_tag(i ) 文件 "/usr/lib/python2.7/HTMLParser.py",第 304 行,在 check_for_whole_start_tag self.error("malformed start tag") 文件 "/usr/lib/python2.7/HTMLParser.py",第 115 行, 错误引发 HTMLParseError(message, self.getpos()) HTMLParser.HTMLParseError:格式错误的开始标签,第 3025 行第 16 列
我了解标题在这种情况下可能是有用的信息。如果我添加
headers = myfile.info()
print headers
我明白了
服务器:Apache X-GU-jas:05-1559 变化:Accept-Encoding,User-Agent X-GU-gen-jas:05 Content-Type:text/html;charset=UTF-8 P3P: CP="CAO CURa ADMa DEVa TAIa PSAa PSDa IVAa IVDa CONa TELa OUR IND ONLi UNI PURi NAV STA PRE LOC" Date: Fri, 30 Mar 2012 09:10:54 GMT X-GU-PageRenderer: DefaultPageRenderer Keep-Alive: timeout=5, max=70 Transfer-Encoding: chunked X-GU-tm: 01 Content-Language: en-US Connection: close X-GU-httpd: 05
非常感谢任何帮助。
编辑:恢复到 BeautifulSoup 3 似乎纠正了这个问题。令人费解!