我正在尝试学习BeautifulSoup,但这需要一些时间。我希望你能帮助我。 在下面的代码中,相同的语法重复多次,我想知道如何创建一个列表:第一项,第二项,.... N:th项 逻辑应该是找到“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>
答案 0 :(得分: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>
或不需要代码,则需要其他代码,但这应该会帮助您开始。
答案 1 :(得分: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