2017-06-11 20 views
0

私はこのページを解析しようとしています: with iPythonのBeautifulSoup4。私はこれらのコード行を書いた:'HTTPError:HTTPエラー403:禁止された'とPython 3.6.1

import urllib.request as ur 
import re 
page = ur.urlopen('http://www.chronicle.com/article/Major-Private-Gifts-to-Higher/128264').read() 

をそして私は、このエラーを得た:

HTTPError         Traceback (most recent call 
last) 
<ipython-input-27-8d5066f9c76f> in <module>() 
----> 1 s = ur.urlopen("http://www.chronicle.com/article/Major-Private- 
Gifts-to-Higher/128264") 

/Users/name/anaconda/lib/python3.6/urllib/request.py in urlopen(url, 
data, timeout, cafile, capath, cadefault, context) 
    221  else: 
    222   opener = _opener 
--> 223  return opener.open(url, data, timeout) 
    224 
    225 def install_opener(opener): 

/Users/name/anaconda/lib/python3.6/urllib/request.py in open(self, 
fullurl, data, timeout) 
    530   for processor in self.process_response.get(protocol, []): 
    531    meth = getattr(processor, meth_name) 
--> 532    response = meth(req, response) 
    533 
    534   return response 

/Users/name/anaconda/lib/python3.6/urllib/request.py in 
http_response(self, request, response) 
    640   if not (200 <= code < 300): 
    641    response = self.parent.error(
--> 642     'http', request, response, code, msg, hdrs) 
    643 
    644   return response 

/Users/name/anaconda/lib/python3.6/urllib/request.py in error(self, 
proto, *args) 
568   if http_err: 
569    args = (dict, 'default', 'http_error_default') + 
orig_args 
--> 570    return self._call_chain(*args) 
571 
572 # XXX probably also want an abstract factory that knows when it 
makes 

/Users/name/anaconda/lib/python3.6/urllib/request.py in 
_call_chain(self, chain, kind, meth_name, *args) 
502   for handler in handlers: 
503    func = getattr(handler, meth_name) 
--> 504    result = func(*args) 
505    if result is not None: 
506     return result 

/Users/name/anaconda/lib/python3.6/urllib/request.py in 
http_error_default(self, req, fp, code, msg, hdrs) 
    648 class HTTPDefaultErrorHandler(BaseHandler): 
    649  def http_error_default(self, req, fp, code, msg, hdrs): 
--> 650   raise HTTPError(req.full_url, code, msg, hdrs, fp) 
    651 
    652 class HTTPRedirectHandler(BaseHandler): 

HTTPError: HTTP Error 403: Forbidden 

私はこれをどのように修正することができますか?前もって感謝します!

答えて

1

おそらく必要なHTTPヘッダーも送信する必要があります。たとえば、Firefoxがブラウザの開発ツールを使用してページに送信するヘッダーを見てください。これらをリクエストに追加します。少なくとも、User-Agentは設定が必要なヘッダーの1つだと思います。

1

リクエストモジュールを使用するほうがはるかに簡単で、使いやすくなっています。

しかし、問題は以前のStackoverflowユーザーが言ったことですが、いくつかのヘッダーなどが必要です。モジュールrequestsには、私が知っている限り、inbuildのサポートがあります。代わりに.read()の我々が使用する方法が.text

import requests 
from bs4 import BeautifulSoup as bs 

urlopen = requests.get('http://www.chronicle.com/article/Major-Private-Gifts-to-Higher/128264').text 
soup = bs(urlopen,'lxml') 

print(soup) 

あなたはbeautfiulSoupでそれを解析する必要がないことに注意してくださいすることができますだけ...

import requests 

urlopen = requests.get('http://www.chronicle.com/article/Major-Private-Gifts-to-Higher/128264').text 
print(urlopen) 
関連する問題