findAll(“a”,{“title”,“<title value =”“>”})不返回元素</title>

时间:2014-05-02 21:49:18

标签: python beautifulsoup

我正在尝试使用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&section=35

所以我的'for if if'方法的替代代码确实返回了正确的'a href',但是beautifulsoup变体没有。

我做错了什么?

1 个答案:

答案 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&amp;action=edit&amp;section=35" title="Edit section: Current squad">edit</a>]
>>> soup.findAll("a", title=title)
[<a href="/w/index.php?title=Brazil_national_football_team&amp;action=edit&amp;section=35" title="Edit section: Current squad">edit</a>]
相关问题