我是Web抓取的新手,我尝试打开与硒的链接:
在Google Chrome上,我使用我要打开的按钮进行检查,并获得以下信息:
<a href="/c#candidates?id=a6b0e325a499&candidateFilter=4af15d8991a8" data-tn-link="true" data-tn-element="view-unread-candidates"><span class="jobs-u-font--bold">(4 awaiting review)</span></a>
我尝试获取所有具有相同结构的链接并打开它,以便我可以访问其数据
(我有几个按钮具有相同的结构,但我需要看到的href不同)
在Properties
下,我也可以看到a
的相同按钮。
但是我想比只使用上面提到的那些特定链接更精确:
elements = driver.find_elements_by_tag_name("a")
有人可以建议吗?
答案 0 :(得分:2)
您可以使用//a[@data-tn-element = 'view-unread-candidates']
,它将列出所有未读的候选者。
如果您想通过候选人ID来确定特定候选人,请使用以下xpath。并设置带有所需ID的候选人ID。
candidateId = 'a6b0e325a499'
"//a[@data-tn-element = 'view-unread-candidates'][contains(@href,'id=" + candidateId + "')]"
答案 1 :(得分:1)
我会用
elem = driver.find_element_by_class_name("jobs-u-font--bold")
要获得<span>
,因为这似乎是一个唯一的类名(尽管我不能确定您的帖子中有什么名字)。然后,您可以通过以下方式达到<a>
级别
a_elem = elem.find_element_by_xpath("..")
然后您可以a_elem.click()
或尝试做的任何事情。
答案 2 :(得分:1)
要访问定位标记,您可以使用属性为data-tn-element="view-unread-candidates"
的css选择器,我相信所有定位标记都应该相同。
elements=driver.find_elements_by_css_selector('a[data-tn-element="view-unread-candidates"]')
for ele in elements:
print(ele.get_attribute("href"))
或者,如果您想使用子元素然后想要获取父标记,请尝试使用xpath编写以下代码。
elements=driver.find_elements_by_xpath("//span[@class='jobs-u-font--bold']")
for ele in elements:
print(ele.find_element_by_xpath("./parent::a").get_attribute('href'))
答案 3 :(得分:0)
我会使用:
列表元素= driver.findElements(By.xpath(“ // a [@ data-tn-element ='view-unread-candidates']”)))
Iterator<WebElement> iter = elements.iterator();
while (iter.hasNext()) {
WebElement item = iter.next();
String href = item.getAttribute("href");
System.out.println("href is " + href);
}
}
如果您要单击具有特定href的链接,则可以在上述代码中获取href后放置if条件。当满足该条件时,单击元素。