#!/usr/bin/env python
# -*- coding:utf-8 -*- 煎蛋网抓妹子图
import urllib.request
import os
import random def url_open(url): #定义打开网络连接函数
req = urllib.request.Request(url)#创建Request对象
#给Request对象添加伪装头文件
req.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36')
#定义个代理IP列表 用于随机选择代理IP
iplist=['218.240.53.54:81','123.7.78.157:9999','112.95.105.26:9999','61.174.10.22:8080','115.52.204.30:9999']
#创建代理对象
proxy_support = urllib.request.ProxyHandler({'http':random.choice(iplist)})
opener = urllib.request.build_opener(proxy_support)
#设置代理对象伪装头文件
opener.addheaders=[("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36")]
#安装代理文件
urllib.request.install_opener(opener)
#打开对应URL
respons = urllib.request.urlopen(url)
#接收对应URL的html代码
html = respons.read()
return html def get_page(url):#定义查找图片页面函数
html=url_open(url)#打开URL页面或的html代码
html=html.decode('utf-8')#用utf-8反编码 a=html.find('current-comment-page')+23#查找html代码中current-comment-page标志+23偏移量 得到图片页码 <span class="current-comment-page">[2110]</span>其中的2110
b=html.find(']',a) #定义结束位置
return (html[a:b])#返回取得的页码 def find_img(url):
html= url_open(url).decode('utf-8')#打开URL文件 把返回的html文件utf-8反编译
img_addrs=[]#定义图片地址列表
a=html.find('img src=')#在html文件中查找所有img src开头的 图片文件
while a!=-1: #a=-1时表示find完毕
b=html.find('.jpg',a,a+255)#查询到 img_src开头 和.jpg结尾的
if b != -1:
img_addrs.append(html[a+9:b+4])#查询到满足条件的html代码信息 就保存在图片列表中
else:
b=a+9
a=html.find('img src=',b)
return img_addrs def save_imgs(folder,img_adds):
for each in img_adds:
filename = each.split('/')[-1]
with open(filename,'wb') as f:
img=url_open(each)
f.write(img) def down_mm(folder='downloadimg',pages=10):
os.mkdir(folder)#新建文件夹
os.chdir(folder)#切换到当前文件夹 url="http://jandan.net/ooxx/"
page_num=int(get_page(url))#取得开始页面号
print(str(page_num))
for i in range(pages):#依次页面号递减 返回前10页的图片
page_num -=i
page_url=url+'page-'+str(page_num)+'#comments'#拼出页面URL+图片页面号 http://jandan.net/ooxx/page-2110#comments
img_adds= find_img(page_url)#查找出当前打开页面的所有图片路径和文件名称信息保存在列表中
save_imgs(folder,img_adds)#根据列表中保存的文件路径和名称 通过网络下载图片到指定文件夹下面 down_mm()

最新文章

  1. mybatis generator.xml 配置 自动生成model,dao,mapping
  2. 汇编实现点亮Led灯(2440)
  3. Spark学习(四) -- Spark作业提交
  4. Jquery广告浮动效果小案例
  5. CMake 入门
  6. android 搭建开发环境
  7. JAVA数据源连接方式汇总
  8. 【USACO 3.2.3】纺车的轮子
  9. HTTP缓存机制[译文]
  10. Android View视图系统分析和Scroller和OverScroller分析
  11. ConstraintLayout布局介绍.md
  12. Adobe系列产品卸载不干净怎么解决
  13. Javascript高级编程学习笔记(35)—— DOM(1)节点
  14. java将一个javabean转化为另一个javabean
  15. HTTP基础知识3
  16. September 19th 2017 Week 38th Tuesday
  17. 20155237 2016-2017-2 《Java程序设计》第1周学习总结
  18. Vmware虚拟机linux上网问题
  19. Scala基础:面向对象之对象和继承
  20. 误删 libc.so.6的解决方法(转)

热门文章

  1. font-family:中文字体的英文名称 (宋体 微软雅黑)
  2. js过滤HTML标签以及&amp;nbsp;
  3. spider-抓取网页内容(Beautiful soup)
  4. 铁乐学python_Day44_IO多路复用
  5. Springboot+RestTemplate 简单使用
  6. Take my breath away
  7. Language-Directed Hardware Design for Network Performance Monitoring——Marple
  8. 解决数据库自增ID的问题
  9. 在windows下的虚拟环境中使用tk,要留神了
  10. gitlab+jenkins环境搭建.md