【发布时间】:2017-12-09 05:59:28
【问题描述】:
我编写了一些代码来从网页中获取数据。该网站有下拉选项来选择更喜欢的项目。所以,首先我提出了一个GET 请求来形成网址,然后是一个POST 请求。我已经设法仅从它的第一页解析数据,但填充的结果显示在多个页面中。当我更改表单数据参数中的页码时,它对结果没有任何影响。我仍然从第一页得到结果。我怎样才能得到它们?顺便说一句,我没有根据自己的喜好从下拉选项中选择任何东西;相反,我开始搜索默认首选项是如何设置的。
链接到该网站:URL
这是我迄今为止尝试过的:
import requests
from bs4 import BeautifulSoup
payload={
's':'opportunity',
'mode':'list',
'tab':'list',
'pageID':3
}
r = requests.get("replace_with_above_url",params=payload,headers={'User-Agent':'Mozilla/5.0'})
payload={
'dnf_class_values[procurement_notice][_posted_date]':'90',
'dnf_class_values[procurement_notice][set_aside][]':'',
'dnf_class_values[procurement_notice][zipstate]':'',
'dnf_class_values[procurement_notice][procurement_type][]':'',
'dnf_class_values[procurement_notice][keywords]':'',
'autocomplete_input_dnf_class_values[procurement_notice][agency]':'',
'dnf_class_values[procurement_notice][agency]':'',
'so_form_prefix':'dnf_',
'dnf_opt_action':'search',
'dnf_opt_template':'vendor_procurement_notice_filter',
'dnf_opt_mode':'update',
'dnf_opt_finalize':'0',
'dnf_opt_target':'',
'dnf_opt_validate':'1',
'dnf_class_values[procurement_notice][dnf_class_name]':'procurement_notice',
'clear_filters_from_home':'1'
}
res = requests.post(r.url,data=payload, headers={'User-Agent':'Mozilla/5.0'})
soup = BeautifulSoup(res.text,"lxml")
for item in soup.select(".solt"):
print(item.text)
【问题讨论】:
标签: python python-3.x web-scraping beautifulsoup http-post