2016-12-14 114 views
0

我想從網站抓取數據;但是我不斷收到HTTP:錯誤405:不允許。我究竟做錯了什麼?嘗試使用Python抓取數據時發生Http錯誤405

(我已經看過的文件,並試圖自己的代碼,只有我的網址到位的例子年代,我仍然有同樣的錯誤。)

下面的代碼:

import requests, urllib 
from urllib.request import Request, urlopen 

list_url= ["http://www.glassdoor.com/Reviews/WhiteWave-Reviews-E9768.htm"] 

for url in list_url: 
    req = urllib.request.Request(url, headers={'User-Agent': 'Mozilla/5.0'}) 
    response=urllib.request.urlopen(req).read() 

如果我跳過用戶代理術語,則會收到HTTP錯誤403:禁止。

在過去,我已經使用以下順利地刮取數據(從其他網站):

for url in list_url: 
    raw_html = urllib.request.urlopen(url).read() 
    soup=None 
    soup = BeautifulSoup(raw_html,"lxml") 

理想情況下,我想保持一個類似的結構,即,通過獲取URL的內容到BeautifulSoup。 謝謝!

回答

0

不知道究竟原因的問題,但試試這個代碼,它是爲我工作。

import http.client 

connection = http.client.HTTPSConnection("www.glassdoor.com") 
connection.request("GET", "/Reviews/WhiteWave-Reviews-E9768.htm") 

res = connection.getresponse() 
data = res.read() 
1

你所得到的錯誤是「請原諒我們中斷一下你的瀏覽器讓我們覺得你一個機器人「。暗示刮刮是不允許的,他們的網頁上有反刮機器人。

嘗試使用假冒瀏覽器。鏈接到如何使用虛假瀏覽器發出請求。 (How to use Python requests to fake a browser visit?

headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'} 
url = 'http://www.glassdoor.com/Reviews/WhiteWave-Reviews-E9768.htm' 
web_page = requests.get(url,headers=headers) 

我嘗試這樣做,我發現了什麼是他們的網頁獲得通過JS加載。所以我認爲你可能想使用無頭瀏覽器(Selenium/PhantomJS)並且刮掉呈現的html頁面。希望能幫助到你。

相關問題