2015-04-04 14 views
0

Прошу прощения, если это дубликат, но я немного искал и ничего не нашел, может быть, я просто не знал, что искать.Python2.7: получить html веб-сайта, href становится «javascript: void (0)»

Я думаю, что этот вопрос говорит вам все.

Я использую Python2.7, чтобы получить html веб-сайта. После этого я хочу сохранить некоторые данные об этом веб-сайте (например, ссылки и т. Д.) И загрузить некоторые файлы на этом веб-сайте (автоматизированный с помощью python).

Теперь я столкнулся с проблемой, что одна из ссылок, которые я хочу, чтобы загрузить имеет значение: «JavaScript: недействительным (0)»

Вот мой код:

import urllib2 
response = urllib2.urlopen('http://www.japanesepod101.com/2006/01/16/survival-phrases-5-taxi/') 
html = response.read() 
f = open("Workfile", "w"); 
f.write(html) 

Я надеваю «т хотят идти к много детали, но при просмотре HTML-код веб-сайта у меня есть этот элемент:

<a class="media-download" download="" data-trackme="downloadaudio,33" href="http://media.libsyn.com/media/japanesepod101/029_S5_011606_jpod101.mp3" data-mode="audio">Download MP3<span class="download-tooltip" style="display: none;"><span class="corner"></span>Right Click &amp; 'Save As'</span></a> 

в моем файле, который creted этот элемент заключается в следующем:

<a class="media-download" data-trackme="downloadaudio,33" href="javascript:void(0)" data-mode="audio">Download MP3</a> 

Как я могу получить ссылку в своем файле?

Для начинающих (меня) с веб-сайтами python & похоже, что функции javascript не были вызваны (потому что он не открыт в браузере?), Так ли это?

+0

Похоже, что веб-сайт может генерировать ссылки, используя JavaScript, чтобы предотвратить то, что вы пытаетесь сделать. Вам нужно будет использовать отладчик JavaScript, чтобы выяснить, как их сайт делает это, прежде чем вы сможете реплицировать его в Python. –

+1

Hmm @JeremyBanks Я так и думал, но я посетил сайт с отключенным JS-исполнением, и ссылки были там. Неслучайно, почему ссылки разыгрываются таким образом, хотя - возможно, сайт отправляет разные данные на основе useragent (поэтому обычные браузеры получают нормальный HTML). – vlaz

+0

Я идиот. Это веб-сайт, где мне нужно сначала войти в систему .... Я попытаюсь войти и опубликовать свои результаты, то есть, если вопрос останется ... – Gamer2015

ответ

3

Вы можете использовать селен, который поможет загрузить JavaScript функции, а затем предоставить вам окончательный HTMLPage

Чтобы установить Селен

pip install selenium 

Вот решение.

from selenium import webdriver 

driver = webdriver.Firefox() 
driver.get('yoururl') 
htmlpage = driver.page_source 
outputfile = open('workfile','w') 
outputfile.write(htmlpage) 
outputfile.close() 
driver.close() 
Смежные вопросы