2013-12-03 8 views
3

Я пытаюсь создать программу для сбора ссылок и некоторых значений с веб-сайта. Он работает в основном хорошо, но я столкнулся с страницей, на которой он не работает.python, собирая ссылки/значения скриптов со страницы

С поджигатель я могу видеть, что это HTML-код иллюзорной «ссылка» (не могу найти его при просмотре источника страниц тыс):

<a class="visit" href="/tet?id=12&mv=13&san=221"> 

    221 

</a> 

и это скрипт:

<td><a href=\"/tet?id=12&mv=13&san=221\" class=\"visit\">221<\/a><\/td><\/tr> 

Мне интересно, как получить либо ссылку "("/tet? Id = 12 & mv = 13 & san = 221 ") из кода html, так и строку" 221 "либо из сценария, либо из html с использованием селена, механизации или запросов (или некоторой другой библиотеки)

Я сделал неудачную попытку при получении его с Mechanize использованием br.links функции(), в котором собраны несколько ссылок со стороны, просто не один я после

дополнительная информация: Это может быть важным. чтобы попасть на страницу, я должен нажать на кнопку с этим кодом:

<a id="f33" class="button-flat small selected-no" onclick="qc.pA('visitform', 'f33', 'QClickEvent', '', 'f52'); if ($j('#f44').length == 0) { $j('f44').style.display='inline'; }; $j('#f38').hide();qc.recordControlModification('f38', 'DisplayStyle', 'hide'); document.getElementById('forumpanel').className = 'section-3'; return false;" href="#"> 

    load2 

</a> 

после чего «новая страница» загружает в части окна (но никогда не изменяет URL)

ответ

1

Я думаю, вы вставили неправильный ваш сценарий;)

Я не уверен, что вам нужно точно - существует по крайней мере два разных подхода.

  • Matching все hrefs с использованием регулярных выражений
  • Соответствующие конкретные теги и с помощью GetAttribute (...)

Для первого, вы должны получить весь источник HTML страницы с чем-то вроде webdriver.page_source и использовать что-то вроде следующего регулярного выражения (вам придется бежать либо нормальный или двойные кавычки!):

<a.+?href=['"](.*?)['"].*?/?> 

Если вам нужны hrefs из все соответствующие ссылки, вы можете использовать что-то похожее на webdriver.find_elements_by_css_selector('.visit') (позаботьтесь о выборе find_elements_... вместо find_element_...!), чтобы получить список веб-элементов и прокрутить их, чтобы получить их атрибуты.

Это может привести к такому коду:

hrefs = [] 
elements = webdriver.find_elements_by_css_selector('.visit') 

for element in elements: 
    hrefs.append(element.getAttribute('href')) 

Или один лайнер, используя список понимание:

hrefs = [element.getAttribute('href') for element \ 
     in webdriver.find_elements_by_css_selector('.visit')] 
+0

СРЮ, вы правы. Я пропустил часть кода сценария lol .... Я попробую эти подходы и вернусь к результатам, спасибо – user3053161

+0

есть ли способ сделать «webdriver.find_element_by_css_selector («. Visit »). Get_attribute (« href »)) «найти все такие ссылки, а не только первые? если бы это было бы отличным решением этой проблемы – user3053161

+0

@ user3053161 Я отредактировал свой ответ - надеюсь, что все в порядке! Я не пробовал, и мои последние приключения на Питоне были несколько месяцев назад; поэтому, пожалуйста, сообщите мне о синтаксических ошибках или не стесняйтесь исправить свой ответ самостоятельно :) – stuXnet

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