【问题标题】:Selenium can't find a CSS selectorSelenium 找不到 CSS 选择器
【发布时间】:2021-02-19 16:17:50
【问题描述】:

Selenium 在从网站准确检索 9 个条目后捕获 NoSuchElementException。我认为问题可能在于页面内容没有足够的时间加载,但我不确定。

我在YouTube tutorial(第十九分钟)之后编写了代码。

import requests
import json
import re
from bs4 import BeautifulSoup
from selenium import webdriver
import time


driver = webdriver.Chrome()

URL = 'https://www.alibaba.com//trade/search?fsb=y&IndexArea=product_en&CatId=&SearchText=white+hoodie'
time.sleep(1)

driver.get(URL)

driver.execute_script('window.scrollTo(0, document.body.scrollHeight)')
time.sleep(2)
driver.execute_script('window.scrollTo(0, document.body.scrollHeight)')
time.sleep(2)

items = driver.find_elements_by_css_selector('.J-offer-wrapper')

num = 1
for i in items:
    print(num)
    product_name = i.find_element_by_css_selector('h4').text
    price = i.find_element_by_css_selector('.elements-offer-price-normal').text
    time.sleep(0.5)
    num += 1
    print(price, product_name)


#driver.close()

如果您知道 Selenium 为何在第 10 个条目处停止以及如何解决此问题,请分享。

【问题讨论】:

  • 那是因为第 10 个元素、第 20 个、第 30 个等……是没有价格的“广告”。 imgur.com/a/ExoFNVA。最好尝试一下以某种方式跳过它: price = i.find_element_by_css_selector('.elements-offer-price-normal').text except NoSuchElementException: print("")

标签: python-3.x selenium web-scraping


【解决方案1】:

因为第 10 项与其他项不同,所以您会得到它。这是一个广告,而不是您搜索的连帽衫。我怀疑你想排除这个,所以你只剩下你真正感兴趣的结果。

您需要做的就是改变您识别items 的方式(这只是其中一个选项):

items = driver.find_elements_by_css_selector('.img-switcher-parent')

【讨论】:

    【解决方案2】:

    您需要更新如下错误处理:

        for i in items:
    
            print(num)
            try:
                product_name = i.find_element_by_css_selector('h4').text
            except:
                product_name=''
            try:
                price = i.find_element_by_css_selector('.elements-offer-pricenormal').text
            except:
                price=''
            time.sleep(0.5)
            num += 1
            print(price, product_name)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-08-08
      • 2015-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多