【发布时间】:2017-10-16 15:32:54
【问题描述】:
我在 python 中结合 selenium 编写了一个脚本来解析网页中的名称。该站点的数据未启用 javascript。但是,下一页链接在 javascript 中。由于如果我使用 requests 库,该网页的下一页链接将毫无用处,因此我已使用 selenium 解析来自该站点的遍历 25 页的数据。我在这里面临的唯一问题是,虽然我的刮刀能够通过 25 页点击到达最后一页,但它只从第一页获取数据。此外,即使点击了最后一页,刮板也会继续运行。下一页链接看起来与javascript:nextPage(); 完全相同。顺便说一句,即使我点击下一页按钮,该网站的网址也永远不会改变。如何从 25 页中获取所有名称?我在刮刀中使用的 css 选择器完美无缺。提前致谢。
这是我写的:
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
driver = webdriver.Chrome()
wait = WebDriverWait(driver, 10)
driver.get("https://www.hsi.com.hk/HSI-Net/HSI-Net?cmd=tab&pageId=en.indexes.hscis.hsci.constituents&expire=false&lang=en&tabs.current=en.indexes.hscis.hsci.overview_des%5Een.indexes.hscis.hsci.constituents&retry=false")
while True:
for name in wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, "table.greygeneraltxt td.greygeneraltxt,td.lightbluebg"))):
print(name.text)
try:
n_link = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "a[href*='nextPage']")))
driver.execute_script(n_link.get_attribute("href"))
except: break
driver.quit()
【问题讨论】:
标签: python python-3.x selenium selenium-webdriver web-scraping