我正在玩 BeautifulSoup 并抓取 bing 搜索结果。我不打算进行广泛的抓取,我只是在尝试不同的数据结构等。
我想要做的是创建一个字典,其中包含来自我的抓取的不同解析结果。换句话说,我需要将链接作为一个值,元(描述)信息放在另一个值中。
我的最终结果应该看起来像我想象的这样:
{ '1' : {
'link' : '<a href="watever">Whatever</a>',
'description' : 'this is a great website'
},
'2' : {
... etc ...
}
}
我当前的代码如下所示:
from bs4 import BeautifulSoup
import requests
import html5lib
url = requests.get("http://www.bing.com/search?q=pet+toys")
data = url.text
soup = BeautifulSoup(data, "html5lib")
for link in soup.find_all("li", "sa_wr"):
record = {'link' : link.find_all("a")}
print record
我显然对 Python 很陌生……在 PHP 中,我会处理这个问题,我仍在研究 Python 语法等。
任何帮助表示赞赏。
解决方案:
代码按预期工作,但我看到的字典只有一项,因为我没有遍历它。
此外,根据建议,我将每个字典添加到列表中,而不是字典。
records = []
for link in soup.find_all("li", "sa_wr"):
for url in link.find_all("a"):
records.append( {'link' : url.get("href"), 'title' : url.contents} )
for record in records:
print record['title']