我想从网站打印所有href(链接)。所有这些href都存储在' a'标签,这些标签存储在' li'标签。现在,我知道如何选择所有的李。我需要一种方法来选择li中的所有内容来获得' href'属性。试过以下但是并没有真正发挥作用。
li = driver.find_elements_by_tag_name('li')
for link in li:
a_childrens = link.find_element_by_tag_name('a')
for a in a_children
(print a.get_attribute('href'))
提前致谢。
答案 0 :(得分:6)
我推荐使用css_selector而不是tag_name
aTagsInLi = driver.find_elements_by_css_selector('li a')
for a in aTagsInLi:
(print a.get_attribute('href'))
答案 1 :(得分:3)
尝试直接选择链接:
links = driver.find_elements_by_tag_name('a')
答案 2 :(得分:2)
你有正确的想法,但问题的一部分是a_childrens = link.find_element_by_tag_name('a')
会为你提供你正在寻找的东西,但是你基本上把所有这些都丢掉了,因为你把它们带进了循环,但是当你在循环中时,不要对它们做任何事情。所以你只剩下最后一次迭代的变量。
正确实施的解决方案可能看起来像这样
list_items = driver.find_elements_by_tag_name("li")
for li in list_items:
anchor_tag = li.find_element_by_tag_name("a")
print(anchor_tag.get_attribute('href'))
也就是说,理解HTML布局如您所描述的那样,如:
<li><a href="foo">Hello</a></li>
<li><a href="bar">World!</a></li>
答案 3 :(得分:0)
find_element_by_xpath 可以解决问题......
links = driver.find_elements_by_xpath('//li/a/@href')