如何在较大的<div>中的<span>标记中标识正确的xpath

时间:2019-07-01 14:45:11

标签: python selenium google-chrome xpath web-scraping

我正在处理的当前项目处理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:列表索引超出范围”退出代码。我尝试了各种不同的xpath,包括在检查框上单击鼠标右键时复制和粘贴xpath,更改xpath的[@id]部分等。我的目标是能够刮擦每个具有xpath的区域。页面上的邮政编码,因此是“ 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

1 个答案:

答案 0 :(得分:1)

您应该可以使用直接xpath这样直接获取邮政编码值

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