-1

BeautifulSoup を学習しようとしていますが、時間がかかります。これで私を助けてくれることを願っています。以下のコードでは、同じ構文が数回繰り返されています。次のリストを作成する方法を知りたいと思います: 最初の項目、2 番目の項目、....N: 番目の項目 ロジックは "title=" (これは一意です)、「title =」の右側の文字列を抽出します。やり方さえわかれば簡単かもしれませんが…

<td align=left valign="top" class="small" title="First item" nowrap>
<td align=left valign="top" class="small" title="Second item" nowrap>
<td align=left valign="top" class="small" title="N:th item" nowrap>
4

2 に答える 2

1
from BeautifulSoup import BeautifulSoup
import urllib

url = 'http://www.somewebsite.com/'
file_pointer = urllib.urlopen(url)
soup = BeautifulSoup(file_pointer)

td_list = soup.findAll('td',{'class':'small')
for td in td_list:
    print td.contents[0]

これはうまくいくはずですが、サイトの他のコンテンツを知らなければ、言うのは難しいです。また、これはtdタグにテキストコンテンツがあることを前提としています。他のコードが必要な場合、たとえばアクセスする<span>かどうかなど、他のコードが必要ですが、これはあなたを始めるのに役立つはずです。

于 2012-11-05T14:41:08.257 に答える
0

タイトルを含む要素を見つける方法をすでに知っている場合は、を使用してタイトルを取得できますelem['title']

タイトルをリストとして取得するには:

titlelist=[elem['title'] for elem in soup.findAll('td', attrs={X : Y})]

編集:を使用して必要なタイトルを含む要素を見つけることができると言ったようにsoup.findAll('td', attrs={X : Y})、このコードは基本的にforループであり、によって生成された要素のリストを調べてsoup.findAll('td', attrs={X : Y})、title属性の値を取得します。と同じ:

elements = `soup.findAll('td', attrs={X : Y})`
titlelist=[]
for elem in elements:
    titlelist.append(elem['title'])

属性を持つ要素を検索するだけの場合は、次titleを使用しますhas_key()

    elements = `soup.findAll('td')`
    titlelist=[]
    for elem in elements:
        if elem.has_key('title'):
            titlelist.append(elem['title'])
    print titlelist
于 2012-11-05T14:40:39.570 に答える