|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
这是自己模仿写的,要求只爬取第一页的写真,每套50页,但不知道为什么总是在最后出现FileNotFoundError: [Errno 2] No such file or directory: '2020/02/01a01.jpg'
求助大神指导一下
思路如下:
①获取首页每套写真的地址,逐个打开。
②打开后可以看到图片的具体地址,于是构造出图片1到50页的地址。
③打开图片地址,写入并保存文件。
- import urllib.request
- import os
- import re
- import ssl
- ssl._create_default_https_context = ssl._create_unverified_context
- def url_open(url):
- headers = {
- 'Referer':'https://mzitu.com/',
- 'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36'
- }
- req = urllib.request.Request(url, headers=headers)
- response = urllib.request.urlopen(req)
-
- html = response.read()
- return html
- #————————————————————————————————————————————————————————————————————————————
- def get_href(url):
- html = url_open(url).decode('utf-8')
- p = r'https://www.mzitu.com/(\d+)' #在首页抽取出每套写真的地址,如’http://mzitu.com/221852‘,后面的数字是我想要的。
- href_set = re.findall(p, html)
-
- return href_set #列表内的内容是首页多个写真的路径,如['221852', '10320']。
-
- def find_imgURL(url):
-
- html = url_open(url).decode('utf-8') #以打开第一套https://www.mzitu.com/221852为例。
- #打开后第一张图片的具体地址是:'https://i5.mmzztt.com/2020/02/01a01.jpg'。
- p = r'https://i5.mmzztt.com/(\d+/\d+/\d+[a-z])\d+\.jpg' #抽取地址,格式是https://i5.mmzztt.com/年/月/日+字母+页码.jpg,不同写真之间有区别的部分是(年/月/日期+字母),所以提取出来,页码在下面填充。
- code = re.findall(p, html) #code内是提取出来的像'2020/02/01a'不带页码的部分。
-
- page_fullcode = []
- for x in range(len(code)):
- for i in range(51): #这里是为了给code添加最后的页码,变成'2020/02/08a01’,每套写真只爬取前50张图。
- if i < 10:
- page_fullcode.append(code[x] + '0' + str(i))
-
- else:
- page_fullcode.append(code[x] + str(i))
- imgURL = []
- for i in page_fullcode:
- imgURL.append('https://i5.mmzztt.com/' + i + '.jpg') #构造出1到50页的图片地址如’https://i5.mmzztt.com/2020/02/01a01.jpg‘
-
- return imgURL
-
- def save_img(folder, imgURL):
- for each in imgURL:
- file_name = each.split('/',3)[3] #文件名是‘2020/02/01a01.jpg’的格式
- with open(file_name, 'wb') as f: #提示出错的位置 with open (file_name, 'wb') as f:FileNotFoundError: [Errno 2] No such file or directory: '2020/02/01a01.jpg'
- img = url_open(each)
- f.write(img)
- #————————————————————————————————————————————————————————————————————————————————
- def main(folder = 'Girls'):
- os.mkdir(folder)
- os.chdir(folder)
- url = 'http://mzitu.com/'
- href_set = get_href(url)
-
- for each in href_set:
- sub_url = url + each
- imgURL = find_imgURL(sub_url)
-
- save_img(folder, imgURL)
- if __name__ == '__main__':
- main()
复制代码
lovecnlsao 发表于 2020-2-13 16:21
求指导一下
文件名里怎么可能有/呢
|
|