2012-09-06 5 views
8

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

私の簡単なコード:

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 

あなたは

+1

あなたが得るエラーは何ですか? –

+3

行頭にセミコロンを置いてください。これはPythonです。 – FogleBird

+0

私の欠点はパラメータを取得することでしたが、私はあなたの問題ではないと思います –

答えて

8

私はこれを試してみましたバック404のコードとページを受け取ったありがとうございます。

偶然または目的のためにpython urllibにコンテンツを提供しないUser-Agentの検出を行っていると思います。

明確化は、urllibで、urlopenを受け取り、404コードとHTMLコンテンツの応答オブジェクトを返しました。 urllib2.urlopenで、urllib2.HTTPError例外が発生しました。

ブラウザのように見えるようにユーザーエージェントを設定することをお勧めします。これに関する質問はここにあります:Changing user agent on urllib2.urlopen

+0

これは私の推測でもありました。 – FogleBird

0

hm ...あなたはそのURLが有効であることを確かめますか? "http://www.google.com"を試してみてください。同様のコードがあり、urllibに問題はありません。あるいはtry-except文を使ってエラーの詳細を見ることができます。そしてもちろんMattHの答えは真実と非常によく似ています:)

3

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

try: 
    u = urllib2.urlopen(req) 
except urllib2.HTTPError, e: 
    print e.code 
    print e.msg 
    return 
関連する問題