python - 无法使用 selenium 定位元素列表
问题描述
我需要刮一些页面。我想要的部分的确切结构如下:
<div class="someclasses">
<h3>...</h3> # Not needed
<ul class="ul-class1 ul-class2">
<li id="li1-id" class="li-class1 li-class2">
<div id ="div1-id" class="div-class1 div-class2 ... div-class6">
<div class="div2-class">
<div class="div3-class">...</div> #Not needed
<div class="div4-class1 div4-class2 div4-class3">
<a href="href1" data-control-id="id1" data-control-name="name" id ="a1-id" class="a-class1 a-class2">
<h3 class="h3-class1 h3-class2 h3-class3">Text1</h3>
</a></div>
<div>...</div> # Not needed
</div>
</li>
<li id="li2-id" class="li-class1 li-class2">
<div id ="div2-id" class="div-class1 div-class2 ... div-class6">
<div class="div2-class">
<div class="div3-class">...</div> #Not needed
<div class="div4-class1 div4-class2 div4-class3">
<a href="href2" data-control-id="id2" data-control-name="name" id ="a2-id" class="a-class1 a-class2">
<h3 class="h3-class1 h3-class2 h3-class3">Text2</h3>
</a></div>
<div>...</div> # Not needed
</div>
</li>
# More <li> elements
</ul>
</div>
现在我想要的是得到Texts
和hrefs
. 我在上面的例子中使用的命名完全现实,即相同的名称在真实的网页中也是相同的。我目前使用的代码是:
elems = driver.find_elements_by_xpath("//div[@class='someclasses']/ul[@class='ul-class1']/li[@class='li-class1']")
print(len(elems))
for elem in elems:
elem1 = driver.find_element_by_xpath("./a[@data-control-name='name']")
names2.append(elem1.text)
print(elem1.text)
hrefs.append(elem.get_attribute("href"))
print
上面语句的结果就是0
这样基本没有找到元素。谁能告诉我我做错了什么。
解决方案
您只使用了类名的一部分...在 XPATH 中您需要完整的类名...
仅供参考:使用 CSS,您可以使用类名的一部分......
如果您想使用 XPATH,请尝试:
elems = driver.find_elements_by_xpath("//div[@class='someclasses']//li//a")
print(len(elems))
for elem in elems:
names2.append(elem.text)
print(elem.text)
new_href = elem.get_attribute("href")
print(new_href)
hrefs.append(new_href)
对于 CSS 使用:div.someclasses ul.ul-class1
elems = driver.find_elements_by_css_selector("div.someclasses ul.ul-class1 li a")
for elem in elems:
names2.append(elem.text)
print(elem.text)
new_href = elem.get_attribute("href")
print(new_href)
hrefs.append(new_href)
推荐阅读
- mocha.js - mocha 如何在两个 it 块之间使用同一页面
- ios - 如何逐像素缓慢渲染完整图像?
- javascript - 如何在 JavaScript 中使用箭头键在 ContentEditable div 之间导航?
- hive - 如何在蜂巢中丢水桶?
- scheme - 获取列表列表中的第二项
- .net - ASP.NET MVC 5 项目中的 PackageReferenec
- javascript - 在局部视图中从 PageModel 获取对象
- python - 在连接两行的熊猫中添加新行
- javascript - 如何避免嵌套的 Promises 从 Firestore 读取并等待所有解决?
- java - System.console.readLine() 能够编辑的默认值