我试图抓取这个网站,以获取从下拉表单生成的所有文档

时间:2016-12-31 06:26:33

标签: python web-scraping

我想要废弃的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

我还没找到任何适合我的东西。有没有比Selenium更好的工具呢?我正在尝试使用我的第二个例子中的代码作为启动器来弯曲它。

1 个答案:

答案 0 :(得分:1)

根据您的编码技巧和HTTP知识,我会尝试以下两种方法之一。请注意,抓取此网站似乎有点不重要,因为根据之前选择的内容显示了不同的表单选项,以及发生了大量AJAX调用的事实。

1)遵循Chrome DevTools之类的HTTP请求(尤其是AJAX请求)。您将很好地理解最终URL的形成方式以及如何自己构建它。特别是,看起来AFWageScheduleYearSelected的最后一个POST是生成最终url的POST。然后,您可以在Python HTTP库中自己进行这些调用以获取文档。

2)使用PhantomJS(http://phantomjs.org/)之类的东西,这是一个无头浏览器。我没有使用Selenium的经验,但我的理解是它更像是一种测试/自动化工具。无论如何,PhantomJS很容易启动和运行,你基本上可以点击页面元素,填写表格等。

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