2012-12-05 12 views
5

私はこの同じテクニックを使用する前にウェブサイトを削ってきました。しかし、このウェブサイトではうまくいかないようです。美味しいスープでこする問題

の任意のアイデア(それはまた、いくつかの私はここにコピーすることはできませんシンボルを次の)

GIF89aの:出力で

import urllib2 
from BeautifulSoup import BeautifulSoup 
url = "http://www.weatheronline.co.uk/weather/maps/current?LANG=en&DATE=1354104000&CONT=euro&LAND=UK&KEY=UK&SORT=1&INT=06&TYP=sonne&ART=tabelle&RUBRIK=akt&R=310&CEL=C" 
page=urllib2.urlopen(url).read() 
soup = BeautifulSoup(page) 
print soup 

は、ウェブページの内容でなければなりませんが、代わりに私はこれを取得しています何が問題なのか、どのように進めるべきか。

答えて

4

but I want to know why I am getting a gif accesing the url like that and when I access it via my browser I get the website perfectly.

これらの人はスマートで、Webブラウザ以外でウェブサイトにアクセスしたくないためです。あなたがする必要があるのは、User-agentをヘッダに追加することで既知のブラウザを偽造することです。変更された例を次に示します。

>>> import urllib2 
>>> opener = urllib2.build_opener() 
>>> opener.addheaders = [('User-agent', 'Mozilla/5.0')] 
>>> url = "http://www.weatheronline.co.uk/weather/maps/current?LANG=en&DATE=1354104000&CONT=euro&LAND=UK&KEY=UK&SORT=1&INT=06&TYP=sonne&ART=tabelle&RUBRIK=akt&R=310&CEL=C" 
>>> response = opener.open(url) 
>>> page = response.read() 
>>> from BeautifulSoup import BeautifulSoup 
>>> soup = BeautifulSoup(page) 
+0

@Abhijitあなたがサイトを削っていると分かるとすぐに、彼らはあなたの掻き取りを壊すHTMLを変更するかもしれないことに注意してください。またはIPアドレスをブロックします。またはその他の変更。彼らはあなたが自分のサイトを掻き回すことを望んでいません。多分あなたはそれを尊重すべきです。 –

+0

@Abhijit: – John

+0

トレースバック(最新の呼び出しの最後): "C:\ Python27 \ libに\ urllib2.py" ファイルで ファイル ""、ライン1、応答= opener.open(URL)がエラーを返し、 レスポンス= ファイル "C:\ Python27 \ lib \ urllib2.py"、行519、http_response 'http'、リクエスト、レスポンス、コード、msg、hdrs) ファイル "C:¥Python27¥lib¥urllib2.py"、行444、エラー return self._call_chain(* args) ファイルhttp:// error.default内の "C:\ Python27 \ lib \ urllib2.py"ファイル527行、 HTTPError(req.get_full_url()、code、msg、hdrs、fp) HTTPError:HTTPエラー4 03:禁止 – John

0

これは、アクセスしているURLがウェブページではなく、GIFイメージであることを示しています。実際には、スクリプトを実行して「ページ」をファイルに保存し、1x1ピクセルの白い(または透明な)GIFを取得します。

あなたが実際のWebブラウザでそれを取得しない理由は、実際にあなたがそれを掻き取ることを望まないためです。その使用の観点から、

に: 「あなたは、コピー、複製、再発行、ダウンロード、ポスト、放送、送信するか、またはそうでなければ、あなた自身の個人的、非商用利用を除き、どのような方法でサイトのコンテンツを使用することはできません。」

ウェブブラウザーをいくつかの作業で偽造することもできますが、WeatherOnlineと対話することをお勧めします。彼らはあなたが自分のデータを支払うことを望んでいますが、そうした場合、スクリーンスクレイピングの代わりに使うことができる素敵なAPIが得られます。

+0

ありがとうございました。私はそれを知っていますが、私はなぜそれが私のブラウザを介して私は完全にウェブサイトを取得し、それをアクセスするGIFを取得している知ってほしいです。 – Julio

+0

@ジュリオ:それをかき集めるのをより困難にする。更新された回答をご覧ください。 –

関連する問題