#python #urllib2
#питон #urllib2 #python
Вопрос:
Я анализирую веб-сайт с помощью python. Они используют много перенаправлений, и они делают их, вызывая функции javascript.
Поэтому, когда я просто использую urllib для синтаксического анализа сайта, это мне не помогает, потому что я не могу найти целевой URL в возвращаемом html-коде.
Есть ли способ получить доступ к DOM и вызвать правильную функцию javascript из моего кода python?
Все, что мне нужно, это URL, куда перенаправление приведет меня.
Комментарии:
1. есть только трудный способ: синтаксический анализ html, построение dom и выполнение javascript точно так же, как это делал бы настоящий браузер
2. Или другой сложный способ: используйте такой инструмент, как Selenium или привязки WebKit, для управления реальным движком браузера с помощью Python.
3. НЕ то, что я хотел услышать,…
Ответ №1:
Я заглянул в Selenium. И если вы не используете чистый скрипт (то есть у вас нет дисплея и вы не можете запустить «обычный» браузер), решение на самом деле довольно простое:
from selenium import webdriver
driver = webdriver.Firefox()
link = "http://yourlink.com"
driver.get(link)
#this waits for the new page to load
while(link == driver.current_url):
time.sleep(1)
redirected_url = driver.current_url
Для моего использования этого более чем достаточно. Selenium также может взаимодействовать с формами и отправлять нажатия клавиш на веб-сайт.
Комментарии:
1. это будет отключено навсегда, если URL не перенаправлен (изменен)
Ответ №2:
Для меня это звучит не очень весело, но каждая функция javascript — это также объект, поэтому вы можете просто прочитать функцию, а не вызывать ее, и, возможно, URL-адрес находится в ней. В противном случае эта функция может вызвать другую, к которой вам затем пришлось бы прибегнуть… Опять же, звучит не очень весело, но может быть выполнимо.