GET请求使用python获得错误响应
我试着在一个星期内做一个请求 在输入字段“\u regidTextBox”中,您可以输入一个ID,这样它就可以选择一个游泳者。 我看到POST请求执行302,执行GET请求,其值为swimberId=123456(例如) 现在我想用Python来实现这一点,所以我不需要手动填写表单。 我的代码如下所示:GET请求使用python获得错误响应,python,python-3.x,request,urllib,Python,Python 3.x,Request,Urllib,我试着在一个星期内做一个请求 在输入字段“\u regidTextBox”中,您可以输入一个ID,这样它就可以选择一个游泳者。 我看到POST请求执行302,执行GET请求,其值为swimberId=123456(例如) 现在我想用Python来实现这一点,所以我不需要手动填写表单。 我的代码如下所示: import requests from bs4 import BeautifulSoup as soup import urllib.request import urllib.parse f
import requests
from bs4 import BeautifulSoup as soup
import urllib.request
import urllib.parse
from urllib.error import HTTPError
my_url = "http://dsvdaten.de/Modules/Results/Individual.aspx"
dsvID = "283621"
my_url_get = "http://dsvdaten.de/Modules/Results/Individual1.aspx?SwimmerID=" + dsvID
dsvDic = {"SwimmerID": dsvID}
headers = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
'Accept-Encoding': 'gzip,deflate',
'Accept-Language': 'de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7',
'Connection': 'keep-alive',
'Cache-Control': 'max-age=0',
'Host': 'dsvdaten.de',
'Referer': 'http://dsvdaten.de/Modules/Results/Individual.aspx?Lang=de-DE',
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'
}
def get_data(url):
payload = {"__VIEWSTATE": "", "__VIEWSTATEGENERATOR": "", "__EVENTVALIDATION": "", "SwimmerID": "283621"}
try:
session_req = urllib.request.urlopen(url, timeout=10)
page_html = session_req.read()
except ConnectionError as ConErr:
print("Es ist ein Fehler aufgetreten!")
print(ConErr)
page_soup = soup(page_html, "html.parser")
viewstate = page_soup.find("input", {"id": "__VIEWSTATE"}).get("value")
payload["__VIEWSTATE"] = viewstate
viewstategenerator = page_soup.find("input", {"id": "__VIEWSTATEGENERATOR"}).get("value")
payload["__VIEWSTATEGENERATOR"] = viewstategenerator
eventvalidation = page_soup.find("input", {"id": "__EVENTVALIDATION"}).get("value")
payload["__EVENTVALIDATION"] = eventvalidation
return payload
def get_open_url(my_url, dsvDic, headers): # GET Methode
encodedFields = urllib.parse.urlencode(dsvDic).encode("utf-8")
req = urllib.request.Request(url=my_url, data=encodedFields, headers=headers)
try:
conn = urllib.request.urlopen(req)
resp = conn.read()
print(resp)
conn.close()
return resp
except HTTPError as e:
error = e.read()
payload = get_data(my_url)
dsvDic.update(payload)
get_open_url(my_url_get, dsvDic, headers)
我确实收到了一个响应(HTTP 200),但不是正确的游泳者(看起来像不活跃的游泳者,idk)。如果我在浏览器(F-12)中操作请求,我会得到相同的结果
如果有人给出提示、链接或改进代码,那就太好了。在浏览器中搜索给定ID:
283621
时,重定向如下所示:Individual1.aspx?swimerId=353425
duuude!森林里所有看不见的树!泰!