如何使用Python和Selenium获取特定数据

2024-10-01 07:27:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我是来自日本的阿宽。 我刚开始自己用Selenium学习Python

如果有人帮我解决以下问题,我很高兴

“p”标签中包含的“数据”的数量总是会发生变化,所以不知道每次会显示多少数据。 数据4始终显示,但顺序已更改。 这些数据也被分配到同一类

例如,如果样本A数据4是第四个,但样本B是第二个。 请帮助我如何获取“数据4”

提前谢谢你的帮助

(sample A)
----------------------------------------
<div class="elist" id="test">
    <ul class="ijkl">
        <li class="elRow">
            <div class="elRowTitle">
                <p>Code1</p>
            </div>
            <div class="elRowData">
                <p>Data1</p>
            </div>
        </li>
        <li class="elRow">
            <div class="elRowTitle">
                <p>Code2</p>
            </div>
            <div class="elRowData">
                <p>Data2</p>
            </div>
        </li>
        <li class="elRow">
            <div class="elRowTitle">
                <p>Code3</p>
            </div>
            <div class="elRowData">
                <p>Data3</p>
            </div>
        </li>
        <li class="elRow">
            <div class="elRowTitle">
                <p>Code4</p>
            </div>
            <div class="elRowData">
                <p>Data4</p>
            </div>
        </li>
    </ul>
</div>
----------------------------------------

(sample B)
----------------------------------------
<div class="elist" id="test">
    <ul class="ijkl">
        <li class="elRow">
            <div class="elRowTitle">
                <p>Code1</p>
            </div>
            <div class="elRowData">
                <p>Data1</p>
            </div>
        </li>
        <li class="elRow">
            <div class="elRowTitle">
                <p>Code4</p>
            </div>
            <div class="elRowData">
                <p>Data4</p>
            </div>
        </li>
    </ul>
</div>
----------------------------------------

我为示例A和B使用“find_elements_by_xxxxx”方法编写了以下脚本,但没有起作用

from selenium import webdriver 
browser = webdriver.Chrome('chromedriver.exe') 
elem_ItemCodes = driver.find_elements_by_tag_name('div') 
elem_ItemCodes2 = elem_ItemCodes.find_elements_by_class_name('elRowData') 
elem_ItemCode = elem_ItemCodes2[3].text 
print(elem_ItemCode)

Tags: 数据sampledivbylielementsfindul
1条回答
网友
1楼 · 发布于 2024-10-01 07:27:47

您可以使用父对象作为参考

xpath等价物将是:

//div[@id="test"]//div[@class="elRowData"][4]/p

您的方法是正确的,但要做一些更改,如:

from selenium import webdriver 
browser = webdriver.Chrome('chromedriver.exe') 
elem_ItemCodes = driver.find_elements_by_id('test') 
elem_ItemCodes2 = elem_ItemCodes.find_elements_by_class_name('elRowData') 
elem_ItemCode = elem_ItemCodes2[4].find_elemen_by_tag_name("p").text 
print(elem_ItemCode)

文本位于p标记中,xpath中的索引从1开始,而不是从0开始

相关问题 更多 >