selenium爬取數據打開瀏覽器新的標籤頁

如何利用webdriver打開多個標籤頁和鏈接呢?
經實踐,網上流傳的傳入“ctrl+t的按鍵事件”方法針對谷歌瀏覽器並不適用。實踐證明以下方式可以正常打開谷歌瀏覽器新的標籤頁。

browser.execute_script("window.open('" + url + "');")

完整例子:

import time
from selenium.webdriver.support.ui import WebDriverWait
from selenium import webdriver
'''
爬取巨潮網招股說明書
Author:西蘭
Date:2020-6-12
'''
driver_path = r"D:\chromedriver.exe"
options = webdriver.ChromeOptions()
browser = webdriver.Chrome(executable_path=driver_path)
browser.implicitly_wait(1)

url = 'http://www.cninfo.com.cn/new/fulltextSearch?notautosubmit=&keyWord=招股說明書'
browser.get(url)
browser.maximize_window()
wait = WebDriverWait(browser, 3)
for j in range(3, 856):
    if j > 2:
        for _ in range(j):
            browser.find_element_by_xpath(
                '//*[@id="fulltext-search"]/div/div/div[2]/div[4]/div[2]/div/button[2]').click()
    js = "var q=document.documentElement.scrollTop=100"
    browser.execute_script(js)
    tr_list = browser.find_elements_by_css_selector(
        'div.tab-content > div > div > div:nth-child(3) > table > tbody > tr')
    print(len(tr_list))
    tr_len = len(tr_list)
    for i in range(tr_len):
        window1 = browser.current_window_handle
        td_list = tr_list[i].find_elements_by_css_selector('td')
        a_ = td_list[1].find_element_by_css_selector('div > a')
        data_url = a_.get_attribute('href')
        print(data_url)
        browser.execute_script("window.open('" + data_url + "');")
        all_handles = browser.window_handles
        for handle in all_handles:
            if handle != window1:
                browser.switch_to.window(handle)
        browser.find_element_by_css_selector('div.sub-line > a.sub-download').click()
        print("正在下載第{}頁{}個文件....".format(j, i + 1))
        time.sleep(3)
        browser.close()
        browser.switch_to.window(window1)

關注“編程ABC”公衆號,不定期搞點事情噢~
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章