1
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 あります。最大要素サイズ resp などの制限はありますか。どうすればすべての要素を取得できますか?

4

1 に答える 1

4

最も簡単な方法は、おそらく「lxml」の代わりに「html.parser」を使用することです。

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れましたが、これは印刷されます11。寛大ですが、このページlxmlほど寛大ではありません。html.parser

を実行すると、ページに1,000を超える警告が表示されることに注意してくださいtidy。無効な文字コード、閉じていない<div>s、<およびのような文字を含む/ことはできません。

于 2013-04-23T07:01:37.140 に答える