9

urllib2を使用して特定のURLを開くことができません。同じアプローチは、「http://www.google.com」などの他のWebサイトでもうまく機能しますが、このサイト(ブラウザでも正常に表示されます)では機能しません。

私の簡単なコード:

from BeautifulSoup import BeautifulSoup
import urllib2

url="http://www.experts.scival.com/einstein/"
response=urllib2.urlopen(url)
html=response.read()
soup=BeautifulSoup(html)
print soup

誰かが私がそれを機能させるのを手伝ってくれる?

これは私が得たエラーです:

Traceback (most recent call last):
  File "/Users/jontaotao/Documents/workspace/MedicalSchoolInfo/src/AlbertEinsteinCollegeOfMedicine_SciValExperts/getlink.py", line 12, in <module>
    response=urllib2.urlopen(url);
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 126, in urlopen
    return _opener.open(url, data, timeout)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 400, in open
    response = meth(req, response)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 513, in http_response
    'http', request, response, code, msg, hdrs)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 432, in error
    result = self._call_chain(*args)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 372, in _call_chain
    result = func(*args)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 619, in http_error_302
    return self.parent.open(new, timeout=req.timeout)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 400, in open
    response = meth(req, response)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 513, in http_response
    'http', request, response, code, msg, hdrs)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 438, in error
    return self._call_chain(*args)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 372, in _call_chain
    result = func(*args)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 521, in http_error_default
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 404: Not Found

ありがとうございました

4

3 に答える 3

9

これを試してみたところ、404コードとページが返されました。

推測では、それは偶然または故意にpythonurllibにコンテンツを提供しないユーザーエージェント検出を行っています。

明確化するとurlliburlopenで、404コードとHTMLコンテンツを含む応答オブジェクトが返されました。例外を除いて提起されましたurllib2.urlopenurllib2.HTTPError

ユーザーエージェントをブラウザのようなものに設定してみることをお勧めします。ここにこれについての質問があります:urllib2.urlopenのユーザーエージェントの変更

于 2012-09-06T14:42:07.203 に答える
4

try exceptエラーをキャプチャする ために使用できます

try:
    u = urllib2.urlopen(req)
except urllib2.HTTPError, e:
    print e.code
    print e.msg
    return
于 2015-08-14T12:13:57.543 に答える
0

うーん...URLが有効でよろしいですか?「http://www.google.com」を試してみてください。私は同様のコードを持っていて、urllibに問題はありません。または、try --exceptステートメントを使用して、エラーの詳細を確認できます。そしてもちろん、MattHの答えは真実と非常に似ています:)

于 2012-09-06T20:13:11.707 に答える