我正在尝试使用 Selenium 从网站 text 抓取菜谱标题,但我遇到了一个问题,我只能提取一些标题,而其他标题则返回空字符串。
我使用以下代码片段来检索标题:
page_url = f'https://www.allrecipes.com/search?{keyword}={keyword}&offset={nb}&q={keyword}'.format(keyword=keyword, nb=nb)
service = Service(ChromeDriverManager().install())
driver = webdriver.Chrome(service=service)
driver.get(page_url)
titles = [element.get_attribute('data-tag') for element in driver.find_elements(By.CLASS_NAME, "card__content ")]
recipe_links = [element.get_attribute('href') for element in driver.find_elements(By.CSS_SELECTOR, 'a.comp.mntl-card-list-items.mntl-document-card.mntl-card.card.card--no-image')]
print(titles,recipe_links)
driver.quit()
虽然这成功提取了所有收据链接和 2 个第一个标题,但某些标题返回空字符串。
当我尝试这段代码时:
titles = driver.find_elements(By.XPATH, "//span[@class='card__title']")
for title in titles:
print(title.get_attribute('outerHTML'))
这正确显示了页面的元素,包括标题:
<span class="card__title"><span class="card__title-text ">Chicken Makhani (Indian Butter Chicken)</span></span>
title: <span class="card__title-text ">Chicken Makhani (Indian Butter Chicken)</span>
...
您是否尝试过使用 CSS 而不是 XPath?
有相关帖子这里。