|  | 
 
 发表于 2015-9-15 19:59:44
|
显示全部楼层 
| 本帖最后由 lilyef2000 于 2015-9-15 20:04 编辑 
 
 今天闲着没事调了一下,通过了,有一点改动,贴上代码
 
 复制代码# -*- coding: utf-8 -*-
import re
import os
import urllib2
import urllib
#打开URL
def url_open(url):
 req=urllib2.Request(url)
 req.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.89 Safari/537.36')
 resp=urllib2.urlopen(req)
 html=resp.read()
 return html
#找到有图片的链接
def get_page(url):
 html=url_open(url)
 find_html=r'<a target="_blank" href="(http://www.mm131.com/xinggan/\d{3}\d?\.html)">'
 htmllist=re.findall(find_html,html)
 return htmllist
#在链接中找图片
def get_img(url):
 html=url_open(url)
 #获得图片数量
 find_img_num=r"<a href='\d{3}\d?_\d\d?\.html' "
 img_num=len(re.findall(find_img_num,html))
 #获得图片编号
 find_img_id=r"<a href='(\d{3}\d?)_\d\d?\.html' "
 img_id=(re.findall(find_img_id,html))[0]
 #图片链接的规律是http://img1.mm131.com/pic/\d{3}\d/\d\d?\.jpg,其中第二个数字是从1到图片总量的数字
 #根据这个规律,以下是寻找图片的链接保存在一个列表
 num=1
 imglist=[]
 for eachimg in range(0,img_num,1):
  eachimg='http://img1.mm131.com/pic/%s/%s.jpg' %(img_id,str(num))
  imglist.append(eachimg)
  num+=1
 return img_id,img_num,imglist
#下载图片
def download():
 url='http://www.mm131.com/xinggan/'#这个是性感美女板块的第一页,可以模仿上面找规律方法,并通过循环来下载所有页或其他板块
 h=get_page(url)
 if not os.path.exists('Beauty'):
        os.mkdir('Beauty')
 os.chdir('Beauty')
 for eachhtml in h:
  (pid,num,piclist)=get_img(eachhtml)
  if not os.path.exists(pid):
    os.mkdir(pid)
  os.chdir(pid)
  for eachpic in piclist:
   eachpic_name=(eachpic).split('/')[-1]
   if not os.path.exists(eachpic_name):    #同个美女保存在一个以美女编号为名的文件夹
     urllib.urlretrieve(eachpic,eachpic_name,None)
  print u'已成功获取',num,u'张图片保存于',pid,u'中,正在获取下一批,请耐心等待...'
  os.chdir('E:\mm')#这个相当于返回上一个文件夹
 print u'获取完毕!'
download()
 开头加入了代码声明
 # -*- coding: utf-8 -*-
 import reimport os
 改为
 import re
 import os
 
 os.chdir('F:\\workspace\\Reptile\\src\\MyReptile\Beauty')#这个相当于返回上一个文件夹
 这一句是要存在这样的目录才能通过的,我在我的E盘建了个mm文件夹,代码改成了
 os.chdir('E:\mm')
 调试通过
 | 
 |