我正在学习如何使用BeautifulSoup,并且正在尝试从Google阅读天气。
我在行上收到“ KeyError:“ id””错误
if span.attrs["id"] == "wob_tm":
这是什么意思,我该如何解决?
我在指定不同的属性“类”时遇到了相同的错误,因此我认为“类”一词可能只是一个问题,但无论使用何种方式,我仍然会收到错误消息
# Creates a list containing all appearences of the 'span' tag
# The weather value is located within a span tag
spans = soup.find_all("span")
for span in spans:
if span.attrs["id"] == "wob_tm":
print(span.content)
我希望输出是天气的整数值,但是当我运行代码时,我得到的只是: “ KeyError:'id'”
答案 0 :(得分:3)
有些span
标签根本没有该属性,因此当您尝试访问该标签时,它们会给您错误。您可以完善搜索范围:
spans = soup.find_all('span', {'id': 'wob_tm'})
这只会找到匹配的对象。然后,您可以全部打印它们:
for span in spans:
print(span.content)
答案 1 :(得分:0)
字典“ attrs”中没有“ id”键的问题。下面的代码将处理这种情况。
spans = soup.find_all("span")
for span in spans:
if span.attrs.get("id") == "wob_tm":
print(span.content)
else:
print('not wob_tm')
答案 2 :(得分:0)
尽管其余答案是正确的,但在那种情况下都不会起作用,因为温度内容可能是使用javascript
加载的,因此找不到您正在寻找的spans
。相反,您可以使用肯定有效的selenium
。即:
from selenium import webdriver
driver = webdriver.Chrome('chromedriver.exe')
driver.get("https://www.google.co.uk/search?sxsrf=ACYBGNSfZJRq-EqvQ7rSC0oFZW-FiL-S-Q%3A1571602469929&source=hp&ei=JcCsXb-ANoK4kwWgtK_4DQ&q=what%27s+the+weather+today&oq=whats+the+weather+&gs_l=psy-ab.3.0.0i10i70i256j0i10j0j0i10l3j0l3j0i10.663.2962..4144...0.0..0.82.1251.19......0....1..gws-wiz.....10..35i362i39j35i39j0i131.AWESAgn5njA")
temp = driver.find_element_by_id('wob_tm').text
print(temp)