加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 如何激活每个项目并解析其信息?

发布时间:2020-12-16 22:32:04 所属栏目:Python 来源:网络整理
导读:我在使用python抓取网页时遇到了不同类型的问题.单击图像时,图像下会出现有关其“味道”的新信息.我的目标是解析连接到每个图像的所有风味.我的脚本可以解析当前活动图像的风格,但在单击新图像后会中断.我的循环中的一点点抽搐会引导我走向正确的方向. 我尝

我在使用python抓取网页时遇到了不同类型的问题.单击图像时,图像下会出现有关其“味道”的新信息.我的目标是解析连接到每个图像的所有风味.我的脚本可以解析当前活动图像的风格,但在单击新图像后会中断.我的循环中的一点点抽搐会引导我走向正确的方向.

我尝试过:

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

driver = webdriver.Chrome()
driver.get("https://www.optigura.com/uk/product/gold-standard-100-whey/")
wait = WebDriverWait(driver,10)

while True:
    items = wait.until(EC.presence_of_element_located((By.XPATH,"//div[@class='colright']//ul[@class='opt2']//label")))
    for item in items.find_elements_by_xpath("//div[@class='colright']//ul[@class='opt2']//label"):
        print(item.text)

    try:
        links = driver.find_elements_by_xpath("//span[@class='img']/img")
        for link in links:
            link.click()
    except:
        break

driver.quit() 

下面的图片可能会澄清我无法做到的事情:

enter image description here

最佳答案
我调整了代码以正确点击链接并检查当前列出的项目的文本是否与活动列出项目的文本匹配.如果它们匹配,您可以安全地继续解析而不必担心您一遍又一遍地解析相同的事情.干得好:

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

driver = webdriver.Chrome()
driver.get("https://www.optigura.com/uk/product/gold-standard-100-whey/")
wait = WebDriverWait(driver,10)
links = driver.find_elements_by_xpath("//span[@class='img']/img")

for idx,link in enumerate(links):
    while True:
        try:
            link.click()
            while driver.find_elements_by_xpath("//span[@class='size']")[idx].text != driver.find_elements_by_xpath("//div[@class='colright']//li[@class='active']//span")[1].text:
                link.click()
            print driver.find_elements_by_xpath("//span[@class='size']")[idx].text
            items = wait.until(EC.presence_of_element_located((By.XPATH,"//div[@class='colright']//ul[@class='opt2']//label")))
            for item in items.find_elements_by_xpath("//div[@class='colright']//ul[@class='opt2']//label"):
            print(item.text)
        except StaleElementReferenceException:
            continue
        break
driver.quit()

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读