这是我第一次参加stackexchange,面临一个问题,我无法在Google上花费数小时的时间找到解决方案。由于缺乏更多图像而提前道歉,stackexchange不允许我在我的声誉更高之前拍摄更多照片。
我需要从.do页面获得结果:
http://webapps2.rrc.state.tx.us/EWA/productionQueryAction.do
当大型查询例如
时,网址仍然是静态的
已提交 - 我无法通过更改网址来更改我的查询。
提交后,需要很长时间才能加载,加载后会显示一个结果表。
然后,我要求所有数据都在一个页面上,所以我从表格左上角的下拉菜单中选择“查看全部”作为页面大小,以获取以下页面(其中包含的行数多于显示的数量)这里)
最后,为了导入这些数据,我打开一个电子表格并将其全部复制粘贴。
即使对于一个县/查询/提交,这个过程也非常繁琐,我必须每月为大约20个县,然后是另外10个区做这个。由于与每个查询返回相关的加载时间较长,因此这项任务很容易需要2-3个小时才能完成。
因此,我希望有人在这里有某种解决方案来自动化/简化流程,甚至只是建议我在哪里可以找到自己创建解决方案的信息。如果我可以直接查询数据库将数据导入电子表格,我的问题就会解决。如果查询服务器的整个过程可以自动化,加载时间是无关紧要的,因为它可以在没有用户输入的情况下在后台运行。
我为这个漫长而非具体的问题道歉,我们将非常感谢任何回复。
非常感谢。
答案 0 :(得分:1)
好吧,您实际上可以检查执行的网络调用以获取CSV文件。我刚刚为你做了这个,但它包含了你需要发送的很多参数。以下是你需要发送的实际参数:
searchArgs.orderByColumnName=
&searchArgs.initialViewArgHndlr.inputValue=County
&searchArgs.startMonthArgHndlr.inputValue=01
&searchArgs.startYearArgHndlr.inputValue=1993
&searchArgs.endMonthArgHndlr.inputValue=01
&searchArgs.endYearArgHndlr.inputValue=2013
&searchArgs.oilOrGasArgHndlr.inputValue=
&searchArgs.gasWellNoHndlr.inputValue=
&searchArgs.searchTypeHndlr.inputValue=production
&searchArgs.viewTypeHndlr.inputValue=monthlyTotals
&searchArgs.activeTabsFlagwordHndlr.inputValue=11
&searchArgs.orderByHndlr.inputValue=
&searchArgs.leaseTypeArgHndlr.inputValue=O
&searchArgs.districtCodeArgHndlr.inputValue=
&searchArgs.leaseNumberArgHndlr.inputValue=
&searchArgs.fieldNumbersArgHndlr.inputValue=
&searchArgs.fieldNamesHndlr.inputValue=
&searchArgs.operatorNumbersArgHndlr.inputValue=
&searchArgs.operatorNamesHndlr.inputValue=
&searchArgs.onShoreCountyCodeArgHndlr.inputValue=001
&searchArgs.offShoreCountyCodeArgHndlr.inputValue=
&searchArgs.leaseNameArgHndlr.inputValue=
&searchArgs.geoRegionOptionHndlr.inputValue=county
&searchArgs.statewideFlagHndlr.inputValue=
&methodToCall=generateProductionQueryReportCsv
&actionManager.recordCountHndlr.inputValue=2
&actionManager.currentIndexHndlr.inputValue=1
&actionManager.actionRcrd%5B0%5D.actionDisplayNmHndlr.inputValue=Search+Criteria
&actionManager.actionRcrd%5B0%5D.hostHndlr.inputValue=webapps2.rrc.state.tx.us%3A80
&actionManager.actionRcrd%5B0%5D.contextPathHndlr.inputValue=%2FEWA
&actionManager.actionRcrd%5B0%5D.actionHndlr.inputValue=%2FproductionQueryAction.do
&actionManager.actionRcrd%5B0%5D.actionParameterHndlr.inputValue=methodToCall
&actionManager.actionRcrd%5B0%5D.actionMethodHndlr.inputValue=unspecified
&actionManager.actionRcrd%5B0%5D.pagerParameterKeyHndlr.inputValue=
&actionManager.actionRcrd%5B0%5D.actionParametersHndlr.inputValue=
&actionManager.actionRcrd%5B0%5D.returnIndexHndlr.inputValue=0
&actionManager.actionRcrd%5B0%5D.argRcrdParameters%28searchArgs.paramValue%29=%7C1%3DCounty%7C2%3D01%7C3%3D1993%7C4%3D01%7C5%3D2013%7C8%3Dproduction%7C9%3DmonthlyTotals%7C10%3D11%7C101%3DO%7C201%3D001%7C204%3Dcounty
&actionManager.actionRcrd%5B1%5D.actionDisplayNmHndlr.inputValue=County%3A+ANDERSON
&actionManager.actionRcrd%5B1%5D.hostHndlr.inputValue=webapps2.rrc.state.tx.us%3A80
&actionManager.actionRcrd%5B1%5D.contextPathHndlr.inputValue=%2FEWA
&actionManager.actionRcrd%5B1%5D.actionHndlr.inputValue=%2FproductionQueryAction.do
&actionManager.actionRcrd%5B1%5D.actionParameterHndlr.inputValue=methodToCall
&actionManager.actionRcrd%5B1%5D.actionMethodHndlr.inputValue=search
&actionManager.actionRcrd%5B1%5D.pagerParameterKeyHndlr.inputValue=prodPager.paramValue
&actionManager.actionRcrd%5B1%5D.actionParametersHndlr.inputValue=
&actionManager.actionRcrd%5B1%5D.returnIndexHndlr.inputValue=0
&actionManager.actionRcrd%5B1%5D.argRcrdParameters%28prodPager.paramValue%29=%7C1%3D1%7C2%3D-1%7C3%3D241%7C4%3D0%7C5%3D0%7C6%3D10
&actionManager.actionRcrd%5B1%5D.argRcrdParameters%28searchArgs.paramValue%29=%7C1%3DCounty%7C2%3D01%7C3%3D1993%7C4%3D01%7C5%3D2013%7C8%3Dproduction%7C9%3DmonthlyTotals%7C10%3D11%7C101%3DO%7C201%3D001%7C204%3Dcounty
&searchArgs.startMonthArg=01
&searchArgs.startYearArg=1993
&searchArgs.endMonthArg=01
&searchArgs.endYearArg=2013
&pager.pageSize=-1
我希望你只有前缀为searchArgs
的参数很重要(它们包含表格的信息,比如月/年/....
actionManager
前缀参数包含一些复杂的数据,你需要定义它们(否则你会收到错误),但我不知道它们是否真的被使用过,所以你可能只是将它们留空。
执行此调用时,您将立即收到CSV文件,您可以使用任何语言解析该文件(查找CSV解析库)并将其插入数据库或其他内容。
但是,最好的方法是寻找这个源的替代品(或者你可以访问的公共API),因为这真的很疯狂,而且可能会改变。
以下代码是PHP检索CSV(使用cURL)并将其解析为数组的示例。
<?php
/** The data */
$minMonth = '01';
$minYear = '1993';
$maxMonth = '01';
$maxYear = '2013';
$view = 'County';
$region = 'county';
$location = '001'; /** This is the county code of ANDERSON */
$ch = curl_init();
/** URL */
curl_setopt($ch, CURLOPT_URL, "http://webapps2.rrc.state.tx.us/EWA/productionQueryAction.do");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, true);
/** All these form parameters */
$data = array(
'searchArgs.orderByColumnName' => '',
'searchArgs.initialViewArgHndlr.inputValue' => $view,
'searchArgs.startMonthArgHndlr.inputValue' => $minMonth,
'searchArgs.startYearArgHndlr.inputValue' => $minYear,
'searchArgs.endMonthArgHndlr.inputValue' => $maxMonth,
'searchArgs.endYearArgHndlr.inputValue' => $maxYear,
'searchArgs.oilOrGasArgHndlr.inputValue' => '',
'searchArgs.gasWellNoHndlr.inputValue' => '',
'searchArgs.searchTypeHndlr.inputValue' => 'production',
'searchArgs.viewTypeHndlr.inputValue' => 'monthlyTotals',
'searchArgs.activeTabsFlagwordHndlr.inputValue' => '11',
'searchArgs.orderByHndlr.inputValue' => '',
'searchArgs.leaseTypeArgHndlr.inputValue' => 'O',
'searchArgs.districtCodeArgHndlr.inputValue' => '',
'searchArgs.leaseNumberArgHndlr.inputValue' => '',
'searchArgs.fieldNumbersArgHndlr.inputValue' => '',
'searchArgs.fieldNamesHndlr.inputValue' => '',
'searchArgs.operatorNumbersArgHndlr.inputValue' => '',
'searchArgs.operatorNamesHndlr.inputValue' => '',
'searchArgs.onShoreCountyCodeArgHndlr.inputValue' => $location,
'searchArgs.offShoreCountyCodeArgHndlr.inputValue' => '',
'searchArgs.leaseNameArgHndlr.inputValue' => '',
'searchArgs.geoRegionOptionHndlr.inputValue' => $region,
'searchArgs.statewideFlagHndlr.inputValue' => '',
'methodToCall' => 'generateProductionQueryReportCsv',
'actionManager.recordCountHndlr.inputValue' => '2',
'actionManager.currentIndexHndlr.inputValue' => '1',
'actionManager.actionRcrd%5B0%5D.actionDisplayNmHndlr.inputValue' => 'Search+Criteria',
'actionManager.actionRcrd%5B0%5D.hostHndlr.inputValue' => 'webapps2.rrc.state.tx.us%3A80',
'actionManager.actionRcrd%5B0%5D.contextPathHndlr.inputValue' => '%2FEWA',
'actionManager.actionRcrd%5B0%5D.actionHndlr.inputValue' => '%2FproductionQueryAction.do',
'actionManager.actionRcrd%5B0%5D.actionParameterHndlr.inputValue' => 'methodToCall',
'actionManager.actionRcrd%5B0%5D.actionMethodHndlr.inputValue' => 'unspecified',
'actionManager.actionRcrd%5B0%5D.pagerParameterKeyHndlr.inputValue' => '',
'actionManager.actionRcrd%5B0%5D.actionParametersHndlr.inputValue' => '',
'actionManager.actionRcrd%5B0%5D.returnIndexHndlr.inputValue' => '0',
'actionManager.actionRcrd%5B0%5D.argRcrdParameters%28searchArgs.paramValue%29' => '%7C1%3DCounty%7C2%3D01%7C3%3D1993%7C4%3D01%7C5%3D2013%7C8%3Dproduction%7C9%3DmonthlyTotals%7C10%3D11%7C101%3DO%7C201%3D001%7C204%3Dcounty',
'actionManager.actionRcrd%5B1%5D.actionDisplayNmHndlr.inputValue' => 'County%3A+ANDERSON',
'actionManager.actionRcrd%5B1%5D.hostHndlr.inputValue' => 'webapps2.rrc.state.tx.us%3A80',
'actionManager.actionRcrd%5B1%5D.contextPathHndlr.inputValue' => '%2FEWA',
'actionManager.actionRcrd%5B1%5D.actionHndlr.inputValue' => '%2FproductionQueryAction.do',
'actionManager.actionRcrd%5B1%5D.actionParameterHndlr.inputValue' => 'methodToCall',
'actionManager.actionRcrd%5B1%5D.actionMethodHndlr.inputValue' => 'search',
'actionManager.actionRcrd%5B1%5D.pagerParameterKeyHndlr.inputValue' => 'prodPager.paramValue',
'actionManager.actionRcrd%5B1%5D.actionParametersHndlr.inputValue' => '',
'actionManager.actionRcrd%5B1%5D.returnIndexHndlr.inputValue' => '0',
'actionManager.actionRcrd%5B1%5D.argRcrdParameters%28prodPager.paramValue%29' => '%7C1%3D1%7C2%3D-1%7C3%3D241%7C4%3D0%7C5%3D0%7C6%3D10',
'actionManager.actionRcrd%5B1%5D.argRcrdParameters%28searchArgs.paramValue%29' => '%7C1%3DCounty%7C2%3D01%7C3%3D1993%7C4%3D01%7C5%3D2013%7C8%3Dproduction%7C9%3DmonthlyTotals%7C10%3D11%7C101%3DO%7C201%3D001%7C204%3Dcounty',
'searchArgs.startMonthArg' => $minMonth,
'searchArgs.startYearArg' => $minYear,
'searchArgs.endMonthArg' => $maxMonth,
'searchArgs.endYearArg' => $maxYear,
'pager.pageSize' => '-1'
);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$output = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
/** Convert CSV string to array */
$data = str_getcsv($output);
/** Print array */
print_r($data);
?>
答案 1 :(得分:0)