|
import re
import requests
import os
class DownPic:
def __init__(self,url,num):
self.url = url
self.num = num
self.headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36'}
def get_pic_url(self,url):
respone = requests.get(url,headers = self.headers)
url_text = respone.text
regex_url = '<img.*?data-original="(.*?)".*?>'
regex_name = '<img.*?alt="(.*?)".*?>'
pic_urls = re.findall(regex_url,url_text,re.S)
pic_names = re.findall(regex_name,url_text,re.DOTALL)
return pic_urls,pic_names
def down_pic(self,urls,pic_names,i):
for j in range(len(urls)):
#读图片
url,pic_name = urls[j],pic_names[j]
pic_name = re.sub(r'[!\.。\?,!]','',pic_name)
respone = requests.get(url,self.headers)
pic_text = respone.content
#写图片
suffix = os.path.splitext(url)[1]
full_file_name = pic_name + suffix
#print(full_file_name)
#建文件夹
folder = 'img' + '/' + str(i)
if not os.path.exists(folder):
os.mkdir(folder)
with open(folder + '/' + full_file_name,'wb') as f:
f.write(pic_text)
str = full_file_name + ' 写入完成'
print(str)
def run(self):
for i in range(1,self.num):
url = self.url + str(i)
urls = self.get_pic_url(url)[0]
pic_names = self.get_pic_url(url)[1]
self.down_pic(urls,pic_names,i)
if __name__ == '__main__':
downpic = DownPic('http://www.doutula.com/photo/list/?page=',100)
downpic.run()
报错如下:
File "E:/360Downloads/test/test.py", line 29, in down_pic
folder = 'img' + '/' + str(i)
UnboundLocalError: local variable 'str' referenced before assignment
为什么这个地方报错呢?求解答
folder = 'img' + '/' + str(i)
|
|