javascript - 我如何从不返回简单 HTML 的网站上抓取数据

标签 javascript python html selenium web-scraping

我一直在使用 requests 和 BeautifulSoup for python 从基本网站抓取 html,但大多数现代网站并不只是提供 html 作为结果。我相信他们运行 javascript 或其他东西(我不是很熟悉,这里有点菜鸟)。我想知道是否有人知道如何在 google flights 上搜索航类并抓取最上面的结果,也就是最便宜的价格?

如果这是简单的 html,我可以只解析 html 树并找到文本结果,但是当您查看“页面源代码”时,这不会出现。如果您在浏览器中检查该元素,您会看到 hmtl 标签内的价格,就像您在查看基本网站的常规页面源代码一样。

检查元素有 html 但页面源代码没有,这是怎么回事?有谁知道如何抓取此类数据?

非常感谢!

Inspect Element Javascript?

最佳答案

您发现了——页面标记在初始服务器响应后使用 javascript 添加。我没有使用 BeautifulSoup,但从它的文档来看,它似乎不执行 javascript,所以你在这方面运气不好。

你可以试试 Selenium ,它基本上是一个虚拟浏览器——人们用它来进行前端测试。它执行 javascript,因此它可能能够为您提供您想要的东西。

但是,如果您专门查找 Google 航类信息,可以使用相应的 API :) https://developers.google.com/qpx-express/v1/

关于javascript - 我如何从不返回简单 HTML 的网站上抓取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43668384/

相关文章:

javascript - Firebase:查询返回 null

javascript - 如何在 HTML 提交表单中添加分配 csrf token

python - Pyramid 烧杯访问已创建的 session

javascript - 点击事件大部分时间不起作用

javascript - 当执行另一个函数时,Jquery 触发函数

python - 如果项目是在 .py 而不是 kv lang 中定义的,我该如何移动 Kivy 小部件的 Canvas 项目?

python - views.py 中的 .post() 、 .create() 和 perform_create() 与 serializers.py 中的 .create() 有什么区别

javascript - 如何根据边距样式创建 If Else 条件

javascript - 显示/隐藏 div 中的 bxSlider

html - Outlook 的电子邮件模板 - 填充/距离的技巧是什么?