python - Selenium 无法通过 xpath 找到所有元素
问题描述
我使用 selenium 来抓取网站的数据并执行以下代码
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
chromeDriverPath = 'C:\Program Files (x86)\chromedriver.exe'
url = 'https://shopee.vn/Th%E1%BB%9Di-Trang-Nam-cat.11035567?page=0'
driver = webdriver.Chrome(chromeDriverPath)
driver.get(url)
try:
main_xpath = '/html/body/div[1]/div/div[3]/div/div[4]/div[2]/div/div[2]'
main = WebDriverWait(driver,20).until(
EC.presence_of_element_located((By.XPATH,main_xpath))
)
product_list = main.find_elements(By.XPATH,'./div[@data-sqe="item"]')
i=1
for i in range(0,len(product_list)):
print(i)
print(product_list[i].text)
finally:
driver.close()
但它只返回前 15 个非空元素,其余的都是空的,尽管它似乎返回了product_list
正好的数字元素。
那么,我怎样才能找到 的所有元素product_list
?
解决方案
for i in range(1,int(len(product_list)/15)):
driver.execute_script("arguments[0].scrollIntoView();", product_list[i*15])
time.sleep(5)
这是我向下滚动 15 个元素然后等待它加载的一个技巧。
推荐阅读
- google-bigquery - 如何从 Big Query 中提取日期和时间
- javascript - 如何向此 Node JS 函数添加变量
- google-apps-script - 根据 Google 表格中的多个条件(逗号分隔值)从特定列中检索数据
- windows - 在命令行中更新/更改设备驱动程序软件
- distribution - 每个代理创建的自定义选项分配
- kubernetes - 如何使用 Helm 设置 TDengine 集群
- watson-knowledge-catalog - WKC有自己的版本,还是只是CP4D的版本?
- c++ - 重载先前在命名空间函数模板中定义的编译错误
- java - Counting a sum of a closed interval
- python - 如果位置存在于范围内,则按行索引填充每列的数据框值