Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
GET请求使用python获得错误响应_Python_Python 3.x_Request_Urllib - Fatal编程技术网

GET请求使用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

我试着在一个星期内做一个请求 在输入字段“\u regidTextBox”中,您可以输入一个ID,这样它就可以选择一个游泳者。 我看到POST请求执行302,执行GET请求,其值为swimberId=123456(例如)

现在我想用Python来实现这一点,所以我不需要手动填写表单。 我的代码如下所示:

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!森林里所有看不见的树!泰!