2013-03-13 11 views
5

私はSeleniun WebDriverとPythonには新しく、私の質問は基本的なものかもしれません。私はそのXPathが".//*[@id='toplevel_page_menu']/ul/li[2]/a"であることを知って、XPathの手段を、それのうち、HREFを抽出することにしようとしていますSelenium WebdriverとPythonを使用してXPathからのリンクを抽出しますか?

<a class="wp-first-item" href="admin.php?page=account">Account</a> 

そして

だから、私は、次のHTMLコードを持っています。

どうすればよいですか?

driver.find_element_by_xpath(".//*[@id='toplevel_page_menu']/ul/li[2]/a").link 

または

driver.find_element_by_xpath(".//*[@id='toplevel_page_menu']/ul/li[2]/a").href 

で、その結果、動作するようには思えない:

AttributeError: 'WebElement' object has no attribute 'link' 

私は"admin.php?page=account"ようになり、結果を期待しています。

答えて

6

あなたはget_attributeを使用することができます。

element = driver.find_element_by_xpath(".//*[@id='toplevel_page_menu']/ul/li[2]/a") 
href = element.get_attribute('href') 
print href 

は、通常、私は、ページに移動し、ソースを取得し、BeautifulSoupでそれを解析するためにセレンを使用します。

from BeautifulSoup import BeautifulSoup 

# On the current page 
source = driver.page_source 
soup = BeautifulSoup(source) 

href = soup('<the tag containing the anchor>',{'id':'toplevel_page_menu'})[0]('ul')[0]('li')[2]('a')[0]['href'] 

残念ながら、BeautifulSoupはXPathをサポートしていません、上記はあなたのxpathのBS表現です(私が理解している限り)。

+0

get_attribute()が機能するためには、エキゾチックなものをインポートする必要がありますか? 最後に/ @ hrefを追加しても動作しないようです。 –

+0

'get_attribute'を使って' element = driver.find_element_by_xpath( ".//*[ id = 'toplevel_page_menu']/ul/li [2]/a") 'を試してください:' print element.get_attribute( 'href') '。それはうまくいくかもしれない。私は混乱のために申し訳ありません、私は通常、セレンを介してソースデータを抽出しません。私が言ったように、私は通常BSを使います。 – That1Guy

関連する問題