urllib2 возвращает другую страницу браузера? - PullRequest
2 голосов
/ 09 июля 2010

Я пытаюсь почистить страницу (страницу администратора моего роутера), но устройство, похоже, отображает другую страницу для urllib2, чем для моего браузера. кто-нибудь нашел это раньше? Как я могу обойти это?

этот код я использую:

>>> from BeautifulSoup import BeautifulSoup
>>> import urllib2
>>> page = urllib2.urlopen("http://192.168.1.254/index.cgi?active_page=9133&active_page_str=page_bt_home&req_mode=0&mimic_button_field=btn_tab_goto:+9133..&request_id=36590071&button_value=9133")
>>> soup = BeautifulSoup(page)
>>> soup.prettify()

(вывод html удаляется при уценке)

Ответы [ 5 ]

5 голосов
/ 09 июля 2010

С firebug смотрите, какие заголовки и куки отправляются на сервер. Затем с помощью urllib2.Request и cookielib эмулируйте тот же запрос.

РЕДАКТИРОВАТЬ: Также вы можете использовать механизировать .

1 голос
/ 09 июля 2010

Проще, чем Wireshark, возможно, использовать Firebug , чтобы увидеть форму выполняемого запроса, а затем эмулировать его в вашем коде.

0 голосов
/ 05 декабря 2015

в моем случае это было одно из следующих действий:

1) Сайт понял, что доступ был не из браузера, поэтому мне пришлось подделать браузер в python, какthat:

# Build a opener to fake a browser... Google here I come!
opener = urllib2.build_opener()
# To fake the browser
opener.addheaders = [('User-agent', 'Mozilla/5.0')]
#Read the page
soup = BeautifulSoup(opener.open(url).read())

2) Содержимое страницы динамически заполнялось JavaScript.В этом случае прочитайте следующий пост: https://stackoverflow.com/a/11460633/2160507

0 голосов
/ 09 июля 2010

Возможно, это не работает, потому что вы не предоставили учетные данные для страницы администратора

Используйте mechanize , чтобы загрузить страницу входа и ввести имя пользователя / пароль.

Тогда вам нужно установить cookie, чтобы позволить вам перейти на страницу администратора.

Гораздо сложнее использовать только urllib2. Вам нужно будет самостоятельно управлять файлами cookie, если вы решите придерживаться этого маршрута.

0 голосов
/ 09 июля 2010

Используйте Wireshark , чтобы увидеть, как выглядит запрос вашего браузера, и добавьте недостающие части, чтобы ваш запрос выглядел одинаково.

Чтобы настроить заголовки urllib2, попробуйте this .

...