Получить все ссылки href с использованием селена в python

Я занимаюсь селеном на питоне, и я хотел получить все ссылки на веб-странице, используя селен.

Например, я хочу, чтобы все ссылки в теге 'a href' были размещены на этом веб-сайте: http://psychoticelites.com/

Я написал сценарий, и он работает. Но это скорее дает мне адрес объекта. Я попытался использовать тег 'id', чтобы получить значение, но оно не работает.

Мой текущий скрипт:

from selenium import webdriver from selenium.webdriver.common.keys import Keys driver = webdriver.Firefox() driver.get("http://psychoticelites.com/") assert "Psychotic" in driver.title continue_link = driver.find_element_by_tag_name('a') elem = driver.find_elements_by_xpath("//*[@href]") #x = str(continue_link) #print continue_link #print elem z = elem print z 

Любой признак / намек был бы оценен.

Ну, вам нужно просто прокрутить список.

 elems = driver.find_elements_by_xpath("//a[@href]") for elem in elems: print elem.get_attribute("href") 

find_elements_by_* возвращает список элементов (обратите внимание на правописание «элементов»). Прокрутите список, возьмите каждый элемент и выберите требуемое значение атрибута, которое вы хотите от него. (в этом случае href )

Вы можете импортировать HTML dom с помощью библиотеки html dom в python. Вы можете найти его здесь и установить с помощью PIP:

https://pypi.python.org/pypi/htmldom/2.0

 from htmldom import htmldom dom = htmldom.HtmlDom("https://www.github.com/") dom = dom.createDom() 

Вышеприведенный код создает объект HtmlDom. HtmlDom принимает параметр по умолчанию, url страницы. Когда объект dom создается, вам нужно вызвать метод createDom для HtmlDom . Это проанализирует данные html и построит дерево разбора, которое затем может быть использовано для поиска и обработки данных html. Единственное ограничение, накладываемое библиотекой, заключается в том, что данные, будь то html или xml, должны иметь корневой элемент.

Вы можете запросить элементы, используя метод «Найти» объекта HtmlDom:

 p_links = dom.find("a") for link in p_links: print ("URL: " +link.attr("href")) 

Вышеприведенный код распечатает все ссылки / URL-адреса, присутствующие на веб-странице

Вы можете попробовать что-то вроде:

  links = driver.find_elements_by_partial_link_text('')