post请求和请求的响应不正确

2024-06-30 08:19:43 发布

您现在位置:Python中文网/ 问答频道 /正文

搜索url-http://aptaapps.apta.org/findapt/Default.aspx?UniqueKey=。在

需要获取zipcode的数据(10017) 发送post请求,但我收到搜索页面(来自搜索url的响应),但没有包含结果的页面。在

我的代码:

# -*- coding: UTF-8 -*-

import requests
from bs4 import BeautifulSoup, element


search_url = "http://aptaapps.apta.org/findapt/Default.aspx?UniqueKey="
session = requests.Session()
r = session.get(search_url)
post_page = BeautifulSoup(r.text, "lxml")
try:
    target_value = post_page.find("input", id="__EVENTTARGET")["value"]
except TypeError:
    target_value = ""

try:
    arg_value = post_page.find("input", id="__EVENTARGUMENT")["value"]
except TypeError:
    arg_value = ""

try:
    state_value = post_page.find("input", id="__VIEWSTATE")["value"]
except TypeError:
    state_value = ""

try:
    generator_value = post_page.find("input", id="__VIEWSTATEGENERATOR")["value"]
except TypeError:
    generator_value = ""

try:
    validation_value = post_page.find("input", id="__EVENTVALIDATION")["value"]
except TypeError:
    validation_value = ""

post_data = {
            "__EVENTTARGET": target_value,
            "__EVENTARGUMENT": arg_value,
            "__VIEWSTATE": state_value,
            "__VIEWSTATEGENERATOR": generator_value,
            "__EVENTVALIDATION": validation_value,
            "ctl00$SearchTerms2": "",
            "ctl00$maincontent$txtZIP": "10017",
            "ctl00$maincontent$txtCity": "",
            "ctl00$maincontent$lstStateProvince": "",
            "ctl00$maincontent$radDist": "1",
            "ctl00$maincontent$btnSearch": "Find a Physical Therapist"
            }

headers = {
        "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
        "Accept-Encoding": "gzip, deflate",
        "Accept-Language": "ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4",
        "Cache-Control": "max-age=0",
        "Content-Length": "3025",
        "Content-Type": "application/x-www-form-urlencoded",
        "Host": "aptaapps.apta.org",
        "Origin": "http://aptaapps.apta.org",
        "Proxy-Connection": "keep-alive",
        "Referer": "http://aptaapps.apta.org/findapt/default.aspx?UniqueKey=",
        "Upgrade-Insecure-Requests": "1",
        "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36"
        }

post_r = session.post(search_url, data=post_data, headers=headers)
print(post_r.text)

Tags: orgidurlinputvaluepagefindpost
1条回答
网友
1楼 · 发布于 2024-06-30 08:19:43

简短回答:

尝试替换:

post_r = session.post(search_url, data=post_data, headers=headers)

收件人:

^{pr2}$

长话短说:

对于POST方法,有多种数据类型可供发布。如form-datax-www-form-urlencodedapplication/jsonfile

你应该知道帖子的数据类型。有一个很棒的chrome插件叫做postman。您可以使用它来尝试不同的数据类型并找到正确的数据类型。在

找到后,在requests.post中使用正确的参数键,如果是form-datax-www-form-urlencoded,则使用参数{}。参数json用于json格式。您可以参考请求文档以了解有关该参数的更多信息。在

相关问题 更多 >