我是 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")>, ...
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, "")
来代替。
这是萨姆夫人,我自己 Thamarai priya
我怀疑我是这个项目的新手,任何人都可以指导我做这个项目,我完全是空白的......redbus是我在数据科学方面的项目,使用selenium mysql python和streamlite'
请帮助我摆脱这个项目......