【问题标题】:Opening a link in a new tab who's link values are stored in objects在新选项卡中打开链接,其链接值存储在对象中
【发布时间】:2015-12-26 19:12:19
【问题描述】:

我正在尝试抓取这个Website。我已经得到了网站上公司的链接。我需要在新标签中打开每家公司。所有公司的链接都存储在列表中link

from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.keys import Keys


browser = webdriver.Firefox() # Get local session of firefox

# 0 wait until the pages are loaded
browser.implicitly_wait(3) # 3 secs should be enough. if not, increase it

browser.get("http://ae.bizdirlib.com/taxonomy/term/1493") # Load page
links = browser.find_elements_by_css_selector("h2 > a")

#print link
for link in links:
    browser.send_keys(Keys.CONTROL + 't')

所以我想要做的是打开链接中的链接位置并在新选项卡中打开它并执行一些操作并关闭选项卡然后打开下一个选项卡等等所有 365 页面。

有人可以将我指向正确的来源或帮助我增强代码以使用链接列表中的链接打开一个新选项卡。

【问题讨论】:

    标签: python-2.7 selenium selenium-webdriver


    【解决方案1】:

    Selenium 不能很好地处理标签。更好的方法是使用 windows。

    但最好的抓取方式是:

    1. 从所有需要的页面中抓取链接列表;
    2. 在循环中使用相同的窗口/页面打开第一步收集的链接。

    此外,出于安全原因,最好在从链接中抓取页面之间设置延迟。

    还要注意:Selenium 在抓取大量信息方面确实很慢。所以最好从文本中使用 html 的外部抓取器(在这种情况下,html 将从 Selenium 接收)。 C# 中的示例 -> htmlAgrilityPack。对于python我不知道。在这种情况下,抓取的时间可以快 10000 倍!

    【讨论】:

      【解决方案2】:

      您可以导航回到上一页而不是在新窗口中打开页面,因为这会增加处理问题。

      但我强烈建议 Selenium WebDriver 不用于报废。

      周围有很多事情可以使用 Python 进行网页抓取。
      这里列出了一些有用的链接:
      Scrapy 教程 - http://doc.scrapy.org/en/latest/intro/tutorial.html
      BeautifulSoup - http://www.pythonforbeginners.com/beautifulsoup/

      我会推荐你​​使用 Scrapy

      【讨论】:

      • 我从来没有用过好斗的/漂亮的肥皂。我想要完成的是我需要打开公司中的链接之一,然后获取公司名称、电子邮件、电话号码并将其粘贴到 Excel 表中的特定行/列中。请推荐任何可以做到这一点的工具..
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-25
      • 2015-11-28
      • 2012-05-03
      • 2014-06-24
      • 2015-07-24
      • 2018-11-22
      • 1970-01-01
      相关资源
      最近更新 更多