Python学习笔记2_实现Moe站手机壁纸爬取(改进设计思路)

设计思路: 

1.由三部分组成 AL.py(实现解析返回手机壁纸页面所有的图片链接  字符串数组类型

2.download.py()实现下载功能

3.P_img.py 解析所有手机壁纸页面HTML子页链接 ,并调用AL.py和download.py实现控制。

以下为源码

 

P_img.py文件

 

import requests
import urllib.request
import time
import re
import AL#自定义解析src
import download#自定义下载函数
N=0#控制起始命名
imgName = 0

for page in range(0,32):#循环实现翻页动态爬取/共23页 具有控制页数选择性
 page=page+1
 i=str(page)#http://moe.005.tv/moeimg/sjbz/list_601_1.html
 url='http://moe.005.tv/moeimg/sjbz/list_601_'+i+'.html'#根据下标规律实现翻页SJBZ(手机壁纸) 目标抓取所有手机壁纸
 imgstr=requests.get(url)   #由于子页面 url下标规律暂未找到 所有忽略子页面2以上 只爬去每个子页面的第一页
 from bs4  import  BeautifulSoup #通过beautifulsoup解析
 soup=BeautifulSoup(imgstr.text,'lxml')
 data=soup.select('body > div.nav_warp > div.nav_w_left > div.zhuti_w_list > ul > li > a')#定位
 for item in data:#http://moe.005.tv/57583.html'''
  href=(item.get('href'))
  ur=href #返回所有手机壁纸html
  temp=AL.update(ur)#调用自定义抓取.jpg链接
   for src in temp: #使用元组接受 循环遍历打印


     download.superdown(src,N)#调用自定义函数下载
     print('Now',N) #打印当前序号
     N=N+1


""" pattern = re.compile(r'\d+')
        item=pattern.findall(item.get('href'),17)#正则表达式取链接后5位id
        print(item)#item是所有手机壁纸端口代码
        for id_1 in item:
           id=str(id_1)
       ur='http://moe.005.tv/'+id+'.html'

        item=item.get('href')
AL.py文件
 
import requests
import urllib.request
import time
def  update(r):#自定义 抓取图片链接函数
 imgstr = requests.get(r,timeout=10)
 from bs4 import BeautifulSoup  # 解析
 soup = BeautifulSoup(imgstr.text, 'lxml')
 data = soup.select('body > div.nav_warp > div.nav_w_left > div.content_box > div > div.content_nr > div > img')
 src_list = []#创建数组 保存抓取的src
 for each in data: # 循环遍历data
    res= each.get('src')  # 抓取src
    src_list.append(res) #定义数组 返回

 return src_list  #返回类型位字符串数组
 

download.py

 
import urllib
import os
import time
def ds(a, b, c): #计算下载进度
 """回调函数
 @a: 已经下载的数据块
 @b: 数据块的大小
@c: 远程文件的大小
"""
 per = 100.0 * a * b / c
 if per > 100:
    per = 100
    print ('%.2f%%' % per)


     ############
def  superdown(r,N):#自定义函数实现下载功能

    N_1 = str(N)
    print(r,'正在下载')
    try:    #简单进行异常判断
     urllib.request.urlretrieve(r, 'F:\\py_1\\%s' + N_1 + '.jpg',ds)  # 通过使用urlib库实现文件下载
    except:
        print('图片不存在404')

   # time.sleep(1)  延时控制可选

"""

你可能感兴趣的:(Pyhton)