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

问题描述 投票:1回答:1

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

有问题的网页是this,如果我使用Chrome开发人员工具查看更改select值时会发生什么。我接到一个看起来像这样的电话。

的index.php?的eID = dmmjobcontrol&类型=纪律&UID = 77&_ = 1535893178522

有趣的是,uid是select选项的id,所以我们得到了正确的id。但是,当我去这个链接时,我只得到一个页面说null

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

我很狡猾,老实说,我不明白我是如何得到这些信息的。如果它是用于某些用途我在python中使用scrapy来解析来自网站的信息。

python web-scraping scrapy html-select
1个回答
1
投票

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

请注意,历史上Selenium是第一个这样做的产品,所以这个API的名称。在我看来,PhantomJS更适合,默认无头(不运行任何GUI过程)和更快。 Selenium和PhantomJS都实现了一个名为Webdriver的协议,你的Python程序会使用它。

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

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

请注意,在许多文章中,人们都会做类似的测试,因此甚至没有提到“刮擦”这个术语。但从技术上讲它是相同的 - 模仿用户点击浏览器,最后从特定页面元素获取数据。

© www.soinside.com 2019 - 2024. All rights reserved.