web-dev-qa-db-ja.com

pythonでSeleniumを使用してすべてのhrefリンクを取得します

私はSeleniumをpythonで練習しています。Seleniumを使用してWebページ上のすべてのリンクを取得したかったのです。

たとえば、このウェブサイトの「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

どんな種類の手がかり/ヒントもありがたいです。

18
Xonshiz

まあ、あなたは単にリストをループする必要があります。

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

find_elements_by_*は要素のリストを返します(「要素」のスペルに注意してください)。リストをループし、各要素を取得して、必要な属性値をそこから取得します。 (この場合はhref

37
JRodDynamite

次のようなものを試すことができます:

    links = driver.find_elements_by_partial_link_text('')
1
Shawn

Pythonのhtml domライブラリを使用してHTML domをインポートできます。ここで見つけて、PIPを使用してインストールできます。

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

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

上記のコードはHtmlDomオブジェクトを作成します。HtmlDomはデフォルトのパラメーターであるページのURLを取ります。 domオブジェクトが作成されたら、HtmlDomの「createDom」メソッドを呼び出す必要があります。これにより、htmlデータが解析され、解析ツリーが構築されます。このツリーは、htmlデータの検索と操作に使用できます。ライブラリが課す唯一の制限は、htmlまたはxmlのどちらのデータでもルート要素が必要であることです。

HtmlDomオブジェクトの「find」メソッドを使用して要素を照会できます。

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

上記のコードは、Webページに存在するすべてのリンク/ URLを印刷します

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