选择下拉列表并搜索后,从网站下载数据

时间:2014-06-30 10:34:07

标签: batch-file web download

我不是一个纯粹的程序员,但具有良好的编程基础知识。我正在尝试自动化每月必须执行的数据下载过程(来自网站)。以下是我必须使用的网站:

http://hazards.fema.gov/femaportal/prelimdownload/searchLoad.action

如果您转到该链接,您将看到2个下拉菜单和一个按钮。如果从下拉列表中选择状态1.然后从下拉列表2中选择更新的县。然后按下按钮搜索3.页面刷新,您会看到许多下载链接。如果向下滚动到底部,您将看到“FIRM数据库”和zip文件的下载链接。我想为所有县的所有州下载这个。有人可以建议我最简单的方法和我应该使用的脚本语言。非常感谢你的帮助!!

1 个答案:

答案 0 :(得分:1)

如果您查看FIRM Database的下载链接,则可以看到您拥有的内容 state Namecounty name作为参数。

Alabama的例子 - >蒙哥马利郡:

http://hazards.fema.gov/femaportal/prelimdownload/prelim/ProductsDownLoadServlet?pfiProdId=12996&stateName=Alabama&countyName=Montgomery%20County

所以你可以创建一个包含所有可能性的txt文件(ID State a county),如下所示:

29447,Massachusetts,Bristol County
12996,Alabama,Montgomery County
32516,New Mexico,Otero County

并制作一个BAT文件,获取TXT文件中的值并重建链接:

@echo off
setlocal enabledelayedexpansion
for /f "tokens=1-3 delims=," %%a in ('type aaaa.txt') do (
set "$ID=%%a"
set "$State=%%b"
set "$County=%%c"
echo !$ID!
echo !$State!
echo !$County: =%%20!
start http://hazards.fema.gov/femaportal/prelimdownload/prelim/ProductsDownLoadServlet?pfiProdId=!$ID!^&stateName=!$state: =%%20!^&countyName=!$County: =%%20!
)

使用此解决方案,您必须确认所有下载。要解决此问题,您可以使用命令行工具,如WGET。在这种情况下,只需替换:

start http://hazards.fema.gov/femaportal/prelimdownload/prelim/ProductsDownLoadServlet?pfiProdId=!$ID!^&stateName=!$state: =%%20!^&countyName=!$County: =%%20!

with:

wget http://hazards.fema.gov/femaportal/prelimdownload/prelim/ProductsDownLoadServlet?pfiProdId=!$ID!^&stateName=!$state: =%%20!^&countyName=!$County: =%%20!

或者你可以使用@noodles他的VBS解决方案静默下载:Download file from dynamic link using VBScript or Powershell

对于全自动解决方案(没有txt文件)谁将在WEB页面的源代码中自动获取链接。使用其他脚本语言。

相关问题