Получение конечного пункта назначения перенаправления javascript на веб-сайте

#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-адрес находится в ней. В противном случае эта функция может вызвать другую, к которой вам затем пришлось бы прибегнуть… Опять же, звучит не очень весело, но может быть выполнимо.