2016-01-13 52 views
10

私はPythonでセレンを練習しています。セレンを使ってウェブページ上のすべてのリンクを取得したいと思っていました。pythonでセレニウムを使ってhrefリンクをすべて取得する

例えば、I「は、このウェブサイトからの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 

手掛かり/ヒントの任意の種類をいただければ幸いです

+0

オブジェクトアドレスの代わりにあなたはどうしますか? – Guy

+0

実際の 'VALUE'すなわちリンクそのもの。 – Xonshiz

答えて

16

まあ、リストをループするだけです。

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

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

+1

ああ、あなたは命の恩人です。ありがとう、ジェイソン。 – Xonshiz

+0

xpathが「推奨されていません」と書かれていますが、stackoverflowの答えのほとんどはxpathを使用しているというのはなぜですか? – Ywapom

1

HTML domは、Pythonでhtml domライブラリを使用してインポートできます。あなたはここでそれを超える見つけ、PIPを使用してインストールすることができます:

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

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

上記のコードはHtmlDom object.The HtmlDomは、デフォルトのパラメータ、ページのURLをとり作成します。 DOMオブジェクトが作成されたら、HtmlDomの "createDom"メソッドを呼び出す必要があります。これにより、htmlデータが解析され、解析ツリーが構築され、htmlデータの検索と操作に使用されます。ライブラリが課す唯一の制限は、htmlかxmlのいずれかのデータがルート要素を持たなければならないということです。

あなたはHtmlDomオブジェクトの「見つける」方法使用して要素を照会することができます:上記のコードは、Webページ上に存在するすべてのリンク/ URLを出力します

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

+0

スニペットを貼り付けるのではなく、コードと回答を説明してください。スタックオーバーフローへようこそ!あなたは[ツアー]を受けたいかもしれません! – Docteur

0

あなたが好きなものを試すことができます:

links = driver.find_elements_by_partial_link_text('') 
+0

もう少し説明が参考になるかもしれません。 – GhostCat

関連する問題