簡體   English   中英

嘗試使用Python 3.3抓取數據時出現HTTP錯誤405

[英]Http error 405 when trying to scrape data with Python 3.3

我想從網站上抓取數據; 但是我一直收到HTTP:錯誤405:不允許。 我究竟做錯了什么?

(我查看了文檔,並嘗試了他們的代碼,僅使用URL代替了示例的url;我仍然遇到相同的錯誤。)

這是代碼:

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。 謝謝!

您收到的錯誤是“請原諒我們的中斷。關於您的瀏覽器的某些事情使我們認為您是機器人”。 表示不允許抓取,並且網頁上有反抓取漫游器。

嘗試使用假瀏覽器。 鏈接到如何使用偽造的瀏覽器發出請求。 如何使用Python請求來偽造瀏覽器訪問?

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頁面。 希望能幫助到你。

不確定問題的確切原因,但是嘗試以下代碼對我有用:

import http.client

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

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

暫無
暫無

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

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