2017-04-05 54 views
0

使用非常基本的程序在網站上搜索查詢並打印出搜索結果,爲什麼會出現502錯誤?使用請求在Python中搜索網站時出現502錯誤

import requests 
from bs4 import BeautifulSoup 
import re 

def main(): 
    url = "https://www.last10k.com/Search" 
    dat = {'q':'goog'} 
    resp = requests.get(url, params=dat) 
    print(resp.content) 
+0

如果你做'打印(resp.url)'你會得到什麼?另外,我建議使用更長的變量名稱...是'dat'應該是數據'?一個角色值得讓人困惑嗎? 'resp' - >'response'也一樣 –

回答

0

定義User-Agent報頭。就像這樣:

import requests 

def main(): 
    url = "https://www.last10k.com/Search" 
    dat = {'q':'goog'} 
    resp = requests.get(url, params=dat, headers={'User-Agent': 'Mozilla/5.0'}) 
    print(resp.status_code) 

的爲什麼這樣規定? Wikimedia User-Agent policy

0

我有這個問題,發現混合使用瀏覽器查看內容和嘗試請求幫助我找到了解決方案。也許它也會對你有所幫助,所以這裏是我所做的:

我的請求在瀏覽器中成功,然後用python失敗。網址是一樣的。所以我使用了調試器。您也可以簡單地打印內容,但調試器會顯示所有內容,並讓您瞭解原本錯過的內容。我發現在失敗的python請求中的響應內容是一個錯誤消息,它可能成爲一個ruby問題。

所以在遠程端有一些不同的行爲,但是是什麼原因造成的呢?正如所建議的,添加一個User-Agent-header非常好,但沒有任何改變。所以我查看了其他標題,發現基本認證字符串看起來完全不同。

我的解決方案:由於我做了一些重構,並且遠程端正在處理「許可被拒絕」結果,因此以502結尾,而不是403結果,我提供了錯誤的auth數據。

相關問題