BeautifulSoup / lxml:大元素有问题吗?


import os, re, sys, urllib2
from bs4 import BeautifulSoup
import lxml
html = urllib2.urlopen("http://www.hoerzu.de/tv-programm/jetzt/")
soup = BeautifulSoup(html, "lxml")
divs = soup.find_all("div", {"class":"block"})
print len(divs)
输出:

ActivePython 2.7.2.5 (ActiveState Software Inc.) based on
Python 2.7.2 (default, Jun 24 2011, 12:21:10) [MSC v.1500 32 bit (Intel)] on win
32
Type "help", "copyright", "credits" or "license" for more information.
>>> import os, re, sys, urllib2
>>> from bs4 import BeautifulSoup
>>> import lxml
>>>
>>> html = urllib2.urlopen("http://www.hoerzu.de/tv-programm/jetzt/")
>>> soup = BeautifulSoup(html, "lxml")
>>> divs = soup.find_all("div", {"class":"block"})
>>> print len(divs)
2

我也试过:

divs = soup.find_all(class_="block")

有相同的结果…

但是有11个元素符合这个条件。所以有任何限制,如最大元素大小的比例。我怎样才能得到所有的元素?

最简单的方法可能是使用'html。解析器'代替'lxml':

import os, re, sys, urllib2
from bs4 import BeautifulSoup
import lxml
html = urllib2.urlopen("http://www.hoerzu.de/tv-programm/jetzt/")
soup = BeautifulSoup(html, "html.parser")
divs = soup.find_all("div", {"class":"block"})
print len(divs)

使用您的原始代码(使用lxml),它为我打印1,但这打印11lxml比较宽松,但不像html.parser那么宽松。

请注意,如果您通过tidy运行该页面,该页面有超过一千个警告。包括无效的字符代码,未闭合的<div> s, </等字母在他们不允许的位置。

相关内容

  • 没有找到相关文章

最新更新