2015-01-21 50 views
2

我使用的urllib2和機械化,但他們中的一些讓我錯誤與urllib2的爬行和機械化拋出的錯誤給我

抓取某些網站當我匍匐使用urlllib2它給了我HTTPError:HTTPError()

代碼的urllib2

import urllib2 
response=urllib2.urlopen('http://proxygaz.com/country/india-proxy/').read() 

錯誤

HTTPError: HTTPError()

當我匍匐使用機械化它給了我httperror_seek_wrapper:>>

代碼機械化

import mechanize 
from mechanize import Browser 

br = Browser() 
br.open('http://proxygaz.com/country/india-proxy/').read() 

錯誤

httperror_seek_wrapper: >>

回答

1

得到了同樣的錯誤,請嘗試使用一個用戶代理或requests

import requests 

response=requests.get('http://proxygaz.com/country/india-proxy/') 
print(response.status_code) 
200 

使用代理的正常工作:

import urllib2 

resp = urllib2.Request('http://proxygaz.com/country/india-proxy/') 
resp.add_header('User-Agent', 'FIREFOX') 
opener = urllib2.build_opener() 
print opener.open(resp).read() 
+0

我認爲你的意思是'request'而不是'resp'。 – mhawke 2015-01-21 11:08:44

+0

@mhawke,是一個錯字。 – 2015-01-21 11:09:36

+0

明白我的意思? – mhawke 2015-01-21 11:10:25

3

urllib2.urlopen()例如,例外的是:

urllib2.HTTPError: HTTP Error 403: Forbidden 

出於某種原因,你沒有權限訪問該資源....它的用戶代理。它的工作原理與requests或者您也可以按如下方式更改用戶代理:

import urllib2 

request = urllib2.Request('http://proxygaz.com/country/india-proxy/', headers={'User-Agent': 'Mozilla/5.0'}) 
response = urllib2.urlopen(request) 
+0

你的回答看起來很親切 – 2015-01-21 11:05:54

+0

@PadraicCunningham:和你一樣!雖然風格有一些變化......你的不工作:) – mhawke 2015-01-21 11:08:16

+0

嗯,我確實把它放下了;) – 2015-01-21 11:08:58