我正在尝试抓取以下网站:https://wwwapps.ncmedboard.org/Clients/NCBOM/Public/LicenseeInformationResults.aspx
为了抓取每个页面,我需要首先在.aspx页面上进行搜索,方法是输入名字和姓氏并启动搜索。
利用互联网上的资源,我整理了以下http POST请求:
url = 'https://wwwapps.ncmedboard.org/Clients/NCBOM/Public/LicenseeInformationResults.aspx'
headers = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36',
'Content-Type': 'application/x-www-form-urlencoded',
'Accept-Encoding': 'gzip, deflate',
'Accept-Language': 'en-GB,en;q=0.9,en-US;q=0.8,zh-TW;q=0.7,zh;q=0.6,zh-CN;q=0.5'
}
session = requests.session()
response = session.get(url, headers={'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36'})
soup = BeautifulSoup(response.content, 'html.parser')
form_data = {
'__VIEWSTATE': soup.find('input', {'name': '__VIEWSTATE'}).get('value'),
'__VIEWSTATEGENERATOR': soup.find('input', {'name': '__VIEWSTATEGENERATOR'}).get('value'),
'waLastName':'Smith',
'waFirstName':'John',
'__EVENTTARGET':'btnNext'
}
f = session.post(url, data=form_data, headers=headers)
soup = BeautifulSoup(f.content, 'html.parser')
for a in soup.find_all('a', href=True):
print("Found the URL:" + a['href'])
该帖子似乎没有任何效果,因为当您在发布请求之后查看html时,它似乎没有显示结果页面。为何会出现这种情况?
谢谢!
答案 0 :(得分:0)
您可能需要设置asp.net会话cookie,它将为每个新会话生成新的会话cookie。对于您的网站(https://wwwapps.ncmedboard.org),该值是ASP.NET_SessionId =(网站提供的您的sessionid的值)
如果未正确验证CSRF,则可能会绕过它。