Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何用Python自动打开和关闭Tor浏览器_Python_Python 3.x_Tor - Fatal编程技术网

如何用Python自动打开和关闭Tor浏览器

如何用Python自动打开和关闭Tor浏览器,python,python-3.x,tor,Python,Python 3.x,Tor,我在玩网页抓取和Tor 我设法使它同时适用于请求和Selenium+PhantomJS。但是,我需要打开Tor浏览器,脚本才能工作 这就是为什么我现在试图自动化整个过程;即:自动打开Tor浏览器,运行一些脚本,最后自动关闭浏览器。但我正在与之斗争 #open Tor browser os.system('open /Applications/TorBrowser.app') #code to scrape #close Tor browser ??? 打开 要打开浏览器,我发现其他一些选项

我在玩网页抓取和Tor

我设法使它同时适用于
请求
Selenium
+PhantomJS。但是,我需要打开Tor浏览器,脚本才能工作

这就是为什么我现在试图自动化整个过程;即:自动打开Tor浏览器,运行一些脚本,最后自动关闭浏览器。但我正在与之斗争

#open Tor browser
os.system('open /Applications/TorBrowser.app')

#code to scrape

#close Tor browser
???
打开 要打开浏览器,我发现其他一些选项不起作用

import subprocess
subprocess.Popen('/Applications/TorBrowser.app') #permission denied

然而,下面这句话起了作用:

os.system('open /Applications/TorBrowser.app')
接近 主要的问题是在之后关闭浏览器,因为在其他帖子中找到的命令都不起作用

这些措施包括:

os.system("taskkill /im /Applications/TorBrowser.app /f") #sh: taskkill: command not found


  • 有没有关于如何关闭它的建议

  • 有没有更好的方法打开它

编辑:我在Mac上使用Python 3。

这对我很有用:

from selenium import webdriver
import os
import subprocess
#start Tor
sproc=subprocess.Popen('"C:\\Users\\My name\\Desktop\\Tor Browser\\Browser\\firefox.exe"' )

#start PhantomJS
service_args = [ '--proxy=localhost:9150', '--proxy-type=socks5', ]
driver = webdriver.PhantomJS(service_args=service_args)
#get page
driver.get("https://stackoverflow.com/questions/40161921/how-to-open-and-close-tor-browser-automatically-with-python")
print(driver.page_source)
driver.close()
#kill process
sproc.kill()
我认为您应该在命令之间添加一些时间暂停:

import time
time.sleep(20)# wait 20 seconds 
打开Tor的另一种方法:

os.system('"C:\\Users\\My Name\\Desktop\\Tor Browser\\Browser\\firefox.exe"' )
但这次您的命令将等待被调用进程自己停止(可能是用户将关闭它)。根据你的问题,这不是你想要的。为了控制执行过程,让它运行,并在需要时使用特殊变量终止它

还要注意字符串路径:单引号内的双引号。还有其他方法可以将带空格的字符串传递给系统命令,例如:。

这对我很有用:

from selenium import webdriver
import os
import subprocess
#start Tor
sproc=subprocess.Popen('"C:\\Users\\My name\\Desktop\\Tor Browser\\Browser\\firefox.exe"' )

#start PhantomJS
service_args = [ '--proxy=localhost:9150', '--proxy-type=socks5', ]
driver = webdriver.PhantomJS(service_args=service_args)
#get page
driver.get("https://stackoverflow.com/questions/40161921/how-to-open-and-close-tor-browser-automatically-with-python")
print(driver.page_source)
driver.close()
#kill process
sproc.kill()
我认为您应该在命令之间添加一些时间暂停:

import time
time.sleep(20)# wait 20 seconds 
打开Tor的另一种方法:

os.system('"C:\\Users\\My Name\\Desktop\\Tor Browser\\Browser\\firefox.exe"' )
但这次您的命令将等待被调用进程自己停止(可能是用户将关闭它)。根据你的问题,这不是你想要的。为了控制执行过程,让它运行,并在需要时使用特殊变量终止它


还要注意字符串路径:单引号内的双引号。还有其他方法可以将带空格的字符串传递给系统命令,例如:。

谢谢您的回答@Alexander。firefox.exe让我很困惑。这应该在Mac上工作,还是只在Windows上工作?好的,谢谢。我错过了讨论中的那部分。现在它被编辑了。你知道如何在Mac上实现吗?谢谢你的回答@Alexander。firefox.exe让我很困惑。这应该在Mac上工作,还是只在Windows上工作?好的,谢谢。我错过了讨论中的那部分。现在它被编辑了。你知道怎么在Mac上做吗?