Выпуск соскоб с красивым супом

Я перебираю сайты, прежде чем использовать эту же технику. Но с этим сайтом вроде бы не работает.

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

В выводе должно быть содержимое веб-страницы, но вместо этого я просто получаю это:

GIF89a (следует также некоторые символы, которые я не могу скопировать здесь)

Любые идеи о том, в чем проблема и как мне действовать.

2 ответа

Решение

но я хочу знать, почему я получаю подарок, который обращается к URL-адресу, и когда я получаю к нему доступ через свой браузер, я отлично получаю сайт.

потому что эти парни умны и не хотят, чтобы их веб-сайт был доступен вне веб-браузера. Вам нужно подделать известный браузер, добавив 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)

Это означает, что URL, к которому вы обращаетесь, является изображением GIF, а не веб-страницей. На самом деле, я запустил скрипт и сохранил "страницу" в файл, и вы получите 1x1 пиксель белого (или, возможно, прозрачного) GIF.

Причина, по которой вы этого не понимаете в реальном веб-браузере, может заключаться в том, что они не хотят, чтобы вы его очищали.

Из их условий использования: "Вы не можете копировать, воспроизводить, переиздавать, загружать, публиковать, транслировать, передавать или иным образом использовать содержимое Сайта любым способом, кроме как для личного, некоммерческого использования".

Вы могли бы подделать веб-браузер с некоторой работой, но я все же рекомендовал бы вам поговорить с WeatherOnline вместо этого. Они хотят, чтобы вы платили за их данные, но если вы это сделаете, вы наверняка получите хороший API, который вы можете использовать вместо скрининга экрана.

Другие вопросы по тегам