python - 如何在 Python 中使用 Selenium 动态生成多个 div

标签 python python-2.7 selenium selenium-chromedriver

How to extract text from divs in Selenium using Python when new divs are added every approx 1 second?

根据上面的答案,我有以下代码:

from selenium.webdriver.support.ui import WebDriverWait as wait
from selenium import webdriver

chrome_path = r"C:\scrape\chromedriver.exe"

driver = webdriver.Chrome(chrome_path)
driver.get("https://website.com/")
# Get current divs
messages = driver.find_elements_by_class_name('div_i_am_targeting')
# Print all messages
for message in messages:
    print(message.text)

while True:
    try:
        # Wait up to minute for new message to appear
        wait(driver, 60).until(lambda driver: driver.find_elements_by_class_name('div_i_am_targeting') != messages)
        # Print new message
        for message in [m.text for m in driver.find_elements_by_class_name('div_i_am_targeting') if m not in messages]:
            print(message)
        # Update list of messages
        messages = driver.find_elements_by_class_name('div_i_am_targeting')
    except:
        # Break the loop in case no new messages after minute passed
        print('No new messages')
        break

效果很好,可以捕获页面上出现的所有与 div_i_am_targeting 指定的类匹配的 div

此 HTML 页面上的 div 是动态生成的,大约每秒出现一个 div。

页面的实际结构是这样的:

<div class="div_i_am_targeting">
...
...
</div>
<div class="div_i_am_targeting">
...
...
</div>
<div class="div_i_am_targeting">
...
...
</div>
<div class="some_other_div">
...
...
</div>
<div class="div_i_am_targeting">
...
...
</div>
<div class="yet_another_div">
...
...
</div>
<div class="div_i_am_targeting">
...
...
</div>

这样,在动态创建的内容中,我当前定位的 div 之间就会出现其他 div。

页面上 div 的频率是可变的。

我在这里找不到任何相关问题,也找不到文档中的示例。

如何修改上面的代码,以便它抓取多个 div 的值,例如如果我想抓取上面示例中 div_i_am_targeting some_other_div 的所有实例?

最佳答案

您可以尝试更换

driver.find_elements_by_class_name('div_i_am_targeting')

driver.find_elements_by_css_selector('.div_i_am_targeting, .some_other_div')

在你的脚本中匹配两个 div

关于python - 如何在 Python 中使用 Selenium 动态生成多个 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53621759/

相关文章:

python - 删除 Python 字符串中第一个字符的时间复杂度是多少?

python - Django 通过多个过滤器过滤,检查某些条件

python - 如何下载PyHook模块

python - 如何根据 python 中的不同对象值对对象列表进行排序?

java - Internet Explorer 未选择网页上的元素

python - 如何在python中基于dct.keys创建组

python - 类ClassName与类ClassName(对象)

python - 使用 Python-Request 的 REST 发布

java - 错误 :cannot get automation extension for chrome with selenium

java - 使用 java 从组合框 selenium 驱动程序中选择一个项目