如何使用BeautifulSoup获取数据

jac*_*eal 1 python beautifulsoup

我想从一个网页上抓取数据。我的代码如下所示:

grad = s.get('https://www.njuskalo.hr/prodaja-kuca/zagreb',headers=header, proxies=proxyDict)
city_soup = BeautifulSoup(grad.text, "lxml")
kvarts = city_soup.find_all(id="locationId_level_1")
print kvarts[0]
print "++++++++++++++++++++++="

for kvart in kvarts[0]:
    print kvart
Run Code Online (Sandbox Code Playgroud)

结果我得到:

<option data-url-alias="/brezovica" value="1247">Brezovica</option>
<option data-url-alias="/crnomerec" value="1248">?rnomerec</option>
<option data-url-alias="/donja-dubrava" value="1249">Donja Dubrava</option>
Run Code Online (Sandbox Code Playgroud)

从那里,我需要提取data-url-alias和value。怎么做?

t.m*_*dam 5

bs4 将标签属性存储在字典中,以便您可以按名称选择它们。

for kvart in kvarts[0].find_all('option'):
    print kvart['data-url-alias'], kvart['value']
Run Code Online (Sandbox Code Playgroud)

正如Evyatar Meged在评论中提到的那样,KeyError如果不存在密钥,则会引发a ,因此,如果不确定该密钥,请使用.get方法。

for kvart in kvarts[0].find_all('option'):
    print kvart.get('data-url-alias'), kvart.get('value')
Run Code Online (Sandbox Code Playgroud)

dict.getNone如果键不存在,则返回(或者您可以设置默认值)