在新选项卡中打开链接值的链接存储在对象中

时间:2015-09-29 10:34:10

标签: python-2.7 selenium selenium-webdriver

我正试图抓住这个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页面的下一个选项卡等等。

有人可以指出我正确的来源或帮助我增强代码以打开链接列表中链接的新标签。

2 个答案:

答案 0 :(得分:1)

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

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

使用Python进行网页抓取有很多东西 以下是一些有用链接的列表:
Scrapy教程 - http://doc.scrapy.org/en/latest/intro/tutorial.html
BeautifulSoup - http://www.pythonforbeginners.com/beautifulsoup/

我建议你使用 Scrapy

答案 1 :(得分:0)

Selenium与标签很糟糕。更好的方法是使用Windows。

但抓取的最佳方法是:

  1. 从所有需要的页面中删除链接列表;
  2. 循环中的
  3. 使用相同的窗口/页面打开第一步中收集的链接。
  4. 另外,出于安全考虑,最好在链接中抓取页面之间设置延迟。

    另外要注意:Selenium对于抓取大量信息的速度非常慢。所以最好从文本中使用html的外部刮刀(在这种情况下,html将从Selenium收到)。 C#中的示例 - > htmlAgrilityPack。对于python,我不知道。在这种情况下,刮擦的时间可以快10,000倍!