selenium webdriver python 与 open("txts.txt")

问题描述 投票:0回答:1

如何在 Selenium + Python 中在新选项卡上打开 URL 列表?我希望每个站点从 txt 文件(如“sites.txt”)中的 URL 列表中打开一个新窗口。这是我的设置方式:

import time
from selenium import webdriver
from selenium.webdriver.firefox.service import Service
import fileinput
import urllib3
import sys

count = 0
while (1):
        with open("url.txt") as f:
            for line_terminated in f:
                count = count + 0 
            line = line_terminated.rstrip('\n')
        print ()," ", count
        service = Service(r'geckodriver.exe')
        options = webdriver.FirefoxOptions()
        driver = webdriver.Firefox(service=service, options=options)
        try:
                driver.get(line)
                time.sleep(5)
                driver.quit()
        except:
                driver.quit()
                print(), "Error ", line

我已经尝试了上面的脚本,结果只是从列表中读取最后一个URL:

url.com
import time
from selenium import webdriver
from selenium.webdriver.firefox.service import Service
import fileinput
import urllib3
import sys

count = 0
while (1):
        with open("url.txt") as f:
                for line_terminated in f:
                    count += 1
                    line = line_terminated.rstrip('\n')
                    print (line, count)
                service = Service(r'geckodriver.exe')
                options = webdriver.FirefoxOptions()
                driver = webdriver.Firefox(service=service, options=options)
                try:
                        driver.get(line)
                        time.sleep(5)
                        driver.quit()
                except:
                        driver.quit()
                        print(), "Error ", line
```output

http://www.only_read_lastonfile.com
python-3.x selenium-webdriver webdriver
1个回答
0
投票

您的脚本中有一些拼写错误,例如

count = count + 0
(您的意思可能是
1
来增加计数,而
+= 1
简化了这一点)。

您的

print()
行不在您的循环中,这意味着它只会显示您最后打印的内容。你想要:

with open("sites.txt") as f:
    for line_terminated in f:
        count += 1
        line = line_terminated.rstrip('\n')
        print (line, count)

并且您需要花费额外的时间来启动新驱动程序并在每次循环迭代时调用

driver.quit()
。您可以通过为每个新页面加载重用现有驱动程序来简化这一过程。

© www.soinside.com 2019 - 2024. All rights reserved.