我有一个通过subprocess.Popen调用wget的函数。此函数的目的是为wget和spider一个网站生成一个链接列表。
是否可以判断wget进程何时完成,然后继续执行其余的python函数,例如。
def get_urls(url, uname, pword, output):
subprocess.Popen (['wget', '-nd', '-r', '--user=', uname, '--password=', pword,
'--no-parent','--spider',url, '--output-file= ',output], stdout=subprocess.PIPE)
#some method telling wget has finished writing to the output file, so continue
foo = bar() #rest of function etc.
还有一种更好的方法是通过python而不是进行系统调用来抓取站点(并传入登录凭据)吗?
由于
答案 0 :(得分:1)
也许您可以使用subprocess.call
或subprocess.check_call
代替?他们都会等待命令完成,然后给你返回代码。
请参阅文档here
答案 1 :(得分:0)
为什么要使用子进程,可能更好用urllib
import urllib
url = 'http:......'
filename = 'your_filename'
urllib.urlretrieve(url, filename)