python - 使用 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
解决方案
谷歌采取了各种措施,让机器人很难直接从他们的网站上抓取,这使得依赖谷歌的稳定抓取工具的开发变得困难。此外,这可能超出其网站的使用条款。
但是,它们确实提供了许多 API 来直接访问它们的数据。不幸的是,他们的天气 API 已贬值(请参阅:google api to get weather infromation)
我会考虑使用授权的 API(来自上面的链接)来获取天气数据。
推荐阅读
- macos - 有没有办法在 MacOS 上通过终端使用普通键盘文本选择?
- javascript - 在 JavaScript 中使用 usb 签名创建 CADES-BES 签名
- android - 与另一台相比,BLE 广告扫描在一台 Andriod 设备上扫描非常缓慢的广告 - Android V9 与 Android V7
- mongoose - 与另一只猫鼬添加收集数据
- terraform - Terraform 如何读取运行时值 ..Cloudformation 等效于 Instrinsic 函数
- svn - 在 phabricator 上导入 SVN 存储库卡在 0.00%
- javascript - 用于图表/图形电生理数据的 Javascript 库 - 数小时内的大数据
- asp.net - 如何使用 ASP.Net React SPA 在 Cypress 中以编程方式登录
- r - 如何在 R 中旋转 `grid` `grob` 或 `grobTree` 对象?
- swift - Swift 5.3 macOS - 加载本地 HTML