【发布时间】:2020-11-12 15:03:36
【问题描述】:
这里是 Selenium 的新手。我在这里先向您的帮助表示感谢! (已解决)
我已经成功地使用下面的代码点击了链接,但很难点击 LI 下的链接。我参考了其他几个 stackoverflow 页面,但还没有找到解决方案。
在这种情况下,我尝试单击页码“2”,然后为所有后续页面运行我的刮刀(我为第 1 页工作)。请注意,单击第 2 页会导致表格发生变化(也就是一组新的股票代码和信息被拉起),但网站链接本身不会改变。
网站链接:https://www.gurufocus.com/insider/summary
这是我要点击的内容: The number 2, highlighted in yellow
我在检查元素时看到的内容:inspect
我可以通过下面的代码在同一页面上单击不同的链接(标题为“聚合内幕交易活动可以预测市场吗?”,但是当我输入“2”时,我收到一条错误消息“NoSuchElementException:消息:没有这样的元素:无法找到元素:{“方法”:“链接文本”,“选择器”:“2”}“
总结,我想“点击”第 2 页,调出更多股票信息,然后通过它运行我的爬虫(然后对其余页面使用 for 循环)。创建 for 循环来抓取多个页面不会有任何麻烦,但我似乎无法让 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
import time
PATH = "C:\\Users\\MYUSERNAME\\Webdrivers\\chromedriver.exe"
driver = webdriver.Chrome(PATH)
driver.get("https://www.gurufocus.com/insider/summary")
driver.find_element_by_xpath("//ul[@class='el-pager']/li[text()='2']").click
try:
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.XPATH, "//ul[@class='el-pager']/li[text()='2']"))
)
element.click()
except:
driver.quit()
【问题讨论】:
-
欢迎来到 Stack Overflow。请与我们分享您迄今为止尝试单击链接“2”的代码,以及它产生的结果/错误。也请查看stackoverflow.com/help/minimal-reproducible-example
-
@piterbarg 谢谢你的建议,有帮助吗?
-
你想从这个站点中提取什么?
-
@Vin 如果您从该链接单击页面“2”,它将刷新有关股票代码信息的表格。我已经有一个刮刀来刮第一页,所以我的目标是能够“点击”下一页(在本例中为两个),并用新的代码刷新表格,刮掉它,然后进入下一页等
-
@Vin 创建用于抓取后续页面的 for 循环不会有任何问题 - 我只需要帮助 Selenium 单击第 2 页链接(以及所有后续页面)。希望这是有道理的!
标签: python selenium web-scraping