美丽的汤失去了节点



我使用Python和Beautifulsoup来解析html数据并从rss提要中获取p标签。但是,有些url会导致问题,因为解析的soup-object不包括文档的所有节点。

例如,我尝试解析http://feeds.chicagotribune.com/~r/ChicagoBreakingNews/~3/T2Zg3dk4L88/story01.htm

但是在将解析的对象与页面源代码进行比较后,我注意到ul class="nextgen-left"之后的所有节点都缺失了。

下面是我解析文档的方法:
from bs4 import BeautifulSoup as bs
url = 'http://feeds.chicagotribune.com/~r/ChicagoBreakingNews/~3/T2Zg3dk4L88/story01.htm'
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
request = urllib2.Request(url)
response = opener.open(request) 
soup = bs(response,'lxml')        
print soup

输入HTML不是很一致,所以这里必须使用不同的解析器。html5lib解析器正确处理该页:

>>> import requests
>>> from bs4 import BeautifulSoup
>>> r = requests.get('http://feeds.chicagotribune.com/~r/ChicagoBreakingNews/~3/T2Zg3dk4L88/story01.htm')
>>> soup = BeautifulSoup(r.text, 'lxml')
>>> soup.find('div', id='story-body') is not None
False
>>> soup = BeautifulSoup(r.text, 'html5')
>>> soup.find('div', id='story-body') is not None
True

相关内容

  • 没有找到相关文章

最新更新