首页 > 解决方案 > 如何在较大的标签内识别正确的 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 )

标签: pythonseleniumgoogle-chromexpathweb-scraping

解决方案


您应该能够像这样使用直接 xpath 直接获取邮政编码值,

//span[@ng-show='x.agencyZip != ' '']
or 
//span[contains(@ng-show,'agencyZip')]

推荐阅读