我使用请求来访问此webpage,随后使用Beautiful Soup分析和检查HTML。如何使用Python请求发送表单数据
此页面允许用户指定过去应返回结果的天数。
当我提交在浏览器的请求与我选择的365天,检查的反应,我觉得这种形式的数据与请求一起发送:这是通过页面上的表单完成
值得注意的是,表格数据为 “dnf_class_values [procurement_notice] [_ posted_date]:365”,因为这是我的选择365天所对应的唯一元素。
当这个请求的浏览器返回时,我得到ñ结果,其中ñ是最大可能的值给出,这是最大的时间段可能。 n在标记中可见为<span class="lst-cnt">
。
我似乎无法重复发送带有请求的表单数据。这里是我的代码的相关部分:
import requests
from bs4 import BeautifulSoup as bs
formData = {'dnf_class_values[procurement_notice][_posted_date]':'365'}
r = requests.post("https://www.fbo.gov/index?s=opportunity&mode=list&tab=list&tabmode=list&pp=20&pageID=1", data = formData)
s = bs(r.content)
s.find('span',{'class':'lst-cnt'})
这是返回相同数量的结果,当形式与天数的默认值提交的。
我试着在URL编码data
的关键,以及使用requests.get
,并指定params
,而不是data
。此外,我试图追加表单数据字段作为查询字符串参数:
url...?s=opportunity&mode=list&tab=list&tabmode=list&pp=20&pageID=1&dnf_class_values%5Bprocurement_notice%5D%5B_posted_date%5D=365
该请求的适当语法是什么?
如果你想实际做这种浏览器交互,'requests'不是你想要使用的工具。看看“CasperJS”或“Selenium” –