2015-10-18 74 views
0

我有很多地址需要进行地理编码(查找经度和纬度)。美国人口普查局在以下链接提供这样的服务:US Census Geocoder,每个请求限制在1000个地址。现在我必须一遍又一遍地手动完成。我正在学习Python,我很想知道如何自动完成它。我应该使用哪些软件包以及如何指定一个输入文件,该文件在网站上要求我点击“选择文件”按钮,然后选择一个文件?使用文件输入形式的Python POST Web请求

编辑: 与谷歌Chrome开发者工具的网页如下所示: enter image description here

正如你所看到的,不会有太多的领域,以填补。表格描述为:

<form method="POST" action="addressbatch" enctype="multipart/form-data"> 
    <label>Select Address File :</label> 
    <input type="file", name="addressFile", required="required"> 
    ... 
    <div id="_f_gov_census_geo_geocoder_domain_AddressResult_benchmark_id">...</div> 
    ... 
    <input type="submit" value="Get Results"> 
</form> 

我已经看过请求包并试了一下。以下是我已经能够做到:

url = 'http://geocoding.geo.census.gov/geocoder/locations/addressbatch?form' 
payload = {'name': 'addressFile', 'filename':'C:/ds/data/california/census_geocode/batch_0.csv'} 
session = requests.session() 
r = requests.post(url, data=payload) 

结果是r=<Response [400],或错误的请求。我不知道如何指定提交请求,因为源只有类型和值字段,没有名称字段。

二手谷歌开发者工具来跟踪的要求,这里是我的了:

Request Payload: 

------WebKitFormBoundaryINe95Tc7sF0LHtgj 
Content-Disposition: form-data; name="addressFile"; filename="batch_0.csv" 
Content-Type: application/vnd.ms-excel 


------WebKitFormBoundaryINe95Tc7sF0LHtgj 
Content-Disposition: form-data; name="benchmark" 

4 
------WebKitFormBoundaryINe95Tc7sF0LHtgj-- 

我仍然不知道如何在我的要求下,虽然使用这些信息。

回答

0

查看页面的源代码,正在发出的请求是POST。我建议你看看:http://docs.python-requests.org/en/latest/index.html。此外,在浏览器的开发人员工具中,查看获得结果按钮上的呼叫。

+0

我已经更新了我的问题,并展示了迄今为止我所能找到的内容。显然它还没有解决。 – breezymri