鱼C论坛

 找回密码
 立即注册
查看: 2405|回复: 2

[技术交流] [作品展示]第一次写的壁纸爬虫——(来自一个python小白,有一就有二233)

[复制链接]
发表于 2020-1-22 10:57:33 | 显示全部楼层 |阅读模式

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

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

x
    跟着小甲鱼老师学了这段时间的基础,昨天尝试做了一个壁纸的爬虫.
来自小白的第一次,代码放下,请大佬们批评指正,给出优化意见就更好了!!!
  1. import requests
  2. import re
  3. import os

  4. def get_html(url):
  5.     r = requests.get(url)
  6.     #返回壁纸首页信息,用来提取壁纸列表
  7.     return r.text                                                                                      

  8. def get_img_urls(img_num):
  9.     img_url = f'http://www.win4000.com/wallpaper_detail_{img_num}_1.html'
  10.     r = requests.get(img_url)
  11.     #提取系列壁纸的总页数
  12.     em = int(re.findall(r'<em>(.*?)</em>', r.text)[0]) + 1
  13.     img_urls = [f'http://www.win4000.com/wallpaper_detail_{img_num}_{i}.html' for i in range(1,em)]
  14.     #返回系列壁纸的网页列表【】
  15.     return img_urls                                                                                    

  16. def get_src(img_url):
  17.     r = requests.get(img_url)
  18.     src = re.findall('<img class="pic-large" src="(.*?)" alt=".*?" title=".*?"/>',r.text)[0]
  19.     down_dir = re.findall('<img class="pic-large" src=".*?" alt="(.*?)" title=".*?"/>',r.text)[0]
  20.     #返回壁纸下载源src,和系列名
  21.     return src,down_dir                                                                 

  22. def save_img(url,down_dir):
  23.     #创建保存路径
  24.     if not os.path.exists(down_dir):
  25.         os.mkdir(down_dir)
  26.     r = requests.get(url)
  27.     path = down_dir + '/' + url.split('/')[-1]
  28.     try:
  29.         with open(path,'wb') as f:
  30.             f.write(r.content)
  31.             print(path,'\t\t壁纸保存成功√')
  32.     except Exception as e:
  33.         print(e)

  34. def main():
  35.     input('---按任意键开始爬取壁纸---(默认为当前路径)\n')
  36.     #美女壁纸的5页urls                                                                                                      
  37.     urls = [f'http://www.win4000.com/wallpaper_2285_0_0_{i}.html' for i in range(1,6)]        
  38.     for url in urls:                           
  39.         src_list = []                    
  40.         html = get_html(url)
  41.         #获取当前页面的所有链接数字(之后做系列url拼接)
  42.         lst = re.findall('<a href=".*?(\d*?).html" alt=".*?" title=".*?" target="_blank">',html)            
  43.         print('正在加载资源...')
  44.         for img_num in lst:
  45.             img_urls = get_img_urls(img_num)                                                               
  46.             if img_urls:
  47.                 for img_url in img_urls:                                                                  
  48.                     (src,down_dir) = get_src(img_url)
  49.                     save_img(src,down_dir)                                                                 

  50. if __name__ == '__main__':
  51.     main()
  52.     print('程序执行完成!')
复制代码


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-2-27 20:03:45 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-28 00:31:00 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 10:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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