鱼C论坛

 找回密码
 立即注册
查看: 1793|回复: 4

[已解决]妹子图爬虫出现FileNotFoundError: [Errno 2] No such file or directory

[复制链接]
发表于 2020-2-13 09:59:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
这是自己模仿写的,要求只爬取第一页的写真,每套50页,但不知道为什么总是在最后出现FileNotFoundError: [Errno 2] No such file or directory: '2020/02/01a01.jpg'
求助大神指导一下

思路如下:
①获取首页每套写真的地址,逐个打开。

②打开后可以看到图片的具体地址,于是构造出图片1到50页的地址。

③打开图片地址,写入并保存文件。

  1. import urllib.request
  2. import os
  3. import re
  4. import ssl
  5. ssl._create_default_https_context = ssl._create_unverified_context

  6. def url_open(url):
  7.     headers = {
  8.             'Referer':'https://mzitu.com/',
  9.             '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'
  10.         }
  11.     req = urllib.request.Request(url, headers=headers)
  12.     response = urllib.request.urlopen(req)
  13.    
  14.    html = response.read()

  15.     return html

  16. #————————————————————————————————————————————————————————————————————————————   

  17. def get_href(url):
  18.     html = url_open(url).decode('utf-8')

  19.     p = r'https://www.mzitu.com/(\d+)'                    #在首页抽取出每套写真的地址,如’http://mzitu.com/221852‘,后面的数字是我想要的。
  20.     href_set = re.findall(p, html)
  21.                                  
  22.     return href_set                                                #列表内的内容是首页多个写真的路径,如['221852', '10320']。
  23.    

  24. def find_imgURL(url):
  25.    
  26.     html = url_open(url).decode('utf-8')                                      #以打开第一套https://www.mzitu.com/221852为例。
  27.                                                                                             #打开后第一张图片的具体地址是:'https://i5.mmzztt.com/2020/02/01a01.jpg'。                                                           
  28.     p = r'https://i5.mmzztt.com/(\d+/\d+/\d+[a-z])\d+\.jpg'        #抽取地址,格式是https://i5.mmzztt.com/年/月/日+字母+页码.jpg,不同写真之间有区别的部分是(年/月/日期+字母),所以提取出来,页码在下面填充。
  29.     code = re.findall(p, html)                                                       #code内是提取出来的像'2020/02/01a'不带页码的部分。
  30.                                                                         
  31.     page_fullcode = []
  32.     for x in range(len(code)):
  33.         for i in range(51):                                                                #这里是为了给code添加最后的页码,变成'2020/02/08a01’,每套写真只爬取前50张图。
  34.             if i < 10:                  
  35.                 page_fullcode.append(code[x] + '0' + str(i))
  36.                
  37.             else:
  38.                 page_fullcode.append(code[x] + str(i))


  39.     imgURL = []
  40.     for i in page_fullcode:
  41.         imgURL.append('https://i5.mmzztt.com/' + i + '.jpg')                #构造出1到50页的图片地址如’https://i5.mmzztt.com/2020/02/01a01.jpg‘
  42.    
  43.     return imgURL
  44.    

  45. def save_img(folder, imgURL):
  46.     for each in imgURL:
  47.         file_name = each.split('/',3)[3]                                                #文件名是‘2020/02/01a01.jpg’的格式
  48.         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'
  49.             img = url_open(each)
  50.             f.write(img)


  51. #————————————————————————————————————————————————————————————————————————————————   

  52. def main(folder = 'Girls'):
  53.     os.mkdir(folder)
  54.     os.chdir(folder)

  55.     url = 'http://mzitu.com/'

  56.     href_set = get_href(url)            
  57.         
  58.     for each in href_set:              
  59.         sub_url = url + each

  60.         imgURL = find_imgURL(sub_url)      
  61.    
  62.         save_img(folder, imgURL)


  63. if __name__ == '__main__':
  64.     main()
复制代码
最佳答案
2020-2-13 16:24:13
lovecnlsao 发表于 2020-2-13 16:21
求指导一下

文件名里怎么可能有/呢
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-2-13 16:21:33 | 显示全部楼层
求指导一下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-13 16:24:13 From FishC Mobile | 显示全部楼层    本楼为最佳答案   
lovecnlsao 发表于 2020-2-13 16:21
求指导一下

文件名里怎么可能有/呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-13 16:29:08 | 显示全部楼层
wp231957 发表于 2020-2-13 16:24
文件名里怎么可能有/呢

这个...因为不是windows还以为可以,属实蠢了点
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-13 16:30:58 From FishC Mobile | 显示全部楼层
lovecnlsao 发表于 2020-2-13 16:29
这个...因为不是windows还以为可以,属实蠢了点

linux也不行啊,估计mac也不行
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-3-3 09:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表