【问题标题】:Developing a python Scraper that opens all links in multiple tabs using Chrome开发一个 python Scraper,使用 Chrome 打开多个选项卡中的所有链接
【发布时间】:2017-04-02 14:09:02
【问题描述】:

我正在尝试使用 python 开发一个抓取工具,它将在 Chrome 的多个选项卡中打开网页内的链接。

我整理出来的代码是

import urllib2
from datetime import timedelta, date
import selenium.webdriver as webdriver
import selenium.webdriver.support.ui as ui
import time

from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome()

i = driver.get("https://investmentinsightindia.wordpress.com/")

driver.find_element_by_partial_link_text(',').click()
driver.get("chrome://newtab/")

我发现该网站上的大多数个人帖子都有一个“,”(在日期中),所以我尝试点击文本中带有 , 的链接。

我确实意识到要让它在多个站点上工作,我最终需要对链接使用更通用的东西,比如来自 Xpath 的 href 引用,我不知道该怎么做。

我该如何配置它 - 1.打开主页(url) 2. 在新选项卡中打开第一个可用链接 3. 保持标签打开 4. 在新标签页中打开第二个可用链接.....等等

【问题讨论】:

  • 你能清除一件事吗。要不要点击Posted on May 17, 2013这种链接?因为逗号, 是日期
  • 我想点击页面中的每个新帖子。单击日期戳只是我认为会涵盖的一种方法。理想情况下,我想点击网页中的所有帖子
  • 你能看到我更新的答案并在 python 中尝试。如果有任何问题,请告诉我。希望对你有帮助

标签: python google-chrome selenium-chromedriver


【解决方案1】:

您可以通过查找'a' 元素然后遍历它们并一一单击来查找作为链接的元素。

你可以这样实现:

for elem in driver.find_element_by_xpath('//a') : 
    elem.click()
    driver.get("chrome://newtab/")

这将一一打开新标签页中的所有网址。

【讨论】:

  • 我试过了,得到 -selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element is not attach to the page document 有什么特定的 '//a' 我可以用来更好地描述链接?
【解决方案2】:

如果您需要打开日期中包含 , 的特定帖子链接,例如Posted on May 17, 2013 然后使用以下 xpath 获取列表中所有相同类型的元素:

//a/span[contains(text(),',')]

可以使用下面的xpath来获取所有的帖子链接

//h2/a

并遍历 for 循环。下面是执行相同操作的示例 Java 示例请按照 python 语法实现

 List <WebElement> allElement = driver.findElements(By.xpath("//a/span[contains(text(),',')]/parent::*")); // will get all anchor tag which having , and store in a list

 System.out.println(allElement.size());
 for(WebElement element:allElement)
 {
    System.out.println(element.getAttribute("href"));
    driver = new ChromeDriver();
    driver.get(element.getAttribute("href"));
 }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-14
    • 2015-04-30
    • 2013-02-17
    • 2015-01-08
    • 2017-07-09
    • 2019-07-04
    • 2018-06-08
    • 1970-01-01
    相关资源
    最近更新 更多