python - NameError: 全局名 'buf' 未定义
我不知道这个错误是什么意思。关于这个错误或者其他代码的任何建议都非常感谢。
import urllib
import urllib2
import os
import re
from bs4 import BeautifulSoup
def image_scrape():
url = raw_input("Type url for image scrape: ")
content = urllib2.urlopen(url).read()
soup = BeautifulSoup(content)
name = 0
for tag in soup.find_all(re.compile("img")):
path = 'C:\Users\Sorcerer\Downloads'
name += 1
filename = name
file_path = "%s%s" % (path, filename)
downloaded_image = file(file_path, "wb")
downloaded_image.write(buf)
downloaded_image.close()
image_scrape()
1 个回答
2
你在代码中有一行:
downloaded_image.write(buf)
Python解释器在你的代码中没有见过这个变量 buf
,所以就报错了。
关于你代码的其他想法:
建议使用
os
模块来处理你这一行的操作:file_path = "%s%s" % (path, filename)
可以这样做:
import os path = os.path.normpath('C:\\Users\\Sorcerer\\Downloads') file_path = os.path.join(path, name)
看起来你是想在页面中找到所有的图片链接,并把它们保存到
file_path
指定的位置。如果图片链接在变量tag
中,你可以这样做:import requests r = requests.get(tag, stream=True) if r.status_code == 200: with open(name, 'wb') as f: for chunk in r.iter_content(): f.write(chunk) f.close()