gpt4 book ai didi

python - 如何从不使用 POST 的网站抓取信息

转载 作者:行者123 更新时间:2023-12-01 09:05:00 29 4
gpt4 key购买 nike

我需要从使用 HTML 选择来过滤其内容的网站获取一些信息。但是,我这样做遇到了困难,因为当更改选择的值时,网站不会“重新加载”,它使用一些内部函数来获取新内容。

相关网页为this如果我使用 Chrome 开发者工具来查看更改 select 的值时会发生什么。我接到一个类似这样的电话。

index.php?eID=dmmjobcontrol&type=discipline&uid=77&_=1535893178522

有趣的是,uid 是 select 选项的 id,所以我们得到了正确的 id。但是,当我转到此链接时,我只看到一个页面显示 null

考虑到类似的网站,this one 。当我在那里更改选择表单时,我会得到一个表单数据,我可以使用它来获取我想要的信息。

我对抓取还很陌生,老实说我不明白如何获取这些信息。如果出于某种用途,我会在 python 中使用 scrapy 来解析网站中的信息。

最佳答案

一种解决方案是使用客户端层来执行:您的抓取“脚本”和网站发送的所有 JavaScript,模拟真实的浏览器。我成功地将 PhantomJS 与 Selenium 又名 Webdriver API 一起使用: https://selenium-python.readthedocs.io/getting-started.html

请注意,历史上 Selenium 是第一个这样做的产品,因此这个 API 的名称。在我看来,PhantomJS 更适合,默认情况下是 headless 的(不运行任何 GUI 进程)并且速度更快。 Selenium 和 PhantomJS 都实现了一个名为 Webdriver 的协议(protocol),您的 Python 程序将使用该协议(protocol)。

这可能听起来很复杂,但请使用上面引用的入门文档并检查它是否适合您。

编辑:本文还包含使用所描述的设置的简单示例: https://realpython.com/headless-selenium-testing-with-python-and-phantomjs/

请注意,在许多文章中,人们都会做类似的事情来进行测试,因此甚至没有提到术语“抓取”。但从技术上讲,它们是相同的 - 模拟用户在浏览器中单击并最终从特定页面元素获取数据。

关于python - 如何从不使用 POST 的网站抓取信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52137368/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com