wake-up-neo.net

Holen Sie sich alle Href-Links mit Selen in Python

Ich übe Selenium in Python und ich wollte alle Links auf einer Webseite mit Selenium abrufen.

Zum Beispiel möchte ich alle Links in einem href-Tag von dieser Website: http://psychoticelites.com/

Ich habe ein Skript geschrieben und es funktioniert. Es gibt mir aber eher die Objektadresse. Ich habe versucht, den "id" -Tag zu verwenden, um den Wert abzurufen, aber es funktioniert nicht.

Mein aktuelles Skript: -

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

Jede Art von Hinweis/Hinweis wäre dankbar.

14
Xonshiz

Nun, Sie müssen die Liste einfach durchlaufen. 

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

find_elements_by_* gibt eine Liste von Elementen zurück (Beachten Sie die Schreibweise von 'Elementen'). Durchlaufen Sie die Liste, nehmen Sie jedes Element und rufen Sie den gewünschten Attributwert ab. (in diesem Fall href)

29
JRodDynamite

Sie können so etwas versuchen:

    links = driver.find_elements_by_partial_link_text('')
1
Shawn

Sie können den HTML-Dom mithilfe der HTML-Dom-Bibliothek in Python importieren. Sie finden es hier und installieren es mit PIP:

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

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

Der obige Code erstellt ein HtmlDom-Objekt. Das HtmlDom verwendet einen Standardparameter, die URL der Seite. Nachdem das dom-Objekt erstellt wurde, müssen Sie die Methode "createDom" von HtmlDom aufrufen. Dadurch werden die HTML-Daten analysiert und der Analysebaum erstellt, der dann zum Suchen und Bearbeiten der HTML-Daten verwendet werden kann. Die einzige Einschränkung, die die Bibliothek auferlegt, besteht darin, dass die Daten, ob HTML oder XML, ein Root-Element haben müssen.

Sie können die Elemente mit der "find" -Methode des HtmlDom-Objekts abfragen:

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

Der obige Code druckt alle auf der Webseite vorhandenen Links/URLs

1
Python_Novice
import requests
from Selenium import webdriver
import bs4
driver = webdriver.Chrome(r'C:\chromedrivers\chromedriver') #enter the path
data=requests.request('get','https://google.co.in/') #any website
s=bs4.BeautifulSoup(data.text,'html.parser')
for link in s.findAll('a'):
    print(link)
0
Anupriya Nishad