3 回答

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超9個(gè)贊
提取所有鏈接應(yīng)該用循環(huán):
1234 | urls = driver.find_elements_by_xpath( "//a" ) for url in urls: print (url.get_attribute( "href" )) |
如果get_attribute方法報(bào)錯(cuò)應(yīng)該是沒(méi)有找到a標(biāo)簽對(duì)象,如果確定是有的話,可能是頁(yè)面加載比較慢還沒(méi)加載出來(lái),selenium默認(rèn)是不會(huì)等待對(duì)象出現(xiàn)的,需要在找對(duì)象前加一些等待時(shí)間;另外如果頁(yè)面上有iframe的話需要先切換進(jìn)去才能找到里面的對(duì)象。

TA貢獻(xiàn)2037條經(jīng)驗(yàn) 獲得超6個(gè)贊
解決辦法:
使用selenium.webdriver.remote.webelement.WebElement提供的get_attribute方法。
通過(guò)get_attribute拿到該a標(biāo)簽的各種屬性,通過(guò)判斷找到符合要求的元素進(jìn)行點(diǎn)擊。
get_attribute("href") 得到a標(biāo)簽對(duì)應(yīng)的目標(biāo)頁(yè)面的URL,對(duì)URL進(jìn)行判斷就可以了解到該頁(yè)面是否站內(nèi)頁(yè)面。我們可以知道,如果是站內(nèi)頁(yè)面的話這個(gè)屬性一般會(huì)是一個(gè)相對(duì)路徑,或者包含了本站域名,但如果是站外頁(yè)面的話,那它一定是包含了“http”的一個(gè)url。
get_attribute("target")如果target不是"_blank"的話,可以判斷該頁(yè)面是在本窗口跳轉(zhuǎn)的
添加回答
舉報(bào)