[英]Posting form data with requests and python
發布表單數據不起作用,並且由於我有關此問題的其他帖子均不起作用,所以我認為我會嘗試再次提出問題,以便也許我可以得到另一種觀點。 我目前正在嘗試使requests.get(url, data=q)
工作。 打印時,找不到頁面。 我僅通過設置變量並將它們連接到整個URL使其起作用,但是我真的很想學習有關requests
這一方面。 我在哪里犯錯? 我正在為表單使用HTML標記屬性name=search_terms
和name=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)
您的代碼中有一些小錯誤:
url = "https://www.yellowpages.com/search"
geo_location_terms
而不是geo_locations_terms
。 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.