【问题标题】:web scraping selenium find elements by class name网页抓取 selenium 按类名查找元素
【发布时间】:2022-01-14 06:57:39
【问题描述】:

我尝试从该页面提取所有产品数据:

https://www.shufersal.co.il/online/he/קטגוריות/סופרמרקט/חטיפים%2C-מתוקים-ודגני-בוקר/c/A25

我想获取名称类为miglog-prod miglog-sellingmethod-by_unit的所有li标签

像这样:

<li class="miglog-prod miglog-sellingmethod-by_unit" data-product-name="צדפים דגנים בטעם שוקולד" data-entry-number=""
data-product-box
data-product-replace=""
data-product-price="12.9"
data-product-purchasable="false"
data-food="true"
data-selling-method="BY_UNIT"
data-product-code="P_7296073442226">

我试过了:

shufersal = "https://www.shufersal.co.il/online/he/קטגוריות/סופרמרקט/חטיפים%2C-מתוקים-ודגני-בוקר/c/A25"

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
    
driver = webdriver.Chrome(ChromeDriverManager().install())
    
import time
driver.get(shufersal)
for i in range(0,5): # here you will need to tune to see exactly how many scrolls you need
    driver.execute_script('window.scrollBy(0, 400)')
    time.sleep(1)
products = driver.find_elements_by_class_name("miglog-prod miglog-sellingmethod-by_unit")
    
print(products)

但我没有找到任何产品:

[]

【问题讨论】:

    标签: python selenium selenium-webdriver web-scraping beautifulsoup


    【解决方案1】:

    你可以做几件事:

    from selenium.webdriver.common.by import By
    
    products = driver.find_element_by_class_name(
        By.CSS_SELECTOR,
        ".miglog-prod.miglog-sellingmethod-by_unit"
    )
    

    或者,

    products = driver.find_elements_by_css_selector(
        "li.miglog-prod.miglog-sellingmethod-by_unit"
    )
    

    请注意,在第一种方法中,我只传递了类名,但在第二种方法中,我甚至传递了元素 (li)。

    (编辑:好的,我检查了 REPL,即使我没有通过 li,我也会得到元素,所以我不确定这里的行为。顺便说一句,我在 Firefox 上测试了这个。)

    根据我的阅读,你没有得到产品是因为find_elements_by_class_name 只需要一个类名,而你已经通过了两个..

    【讨论】:

      猜你喜欢
      • 2021-03-05
      • 2023-01-03
      • 2021-09-25
      • 1970-01-01
      • 2023-01-25
      • 1970-01-01
      • 2019-02-03
      • 2020-06-21
      • 2017-09-20
      相关资源
      最近更新 更多