<td valign="top"><a href="/default.asp?pagetemp=standard&pageload=emne&emneid=102981&listview=1&forhandlerid=21" class="list">Mercedes</a></td>
我的代码:
for link in soup.findAll('td',{'valign':'top'}):
ahref = link.findAll('a',{'class':'list'})
print(ahref)
但这并没有让我回到href
。
预期结果:
href="/default.asp?pagetemp=standard&pageload=emne&emneid=102981&listview=1&forhandlerid=21"
如何使用class="list"
查找href?
答案 0 :(得分:1)
问题源于你对findAll
对象的误解。 href
是BeautifulSoup对象的一个属性,可以像字典一样访问它:
import bs4
raw = '''<td valign="top"><a href="/default.asp?pagetemp=standard&pageload=emne&emneid=102981&listview=1&forhandlerid=21" class="list">Mercedes</a></td>'''
soup = bs4.BeautifulSoup(raw)
for td in soup.findAll('td',{'valign':'top'}):
for link in td.findAll('a', {"class":"list"}):
print (link["href"])
结果
/default.asp?pagetemp=standard&pageload=emne&emneid=102981&listview=1&forhandlerid=21
答案 1 :(得分:0)
lxml
会比BS4更好(更快)地完成工作
from lxml import etree
q = etree.fromstring('<td valign="top"><a href="/default.asp?pagetemp=standard&pageload=emne&emneid=102981&listview=1&forhandlerid=21" class="list">Mercedes</a></td>')
print(q.find("a").attrib['href'] )
输出:
/default.asp?pagetemp=standard&pageload=emne&emneid=102981&listview=1&forhandlerid=21
如果您仍然坚持使用BS4
:
from bs4 import BeautifulSoup
html = '<td valign="top"><a href="/default.asp?pagetemp=standard&pageload=emne&emneid=102981&listview=1&forhandlerid=21" class="list">Mercedes</a></td>'
soup = BeautifulSoup(html)
for a in soup.find_all('a', href=True):
print "Found the URL:", a['href']
输出:
Found the URL: /default.asp?pagetemp=standard&pageload=emne&emneid=102981&listview=1&forhandlerid=21