如何在Python中使用urllib2创建新目录并保存文件?

1 投票
1 回答
1687 浏览
提问于 2025-04-17 14:05

我正在尝试创建一个Python脚本,用来检查一个主机是否在线。如果在线的话,就把这个网站下载到一个叫做results/的文件夹里。一旦我学会了怎么做,我就会继续研究如何爬取网站,并启动其他的子进程(比如在检查完成后启动nikto或skipfish,并加载保存的文件)。

#! /usr/bin/python

import os
import sys
import urllib
import urllib2
import subprocess

# Where the magic happens

str1 = raw_input("Enter your target: ")
print "Target = ", str1
print "commencing testing on", str1

# Let's set the user-agent headers
http_headers = {"User-Agent":"Mozilla/5.0"}

request = urllib2.Request(str1)
response = urllib2.urlopen(request)
payload = response.read()

dir_path = os.path.join(self.results)
os.makedirs(dir_path)
**with open(os.join.path(dir_path, 'index.html', 'wb') as file:
        file.write(payload)
print str1, "index written to file"**

# Send an email to notify us when complete
var = "world"
pipe = subprocess.Popen(["./email.sh", var], stdout=subprocess.PIPE)
result = pipe.stdout.read()
print result

我收到了以下错误信息:

File "./webtest.py", line 43
    with open(os.join.path(dir_path, 'index.html', 'wb') as file:
                                                          ^
SyntaxError: invalid syntax

在关闭括号后出现错误(来自Phil的回答):

    Traceback (most recent call last):
      File "./webtest.py", line 41, in <module>
        dir_path = os.path.join(self.results)
NameError: name 'self' is not defined

1 个回答

1

你漏掉了一个括号:

with open(os.join.path(dir_path, 'index.html', 'wb')) as file:

编辑

那一行代码是和你想要的目录有关。它出现错误是因为你不在一个类里面(所以“self”这个东西不存在)。最好的做法是把它换成“results”,并且明确说明“results”在哪里。比如:

results = "/resultsdir/"
dir_path = os.path.join(results)

撰写回答