首页 > 解决方案 > Web-Scrape ,寻找更好的方法来获取类或标记 xpath 和动态网页

问题描述

这是我的网络抓取目标站点。 https://www.aliexpress.com/wholesale?catId=0&SearchText=ipad&SortType=default&g=n&page=1

使用此代码,我可以获得 60 件商品。

import time
from selenium import webdriver
from time import sleep

options = webdriver.ChromeOptions()
options.add_argument('headless')
options.add_experimental_option('excludeSwitches', ['enable-logging'])
options.add_argument('--lang=en')
driver = webdriver.Chrome(r'c:\chromedriver\chromedriver.exe', options=options)
options.add_argument(
    "user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36")
url = 'https://www.aliexpress.com/wholesale?catId=0&SearchText=ipad&SortType=default&g=n&page=1'
driver.get(url)
sleep(1)
y = 1000
for timer in range(0, 13):
    driver.execute_script("window.scrollTo(0, " + str(y) + ")")
    y += 1000
    time.sleep(1)

items = driver.find_elements_by_xpath('//div[contains(@class, "_2E_KG")]')
print(len(items))

我发现这个网页是动态的,所以我添加了这样的滚动。

for timer in range(0, 13):
    driver.execute_script("window.scrollTo(0, " + str(y) + ")")
    y += 1000
    time.sleep(1)

它有点慢,但对我来说看起来不错。或者你有更好的想法吗?

并使用下面的 xpath 查找来获取项目。

items = driver.find_elements_by_xpath('//div[contains(@class, "_2E_KG")]')

在此处输入图像描述

但我相信有一天类名(_2E_KG)会改变,我想放入一个稳定的xpath,但我不知道它会是什么。

标签: pythonweb-scrapingxpath

解决方案


您可以使用开发工具轻松获取 XPath,如下所示:

在此处输入图像描述

结果将是//*[@id="root"]/div/div/div[2]/div[2]/div/div[2]/div[1],最后删除[1]并且您动态地拥有您的 XPath!


推荐阅读