私は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
どんな種類の手がかり/ヒントもありがたいです。
まあ、あなたは単にリストをループする必要があります。
elems = driver.find_elements_by_xpath("//a[@href]")
for elem in elems:
print elem.get_attribute("href")
find_elements_by_*
は要素のリストを返します(「要素」のスペルに注意してください)。リストをループし、各要素を取得して、必要な属性値をそこから取得します。 (この場合はhref
)
次のようなものを試すことができます:
links = driver.find_elements_by_partial_link_text('')
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を印刷します
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)