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

2024-09-29 20:28:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在使用requests和beautifulsoupforpython从基本网站上获取html,但大多数现代网站并不是因此而提供html。我相信他们运行javascript或其他东西(我不太熟悉,这里有点像个傻瓜)。我想知道是否有人知道如何,比如说,在谷歌航班上搜索一个航班,然后获取最高的搜索结果,也就是最便宜的价格??在

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

为什么inspect元素有html而页面源没有?有人知道如何收集这些数据吗?在

非常感谢!在

Inspect ElementJavascript?


Tags: 标记文本元素源代码网站html浏览器价格
2条回答

您可以考虑使用^{},这将允许您刮取页面,以及许多其他spider功能。Scrapy与^{}有很好的集成,这是一个可以用来在页面中执行javascript的库。Splash可以独立使用,也可以获得^{}。在

请注意,Splash基本上运行它自己的服务器来执行javascript,所以它是与主脚本一起运行并被调用的东西。Scrapy通过“中间件”(middleware)或对每个请求运行的一组进程进行管理:在您的例子中,您将获取页面,在Splash中运行Javascript,然后解析结果。在

这可能是一个比插入Selenium等稍轻的选项,尤其是如果您只想呈现页面而不是呈现页面,然后以自动化的方式与各个部分交互。在

在最初的服务器响应之后,页面标记将使用javascript添加。我没有使用过beauthoulsoup,但是从它的文档来看,它似乎没有执行javascript,所以在这方面你运气不好。在

您可以尝试Selenium,这基本上是一种虚拟浏览器,人们使用它进行前端测试。它执行javascript,所以它可能能够提供您想要的东西。在

但是如果你是专门寻找Google航班信息的话,这里有一个API用于这个目的:)https://developers.google.com/qpx-express/v1/

相关问题 更多 >

    热门问题