2016-12-24 10 views
1

Есть ли в любом случае, что я могу сделать python, щелкнуть ссылку, такую ​​как ссылка bit.ly, а затем очистить полученную ссылку? Когда я очищаю определенную страницу, единственной ссылкой, которую я могу очистить, является ссылка, которая перенаправляет, где она перенаправляется, где находится информация, в которой я нуждаюсь.В любом случае, чтобы очистить ссылку, которая перенаправляет?

+0

Да. Но мы не знаем, как исправить вашу программу, если мы не знаем более точно, что она делает. Пожалуйста, предоставьте краткую (пять или шесть строк) ** полную ** программу, которая демонстрирует ваш вопрос. [Изменить] ваш вопрос, чтобы включить весь [mcve]. Благодаря! –

+0

'request' автоматически выполняет перенаправления HTTP и сохраняет информацию обо всех URL-адресах в' r.history'. Если страница использует переадресацию 'HTML' (в теге' '), вы можете легко найти ее и использовать' request' с этим URL-адресом. 'запросы' могут не только перенаправлять перенаправления JavaScript, потому что он не выполняет JavaScript, и может быть слишком много возможных способов перенаправления для поиска url в коде. – furas

ответ

2

Есть 3 вида переадресаций

  • HTTP - как информация в заголовках ответа (с кодом 301, 302, 3xx)
  • HTML - в качестве тега <meta> в HTML (Википедия: Meta refresh)
  • JavaScript - в качестве кода, подобного window.location = new_url

requests выполнить HTTP переназначения и держать все URLs в r.history

import requests 

r = requests.get('http://' + 'bit.ly/english-4-it') 

print(r.history) 
print(r.url) 

результат:

[<Response [301]>, <Response [301]>] 
http://helion.pl/ksiazki/english-4-it-praktyczny-kurs-jezyka-angielskiego-dla-specjalistow-it-i-nie-tylko-beata-blaszczyk,anginf.htm 

КСТАТИ: SO не позволяет ставить Bitly ссылку в тексте, так что я использовал конкатенацию.

+0

Если на странице используется JavaScript, вы можете использовать 'Selenium' (или аналогичный модуль), чтобы открыть веб-браузер (который выполнит все JavaScript на странице) и управлять веб-браузером и получать данные, кнопки и т. Д. – furas

+0

, если вы знаете, эта страница перенаправляйте URL-адрес с помощью '? variant = 33334400198', тогда вы можете анализировать HTML и JavaScript, чтобы найти его, и каждый раз получать новое значение из кода. – furas

+0

Пожалуйста, уточните? Я не могу очистить и найти корреляцию с этим «? Variant = 33334400198» и продуктом, поэтому добавление этой строки в html не представляется возможным, является ли Selenium единственным способом получить этот URL-адрес? – ColeWorld

 Смежные вопросы

  • Нет связанных вопросов^_^