如何循环HTML并返回id值

时间:2017-07-18 21:46:24

标签: python html selenium web-scraping

我正在使用selenium导航到网页并将页面源存储在变量中。

from selenium import webdriver

driver = webdriver.PhantomJS()
driver.get("http://google.com")

html1 = driver.page_source

html1现在包含http://google.com的页面来源。

我的问题是如何返回id="id"name="name"等html选择器。

编辑:

例如: 我用selenium导航到的网页有一个带有4个标签的菜单栏。每个标签都有一个id元素; id="tab1"id="tab2",依此类推。我想返回每个id值。所以我想要tab1tab2,等等。

编辑#2:

另一个例子: 我网页上的主页(http://chrisarroyo.me)有几个带有ID的可点击链接。我希望能够将这些ID返回/打印到我的控制台。

所以我想返回Learn More按钮的ID和页脚中链接的ID(facebookLnkgithubLnk等。)

2 个答案:

答案 0 :(得分:2)

如果您要查找具有ID使用的Web元素列表:

elements = driver.find_elements_by_xpath("//*[@id]")

然后,您可以遍历该列表,并使用get_attribute_("id")提取每个元素特定的ID。

对于名称,它的代码几乎相同。除了将ID更改为name并且您已设置。

答案 1 :(得分:0)

谢谢你@stewartm你评论帮助。

这最终给了我正在寻找的结果:

from selenium import webdriver

driver = webdriver.PhantomJS()
driver.get("http://chrisarroyo.me")

id_elements = driver.find_elements_by_xpath("//*[@id]")

for eachElement in id_elements:
    individual_ids = eachElement.get_attribute("id")
    print(individual_ids)

运行上面的^^后,输出列出了指定网页上的每个ID。

输出:

navbarNavAltMarkup
learnBtn
githubLnk
facebookLnk
linkedinLnk