-1

我正在尝试学习 BeautifulSoup,但这需要一些时间。我希望你能帮我解决这个问题。在下面的代码中,相同的语法重复了几次,我想知道如何创建一个列表:第一项,第二项,....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})]

编辑:正如您所说,您可以通过 using 找到包含所需标题的元素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 回答