我已经用python和selenium编写了一个脚本来解析网页中的名字。该站点的数据未启用javascript。但是,下一页链接在javascript中。由于如果我选择requests
库,那么该网页的下一页链接将毫无用处,因此我使用selenium来解析该站点遍历25页的数据。我在这里面临的唯一问题是,虽然我的scraper能够通过25页点击到达最后一页,但它只从第一页获取数据。此外,scraper即使单击了最后一页也会继续运行。下一页的链接看起来就像javascript:nextPage();
。顺便说一句,该网站的网址永远不会改变,即使我点击下一页按钮。我怎样才能从25页中得到所有的名字?我在scraper中使用的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()
这似乎比目前的方法更简单。之后驱动程序。获取方法,您可以简单地使用page\u source属性来获取其背后的html。从那里你可以一次从所有25页中得到数据。要查看它的结构,只需右键单击并在chrome中“查看源代码”。你知道吗
您不必处理“下一步”按钮或以某种方式更改页码-所有条目都已在页面源中。请尝试以下操作:
如果您不必使用硒,也可以尝试此解决方案:
相关问题 更多 >
编程相关推荐