我正在尝试使用BeautifulSoup4从维基百科中进行一些搜索 不幸的是,我无法通过一个findAll电话,我有一个解决方法,但想了解为什么这个不起作用。
示例代码:
from bs4 import BeautifulSoup
import requests
import lxml
html = requests.get('http://en.wikipedia.org/wiki/Brazil_national_football_team').text
soup = BeautifulSoup(html, "html.parser")
title = "Edit section: Current squad"
print "findAll method : " , soup.findAll("a",{"title",title})
results = soup.findAll("a")
for r in results:
if r.attrs.has_key('title'):
if r.attrs['title']=='Edit section: Current squad':
print "for if if method : ",r['href']
示例输出:
findAll method : []
for if if method : /w/index.php?title=Brazil_national_football_team&action=edit§ion=35
所以我的'for if if'方法的替代代码确实返回了正确的'a href',但是beautifulsoup变体没有。
我做错了什么?
答案 0 :(得分:1)
你在字典语法中犯了一个错误:
soup.findAll("a",{"title",title})
# ----------------------^
你传入了集,而不是那里的字典;将,
替换为:
:
soup.findAll("a",{"title":title})
或者,只需使用关键字参数:
soup.findAll("a", title=title)
演示:
>>> soup.findAll("a",{"title",title})
[]
>>> soup.findAll("a",{"title":title})
[<a href="/w/index.php?title=Brazil_national_football_team&action=edit&section=35" title="Edit section: Current squad">edit</a>]
>>> soup.findAll("a", title=title)
[<a href="/w/index.php?title=Brazil_national_football_team&action=edit&section=35" title="Edit section: Current squad">edit</a>]