簡體   English   中英

使用請求和python發布表單數據

[英]Posting form data with requests and python

發布表單數據不起作用,並且由於我有關此問題的其他帖子均不起作用,所以我認為我會嘗試再次提出問題,以便也許我可以得到另一種觀點。 我目前正在嘗試使requests.get(url, data=q)工作。 打印時,找不到頁面。 我僅通過設置變量並將它們連接到整個URL使其起作用,但是我真的很想學習有關requests這一方面。 我在哪里犯錯? 我正在為表單使用HTML標記屬性name=search_termsname=geo_location_terms

search_terms = "Bars"
location = "New Orleans, LA"
url = "https://www.yellowpages.com"
q = {'search_terms': search_terms, 'geo_locations_terms': location}
page = requests.get(url, data=q)
print(page.url)

您的代碼中有一些小錯誤:

  1. 檢查表單的動作參數。 然后url = "https://www.yellowpages.com/search"
  2. 第二個參數是geo_location_terms而不是geo_locations_terms
  3. 您應該在requests.get中將查詢參數作為params而不是作為請求數據( data )傳遞。

因此,代碼的最終版本:

import requests

search_terms = "Bars"
location = "New Orleans, LA"
url = "https://www.yellowpages.com/search"
q = {'search_terms': search_terms, 'geo_location_terms': location}
page = requests.get(url, params=q)
print(page.url)

結果:

https://www.yellowpages.com/search?search_terms=Bars&geo_location_terms=New+Orleans%2C+LA

除了@Lev Zakharov指出的問題外,您還需要在請求中設置Cookie,如下所示:

import requests

search_terms = "Bars"
location = "New Orleans, LA"
url = "https://www.yellowpages.com/search"

with requests.Session() as session:
    session.headers.update({
        'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36',
        'Cookie': 'cookies'
    })

    q = {'search_terms': search_terms, 'geo_locations_terms': location}
    response = session.get(url, params=q)

    print(response.url)
    print(response.status_code)

產量

https://www.yellowpages.com/search?search_terms=Bars&geo_locations_terms=New+Orleans%2C+LA
200

要獲取Cookie,您可以使用某些網絡監聽器(例如,使用Chrome開發者工具的“網絡”標簽)查看請求,然后替換值'cookies'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM