Beautifulsoup失去节点(Beautifulsoup lost nodes)

2019-09-01 15:09发布

我使用Python和Beautifulsoup解析HTML的数据,并获得对标签进行RSS源的。 然而,某些URL导致问题,因为解析汤对象不包括该文件的所有节点。

比如我试图解析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

Answer 1:

输入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


文章来源: Beautifulsoup lost nodes