刮一个需要提交表单的php网页

时间:2019-03-27 21:47:47

标签: python web-scraping request

这是链接-http://armstrade.sipri.org/armstrade/page/values.php

我正在尝试编写Python代码以在下拉菜单中针对每种状态自动下载这些CSV文件。我的代码如下:

submit_value={'country_code':'ALG','low_year':'2010','high_year':'2018','import_or_export':'import','summarize':'country','filetype':'html','Action':'Download'}
page = requests.post(url='http://armstrade.sipri.org/armstrade/page/values.php',data=submit_value)

但是,这并没有给我任何新的东西。相反,我在page.text中拥有的内容与原始HTML页面完全相同。这表明所有这些参数(年份范围,国家/地区代码等)均未提交到页面。

有什么主意我该怎么做?非常感谢!

3 个答案:

答案 0 :(得分:0)

尝试使用GET请求而不是POST请求,因为您没有输入任何值,而是从客户端请求一些数据。

答案 1 :(得分:0)

您已经快要在那里了。检查请求和响应(例如,在Chrome工具的“网络”标签中)

submit_value={'country_code':'ALG','low_year':'2010','high_year':'2018','import_or_export':'import','summarize':'country','filetype':'html','Action':'Download'}
response = requests.post(url='http://armstrade.sipri.org/armstrade/html/export_values.php',data=submit_value)
with open("/tmp/sample.hmtl", "w") as f:
    f.write(response.text)

工作正常!

UPD: (由于我的回答中有错字而决定要突出显示)

  1. 它是 html / export_values .php,请求应该放在那里
  2. response.text包含数据(也可能是response.content,那里只是字节)

答案 2 :(得分:-1)

您的脚本运行良好。 page.content保存所有响应数据。谢谢。

import requests
submit_value={'country_code':'ALG','low_year':'2010','high_year':'2018','import_or_export':'import','summarize':'country','filetype':'html','Action':'Download'}
page = requests.post(url='http://armstrade.sipri.org/armstrade/page/values.php',data=submit_value)
print(page.content)