【发布时间】:2021-11-11 05:06:40
【问题描述】:
我需要从以下链接中提取产品名称、价格和默认颜色: Link
但是,每次我加载以下脚本时,检索的信息都会有所不同(有时会打印所有三个值,有时会打印 1-2 个或没有)。无论 WebDriverWait 如何,都会发生这种情况。
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
from selenium.webdriver.common.action_chains import ActionChains as AC
#import json
from bs4 import BeautifulSoup as soup
browser = webdriver.Firefox()
browser.get('https://shop.mango.com/gb/women/skirts-midi/midi-satin-skirt_17042020.html?c=99')
wait = WebDriverWait(browser, 100).until(EC.presence_of_all_elements_located)
s = soup(browser.page_source, 'html.parser')
name = s.select('.product-name')[0].getText()
price = s.select('.product-sale')[0].getText()
color = s.select('.colors-info')[0].getText()
print(name, price, color)
能否请您告知如何提取所有三个元素?如果我尝试下载带有请求或抓取的页面,则缺少上述元素。
【问题讨论】:
-
您正在使用 beautoful 汤而不是 Selenium 来提取项目。所以 webdriverwait 不会对其产生任何影响。
-
@cruisepandey 与 selenium 相同:``` browser.get('shop.mango.com/gb/women/skirts-midi/…) wait = WebDriverWait(browser, 100).until(EC.presence_of_all_elements_located) name = browser.find_element_by_class_name( 'product-name').text price = browser.find_element_by_class_name('product-sale').text color = browser.find_element_by_class_name('colors-info').text product = {'name': name, 'price': price , 'color': color } with open('product5.json','w') as product_dumped : json.dump(product,product_dumped) ```
标签: python selenium selenium-webdriver beautifulsoup scrapy