鱼C论坛

 找回密码
 立即注册
楼主: 沉好人

[技术交流] 爬取mzitu.com/zipai的妹子图

  [复制链接]
发表于 2020-5-26 21:52:42 | 显示全部楼层
66666
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-1 14:44:07 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-1 22:48:37 | 显示全部楼层
学习~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-2 10:56:19 | 显示全部楼层
学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-5 20:51:37 | 显示全部楼层
看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-5 22:17:08 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-11 19:30:31 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-12 14:05:51 | 显示全部楼层
学习学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-12 14:25:42 | 显示全部楼层
LOOK  LOOK
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-12 18:24:11 | 显示全部楼层
小甲鱼真帅
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-13 16:37:02 | 显示全部楼层
最近试了一下,原来的版本里正则式匹配不了图片链接了,重新改了一下
  1. import requests
  2. import re
  3. import os
  4. import easygui as g

  5. def get_url(url):
  6.     headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3314.0 Safari/537.36 SE 2.X MetaSr 1.0'}
  7.     req = requests.get(url, headers=headers)

  8.     return req

  9. def get_img_url(url1, url2): #图片地址
  10.     headers = {
  11.         'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3314.0 Safari/537.36 SE 2.X MetaSr 1.0',
  12.         'referer':url2      
  13.         }
  14.     req = requests.get(url1, headers=headers)

  15.     return req

  16. def get_page(url):  #共有多少页
  17.     html = get_url(url).text
  18.     p = r"page-numbers.+[\d]+/'"
  19.     page_match = re.findall(p, html)
  20.     for each in page_match:
  21.         page = re.sub(r'\D','', each)
  22.    
  23.     return page

  24. def find_picurl(url):   #每一页中的项目url
  25.    
  26.     html = get_url(url).text
  27.     p = r'<li><a href="(https://www.mzitu.com/[\d]+)" target'
  28.     picurl = re.findall(p, html)

  29.     return picurl

  30. def pro_name(url):      #每一页的项目名称
  31.     html = get_url(url).text
  32.     p = r"alt='(.+)' width='236'"
  33.     targets = re.findall(p, html)

  34.     return targets
  35.    
  36. def get_p_page(url):   #每一个项目的页数即图片数
  37.     html = get_url(url).text
  38.     p = r'<span>([\d]+)</span>'
  39.     p_page = re.findall(p, html)
  40.     for each in p_page:
  41.         page = each
  42.    
  43.     return int(page)

  44. def find_imgs(url):
  45.     html = get_url(url).text
  46.     p = re.search(r'img class="blur" src="(https.+\.jpg)', html)
  47.     return p.group(1)

  48. def save_img(url, ref_url):
  49.     filename = url.split('/')[-1]
  50.     with open(filename, 'wb') as f:
  51.         img = get_img_url(url, ref_url).content
  52.         f.write(img)
  53.    
  54. def main():
  55.     folder = g.diropenbox("请选择存放照片的文件夹")
  56.     os.listdir(folder)
  57.     os.chdir(folder)
  58.    
  59.     url = "https://www.mzitu.com/xinggan/"
  60.     page = get_page(url) #总共几页
  61.     print("总共有{}页".format(page))
  62.     f = True
  63.     while f == True:
  64.         Page = input("请输入下载第几页:")
  65.         url1 = 'https://www.mzitu.com/xinggan/page/{}/'.format(Page)
  66.         
  67.         pic_url = find_picurl(url1)
  68.         pic_pro = pro_name(url1)
  69.         num = len(pic_url)   #每一页的项目个数
  70.         print("第%s页共有%d个项目" % (Page, num))
  71.         for each in range(1, num+1):
  72.             print("第%d个项目是:" % each)
  73.             print(pic_pro[each-1])
  74.         Num = int(input("请输入需要下载第几个项目:"))
  75.         p_page = get_p_page(pic_url[Num-1])
  76.         print("共有%d页:" % p_page)
  77.         for i in range(1,p_page+1):
  78.             url2 = pic_url[Num-1] + '/' + str(i)   
  79.             img_addr = find_imgs(url2)
  80.             print(img_addr)
  81.             save_img(img_addr, url2)
  82.         print("下载完毕")
  83.         ans = input("是否继续下载:输入Y/N")
  84.         if ans == 'N':
  85.             f = False

  86. if __name__ == '__main__':
  87.     main()

复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 2 反对 0

使用道具 举报

发表于 2020-6-13 18:16:52 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-16 21:13:43 | 显示全部楼层
hhh
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-16 23:16:19 | 显示全部楼层
学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-20 16:11:13 | 显示全部楼层
haaaa.....
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-20 17:03:07 | 显示全部楼层
这个mzitu的下来了为什么全是防盗链的图
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-20 18:22:47 | 显示全部楼层
nanrenne 发表于 2020-6-20 17:03
这个mzitu的下来了为什么全是防盗链的图

看置顶评论
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-21 13:29:13 | 显示全部楼层

我想知道原因呀大神,我是小白在学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-21 14:58:09 | 显示全部楼层
haha   6啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-21 16:24:26 | 显示全部楼层
nanrenne 发表于 2020-6-21 13:29
我想知道原因呀大神,我是小白在学习

网站的html代码改过了,一开始用的正则表达式匹配的图片链接现在行不通了,所以我按后来的图片链接重新改了一下正则表达式就可以了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-24 00:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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