Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Web
  • » urllib и wiki не нравятся друг другу?) [RSS Feed]

#1 Сен. 19, 2010 20:23:52

MaDRuS
От:
Зарегистрирован: 2010-09-19
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

urllib и wiki не нравятся друг другу?)

Система:
Windows XP
Python 2.7
Цель: хочу прочитать страничку с википедии и еще загрузить рисунки и все остальное для локального отображения странички.
#——Код скрипта

# -*- coding: utf-8 -*-
from BeautifulSoup import BeautifulSoup
import re
import urllib
#-----------------------------------------------------------------------------
doc = urllib.urlopen("http://ru.wikipedia.org/wiki/Математика").read()
soup = BeautifulSoup(''.join(doc))
print soup.prettify()
Проблема:
Почему то не загружается та страница, а грузится html со следующей информацией:
————————————————————————————————————————
Русский

На серверах фонда «Викимедиа» возникли технические трудности. Проблема, скорее всего, носит временный характер и вскоре будет устранена. Пожалуйста, попробуйте обновить страницу через несколько минут.

Дополнительную информацию можно получить посетив IRC-канал #wikipedia-ru сети «Freenode» .

Если вы решите сообщить об ошибке нашему системному администратору, пожалуйста, передайте ему следующую техническую информацию.
Request: GET http://ru.wikipedia.org/wiki/%D0%9C%D0%B0%D1%82%D0%B5%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0, from Х.Х.Х.Х via knsq28.knams.wikimedia.org (squid/2.7.STABLE7) to ()
Error: ERR_ACCESS_DENIED, errno at Sun, 19 Sep 2010 16:55:09 GMT
————————————————————————————————————————
Через браузер страница загружается нормально.
Изменив запрашиваемый URL на yandex получил адекватную страничку…
————————————————————————————————————————
Вопрос:
1. Скажите пожалуйста что делать с вики?
2. И как загружать картинки и тд для локального просмотра



Отредактировано (Сен. 19, 2010 20:29:01)

Офлайн

#2 Сен. 19, 2010 21:09:55

Vader
От:
Зарегистрирован: 2010-01-30
Сообщения: 152
Репутация: +  0  -
Профиль   Отправить e-mail  

urllib и wiki не нравятся друг другу?)

1. Добавьте в запрос User-Agent. Это можно сделать с помощью urllib2, например.
2. Точно так же как и хтмл



Офлайн

#3 Сен. 20, 2010 21:54:12

MaDRuS
От:
Зарегистрирован: 2010-09-19
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

urllib и wiki не нравятся друг другу?)

Спасибо, так работает, но почему то все ссылки на странице file:///wiki/имя ссылки, а как оставлять все без изменения?

# -*- coding: utf-8 -*-

import re
import urllib
import urllib2
#-----------------------------------------------------------------------------
authinfo = urllib2.HTTPBasicAuthHandler()
authinfo.add_password('', '', '', '')

# Доступ через прокси
proxy_support = urllib2.ProxyHandler()
# Создание нового открывателя с указанными обработчиками
opener = urllib2.build_opener(proxy_support,authinfo,urllib2.CacheFTPHandler)
# Установка поля с названием клиента
opener.addheaders = [('User-agent', 'Mozilla/5.0')]
# Установка нового открывателя по умолчанию
urllib2.install_opener(opener)
# Использование открывателя
f = urllib2.urlopen('http://ru.wikipedia.org/wiki/Биология')
print f.read()



Офлайн

#4 Сен. 21, 2010 10:40:43

Vader
От:
Зарегистрирован: 2010-01-30
Сообщения: 152
Репутация: +  0  -
Профиль   Отправить e-mail  

urllib и wiki не нравятся друг другу?)

MaDRuS
Спасибо, так работает, но почему то все ссылки на странице file:///wiki/имя ссылки, а как оставлять все без изменения?
Все верно, так и должно быть, т.к. ссылки на странице относительные. Если хотите, чтобы ссылки все-таки указывали на wiki, вам придется заменить их самостоятельно.



Офлайн

  • Начало
  • » Web
  • » urllib и wiki не нравятся друг другу?)[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version