我正试图在这个网站上搜寻所有从下拉列表中产生的文档

2024-05-15 10:34:06 发布

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

我尝试取消的site有下拉菜单,最终生成指向文档的链接。最后的文件就是我想要的。我没有经验与网络刮,所以我不知道从哪里开始这个。我不知道从哪里开始。我试着使this适应我的需要,但没能使它工作。我也试着去适应this。你知道吗

我知道基本上我需要:

for state in states:
    select state

    for type in types:
        select type
        select wage_area_radio button

            for area in wage_area:
                select area

                for locality in localities:
                    select locality

                    for date in dates:
                        select date
                        get_document

我只是还没找到适合我的。有比硒更好的工具吗?我目前正在尝试将第二个示例中的代码作为启动代码,使其符合我的意愿。你知道吗


Tags: 代码in文档fordatetypesitearea
1条回答
网友
1楼 · 发布于 2024-05-15 10:34:06

根据您的编码技能和HTTP知识,我将尝试以下两种方法之一。请注意,刮取这个站点似乎有点不寻常,因为根据以前选择的内容显示不同的表单选项,而且有很多AJAX调用发生。你知道吗

1)遵循Chrome DevTools中发出的HTTP请求(尤其是AJAX请求)。您将很好地了解最终URL是如何形成的,以及如何自己构建它。特别是,最后一次发送到AFWageScheduleYearSelected的帖子似乎是生成最终url的帖子。然后,您可以自己在pythonhttp库中进行这些调用来获取文档。你知道吗

2)使用类似PhantomJS(http://phantomjs.org/)的无头浏览器。我没有使用Selenium的经验,但我的理解是它更像是一个测试/自动化工具。在任何情况下,PhantomJS都非常容易启动和运行,您基本上可以单击页面元素、填写表单等

如果您最终使用了PhantomJS(或任何其他类似浏览器的工具),那么在填充表单的AJAX调用方面就会遇到问题。基本上,您最终会尝试填写页面上还不存在的表单,因为数据仍然通过网络发送。解决这个问题最简单的方法就是在填写的每个表单字段之间设置超时(比如2秒)。使用超时(可能不可靠且速度慢)的替代方法是连续轮询页面,直到AJAX调用完成。你知道吗

相关问题 更多 >