Selenium python 函数 find_elements_by_css_selector() 未返回预期数据

问题描述 投票:0回答:2

我是 Selenium 新手,正在尝试从 thewhiskeyexchange.com 上的这些波本威士忌产品卡中抓取数据(目前只是名称)。我已经在 scrapy shell 中测试了所有 css(和 xpath)选择器,所以我知道它们是正确的,但输出返回有关“会话”和我不理解的元素的编码信息。列表中的项目数量似乎是正确的,所以也许 Selenium 正在做它应该做的事情,我只是不知道如何将输出转换为我应该使用的东西。如何仅从产品卡中获取名称?

我尝试了 Selenium 提供的驱动程序和本地选择器功能,得到了相同的结果。美丽的汤函数返回我需要的数据,但该方法对于我正在处理的项目范围来说效率太低。任何有关如何解决此问题的见解将不胜感激。

IN[]:
chrome_options = Options()
chrome_options.add_argument("--incognito")
chrome_options.add_argument("--window-size=1920x1080")
chrome_options.binary_location = "C:\Program Files\Google\Chrome\Application\chrome.exe"

IN[]:
driver = webdriver.Chrome(ChromeDriverManager().install())

IN[]:
url = "https://www.thewhiskyexchange.com/c/639/bourbon-whiskey"
driver.get(url)
time.sleep(5) # second delay to improve visual quality
html = driver.page_source
html # HTTP request response object is as expected

IN[]:
els = driver.find_elements_by_css_selector('p.product-card__name')
# local method: els = driver.find_elements(By.CSS_SELECTOR, 'p.product-card__name')
els

OUT[]:
[<selenium.webdriver.remote.webelement.WebElement (session="e521768d8df1dd788b1fda816299b0b5", element="b9384a19-f8c9-46b2-be99-780200dcba99")>,
 <selenium.webdriver.remote.webelement.WebElement (session="e521768d8df1dd788b1fda816299b0b5", element="af76dfa8-b86c-426a-8ad8-30ea904ed11b")>,
 <selenium.webdriver.remote.webelement.WebElement (session="e521768d8df1dd788b1fda816299b0b5", element="58b14e5a-6bc3-443a-807f-ec696e83b096")>, ...
python selenium selenium-webdriver web-scraping selenium-chromedriver
2个回答
3
投票
find_elements

返回 Web 元素列表,而

find_element
返回单个 Web 元素。

您可以迭代列表并提取文本,如下所示:

IN[]:
els = driver.find_elements(By.CSS_SELECTOR, 'p.product-card__name')
for e in els:
    print(e.text)

另请注意,

find_elements_by_css_selector
在较新的 selenium 版本中已被弃用(也称为
Selenium 4
),因此应该使用
find_elements(By.CSS_SELECTOR, "")
来代替。


0
投票

这是萨姆夫人,我自己 Thamarai priya

我怀疑我是这个项目的新手,任何人都可以指导我做这个项目,我完全是空白的......redbus是我在数据科学方面的项目,使用selenium mysql python和streamlite'

请帮助我摆脱这个项目......

© www.soinside.com 2019 - 2024. All rights reserved.