私は以下の行を書きました:
[x['href'] for x in BeautifulSoup(data, parseOnlyThese=SoupStrainer('a'))]
データはurllib.urlopen(XXX).read()
python2.7 で取得されます。
XXX がhttp://python.orgのように全英字で構成されるページである場合にうまく機能します。しかし、いくつかの漢字があるページに行くと、失敗します。KeyError が発生します。空[x for ...]
のリストを返します。
しかも、無ければparseOnlyThese=SoupStrainer('a')
両方OKです。
SoupStrainer のバグはありますか?
from BeautifulSoup import BeautifulSoup, SoupStrainer
import urllib
data = urllib.urlopen('http://tudou.com').read()
[x['href'] for x in BeautifulSoup(data, parseOnlyThese=SoupStrainer('a'))]
トレースバックを与える:
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
[x['href'] for x in BeautifulSoup(data, parseOnlyThese=SoupStrainer('a'))]
File "F:\ActivePython27\lib\site-packages\beautifulsoup-3.2.1-py2.7.egg\BeautifulSoup.py", line 613, in __getitem__
return self._getAttrMap()[key]
KeyError: 'href'