2

ウィキペディアの人の誕生日を取得するためにbeautifulsoupを使用しようとしています。たとえば、http://en.wikipedia.org/wiki/Ezra_Taft_Bensonの誕生日は1899年8月4日です。bdayにアクセスするには、次のコードを使用しています。

bday = url.find("span", class_="bday")

bdayただし、別のタグの一部としてhtmlコードに表示されるインスタンスを取得しています。すなわち<span class="bday dtstart published updated">1985-11-10 </span>

正確なクラスタグをbdayのみと一致させる方法はありますか?

bday現在、正しい日付ではない1985-11-10になるようになっているので、質問が明確であることを願っています。

4

3 に答える 3

4

BeautifulSoupの他のすべての一致するメソッドが失敗した場合、単一の引数(タグ)を取る関数を使用できます。

>>> url.find(lambda tag: tag.name == 'span' and tag.get('class', []) == ['bday'])
<span class="bday">1899-08-04</span>

上記はspan、クラス属性が単一要素のリスト('bday')であるタグを検索します。

于 2012-09-23T13:45:53.470 に答える
1

私はそれについてこのように行ったでしょう:

import urllib
from BeautifulSoup import BeautifulSoup

url = 'http://en.wikipedia.org/wiki/Ezra_Taft_Benson'
file_pointer = urllib.urlopen(url)
html_object = BeautifulSoup(file_pointer)

bday = html_object('span',{'class':'bday'})[0].contents[0] 

これは1899-08-04、の値として返されますbday

于 2012-09-24T15:46:42.693 に答える
0

パーサーでlxmlを使用してみてくださいbeautifulsoup<span>以下は、クラスのみのタグを検索しますbday(このページの場合は1つだけです)。

>>> from lxml.html.soupparser import fromstring
>>> root = fromstring(open('Ezra_Taft_Benson'))
>>> span_bday_nodes = root.findall('.//span[@class="bday"]')
[<Element span at 0x1be9290>]
>>> span_bday_node[0].text
'1899-08-04'
于 2012-09-23T13:13:51.167 に答える