首页 > 解决方案 > 使用 bs4 解析谷歌搜索结果页面

问题描述

我想创建一个使用 BeautifulSoup 从 Google 搜索结果页面检索当前天气数据的程序。我尝试通过 .select() 方法通过其类和 id(.wob_t, #wob_tm) 找到正确的 html 元素,但它表明这些不存在。我怎样才能解决这个问题?

def search():
pagedownload = requests.get('https://www.google.com/search?q=' + city + '+' + 'weather')
pagedownload.raise_for_status()
pagehtml = bs4.BeautifulSoup(pagedownload.text, 'html.parser')
htmlline = pagehtml.select('.wob_t')
print (len(htmlline))

输出:

0

标签: pythonbeautifulsoup

解决方案


谷歌采取了各种措施,让机器人很难直接从他们的网站上抓取,这使得依赖谷歌的稳定抓取工具的开发变得困难。此外,这可能超出其网站的使用条款。

但是,它们确实提供了许多 API 来直接访问它们的数据。不幸的是,他们的天气 API 已贬值(请参阅:google api to get weather infromation

我会考虑使用授权的 API(来自上面的链接)来获取天气数据。


推荐阅读