python - 如何在较大的标签内识别正确的 xpath
问题描述
我正在处理的当前项目处理来自 Selenium 的“find_elements_by_xpath”命令。它进展顺利,但是我无法为 div 标签内的 span 标签之间的一个区域识别正确的 xpath。这是我想要获得的元素:
<div class="agencyAddress">
<span ng-show="x.agencyAddress1 != ' '" class="ng-binding">2115 W CHICAGO AVE </span>
<br>
<span ng-show="x.agencyCity != ' '" class="ng-binding">CHICAGO , </span>
<span ng-show="x.agencyState != ' '" class="ng-binding">IL</span>
this one here --> <span ng-show="x.agencyZip != ' '" class="ng-binding">60622-7976</span>
<br>
</div>
每次我尝试不同的 xpath 时,我都会收到“IndexError:list index out of range”退出代码。我尝试了一系列不同的 xpath,从在检查框中右键单击时复制和粘贴 xpath,更改 xpath 的 [@id] 部分等。我的目标是能够抓取每个区域页面上的邮政编码,因此是“find_elements_by_xpath”命令,这就是我得到这个特定退出代码的原因。
我非常感谢任何和所有的想法/帮助。谢谢!
(作为参考,这是我目前拥有的 python 代码和我正在抓取的网站的链接:
Zip_Code = driver.find_elements_by_xpath('//* [@id="appSection"]/div[2]/div/div[3]/div[1]/div/div/div[1]/div/div[1]/div[4]/div[1]/span[4]')
Zip1 = Zip_Code[0].text
Zip2 = Zip_Code[1].text
Zip3 = Zip_Code[2].text
Zip4 = Zip_Code[3].text
Zip5 = Zip_Code[4].text
Zip6 = Zip_Code[5].text
Zip7 = Zip_Code[6].text
Zip8 = Zip_Code[7].text
Zip9 = Zip_Code[8].text
Zip10 = Zip_Code[9].text
链接:https ://insurance-agent.safeco.com/find-an-insurance-agency/app/search-results-locationSearch=60612 )
解决方案
您应该能够像这样使用直接 xpath 直接获取邮政编码值,
//span[@ng-show='x.agencyZip != ' '']
or
//span[contains(@ng-show,'agencyZip')]
推荐阅读
- ffmpeg - 如何在ffmpeg中添加“dmb1”四个字符代码?
- mongodb - 如何在 MongoDB 中使相同的集合内部连接等效?
- linux - 是否可以向 V4L2 添加新配置?
- css - Autoprefixer 不适用于 neutrino 和 webpack
- javascript - 为什么 HtmlUnit 最新版本在无头模式下呈现 d3 版本 6 时会引发 JS 错误?
- python - Python,解析多行字符串提取字符和数字子字符串
- flutter - 如何防止 Flutter 中的导航循环
- angular - 如何在范围模式下将输入绑定到 saturn-datepicker?角
- rotation - 特征,链接平移和旋转
- pandas - 使用 datatable 有没有办法比 DataFrame 更快地追加?