Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 脚本从网页的许多标题中解析出很少的标题_Python_Python 3.x_Selenium_Selenium Webdriver_Web Scraping - Fatal编程技术网

Python 脚本从网页的许多标题中解析出很少的标题

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

我正在尝试使用python结合selenium从网页中获取所有标题,因为内容是高度动态的。然而,当我运行脚本时,它只获取其中的前几个。我在脚本中定义的选择器似乎是完美的

我怎样才能从那页上得到所有的标题

我试过:

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个结果。