Python 脚本从网页的许多标题中解析出很少的标题
我正在尝试使用python结合selenium从网页中获取所有标题,因为内容是高度动态的。然而,当我运行脚本时,它只获取其中的前几个。我在脚本中定义的选择器似乎是完美的 我怎样才能从那页上得到所有的标题 我试过:Python 脚本从网页的许多标题中解析出很少的标题,python,python-3.x,selenium,selenium-webdriver,web-scraping,Python,Python 3.x,Selenium,Selenium Webdriver,Web Scraping,我正在尝试使用python结合selenium从网页中获取所有标题,因为内容是高度动态的。然而,当我运行脚本时,它只获取其中的前几个。我在脚本中定义的选择器似乎是完美的 我怎样才能从那页上得到所有的标题 我试过: from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from seleni
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
link = "find_the_site_link_above"
driver = webdriver.Chrome()
driver.get(link)
wait = WebDriverWait(driver, 10)
for items in wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, "figure[data-pingdom-info='purchasable-deal']"))):
name = items.find_element_by_css_selector(".cui-udc-title").text
print(name)
driver.quit()
上面的脚本生成前几个链接,而它们的数量要多得多
Chronos Med Spa
Planet Beach Spray & Spa
Spa at Fountain Park Beauty Bar
Reset Body & Skin
7th Sense Wellness and Massage
Body Art Day Spa & Salon
需要等待页面完全加载。有不同的方法可以达到不同的成功标准。最简单的方法是查找在页面末尾加载的元素。在本例中,我添加了等待趋势交易部分
wait.until(EC.visibility_of_element_located((By.XPATH,"//div[@class='compound-title']")))
for items in wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, "figure[data-pingdom-info='purchasable-deal']"))):
name = items.find_element_by_css_selector(".cui-udc-title").text
print(name)
需要等待页面完全加载。有不同的方法可以达到不同的成功标准。最简单的方法是查找在页面末尾加载的元素。在本例中,我添加了等待趋势交易部分
wait.until(EC.visibility_of_element_located((By.XPATH,"//div[@class='compound-title']")))
for items in wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, "figure[data-pingdom-info='purchasable-deal']"))):
name = items.find_element_by_css_selector(".cui-udc-title").text
print(name)
这仍然给了我与我之前得到的完全相同的结果。经过这一步,我得到了48的长度,并且能够打印所有这些文本。您可以尝试在关闭弹出窗口后添加一些额外的等待。如果我将
time.sleep(3)
放在等待中项目的之前。直到()
不关闭弹出模式,我会得到所有结果,但我不希望使用任何硬编码延迟。底线是我仍然得到6个结果,完全按照你的建议。这仍然给了我完全相同的结果,我已经有了。经过这一步,我得到的长度为48,能够打印所有这些文本。您可以尝试在关闭弹出窗口后添加一些额外的等待。如果我将time.sleep(3)
放在等待中项目的之前。直到()
不关闭弹出模式,我会得到所有结果,但我不希望使用任何硬编码延迟。底线是,按照你的建议,我仍然得到6个结果。