【问题标题】:How to open each url in new tab in chrome driver using python如何使用python在chrome驱动程序的新选项卡中打开每个url
【发布时间】:2020-03-09 05:40:24
【问题描述】:

我有 URL 列表,我需要从它们中抓取数据。在新驱动程序中打开每个 url 时网站拒绝连接,所以我决定在新选项卡中打开每个 url(网站允许这种方式)。下面的代码我正在使用

from selenium import webdriver
import time
from lxml import html

driver = webdriver.Chrome()
driver.get('https://www.google.com/')

file = open('f:\\listofurls.txt', 'r')

for aa in file:
    aa = aa.strip()
    driver.execute_script("window.open('{}');".format(aa))
    soup = html.fromstring(driver.page_source)
    name = soup.xpath('//div[@class="name"]//text()')
    title = soup.xpath('//div[@class="title"]//text()')
    print(name, title)
    time.sleep(3)

但问题是所有 URL 都是一次打开,而不是一个接一个。

【问题讨论】:

  • 是否允许一一打开驱动程序?我的意思是打开一个驱动程序,然后关闭它,然后再打开另一个驱动程序。网站会拒绝还是可以?

标签: selenium web-scraping webdriver selenium-chromedriver lxml


【解决方案1】:

你可以试试这个代码:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
from lxml import html

driver = webdriver.Chrome()
driver.get('https://www.google.com/')

file = open('f:\\listofurls.txt', 'r')

for aa in file:
    #open tab
    driver.find_element_by_tag_name('body').send_keys(Keys.COMMAND + 't') 
# You can use (Keys.CONTROL + 't') on other OSs

    # Load a page 
    driver.get(aa)
# Make the tests...
    soup = html.fromstring(driver.page_source)
    name = soup.xpath('//div[@class="name"]//text()')
    title = soup.xpath('//div[@class="title"]//text()')
    print(name, title)
    time.sleep(3)


driver.close()

【讨论】:

  • 亲爱的 Hamza lachi,非常感谢,它正在工作
【解决方案2】:

我认为你必须像这样在循环之前剥离:

driver = webdriver.Chrome()
driver.get('https://www.google.com/')

file = open('f:\\listofurls.txt', 'r')
aa = file.strip()

for i in aa:
    driver.execute_script("window.open('{}');".format(i))
    soup = html.fromstring(driver.page_source)
    name = soup.xpath('//div[@class="name"]//text()')
    title = soup.xpath('//div[@class="title"]//text()')
    print(name, title)
    time.sleep(3)

【讨论】:

  • 不工作,我认为'strip'在这里没有问题,应该在从当前选项卡中提取数据后执行新选项卡。
猜你喜欢
  • 2022-09-22
  • 1970-01-01
  • 2014-01-10
  • 1970-01-01
  • 2016-09-02
  • 2017-12-30
  • 2019-11-22
  • 2015-01-08
  • 1970-01-01
相关资源
最近更新 更多