1. import random
  2. import urllib
  3. from urllib import request
  4. import os
  5. #########################################################
  6. # 参数设置
  7. wsp = 'DouziOOXX'
  8. # 打开连接
  9. def url_open(url):
  10. req = urllib.request.Request(url)
  11. req.add_header('User-Agent',
  12. 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.78 Safari/537.36')
  13. response = urllib.request.urlopen(req)
  14. html = response.read()
  15. # print(url)
  16. return html
  17. def get_page(url):
  18. # 打开链接
  19. html = url_open(url).decode('utf-8')
  20. # 查找 current-comment-page
  21. a = html.find('current-comment-page') + 23
  22. b = html.find(']', a) # 从a开始,找到第一个 ], 返回索引
  23. return html[a:b]
  24. def find_imgs(url):
  25. html = url_open(url).decode('utf-8')
  26. img_addrs = []
  27. a = html.find('img src=')
  28. while a != -1:
  29. b = html.find('.jpg', a, a + 255)
  30. if b != -1: # 找到一个 jpg
  31. img_addrs.append(html[a+9 : b+4]) # 加入列表
  32. else: # 到不到, 移动b的位置
  33. b = a + 9
  34. a = html.find('img src=', b) # 在b之后开始,再找img src
  35. # for each in img_addrs:
  36. # print(each)
  37. return img_addrs
  38. def save_imgs(folder, img_addrs):
  39. for each in img_addrs:
  40. filename = each.split('/')[-1]
  41. # print('http:' + each)
  42. with open(filename, 'wb') as f:
  43. img = url_open('http:' + each)
  44. f.write(img)
  45. def download_mm(folder = wsp, pages = 10):
  46. os.mkdir(folder)
  47. # 切换到工作目录
  48. os.chdir(folder)
  49. url = "http://jandan.net/ooxx/"
  50. # 获得页面的地址
  51. page_num = int(get_page(url))
  52. for i in range(pages):
  53. page_num -= i
  54. # 打开这个地址
  55. page_url = url + "page-" + str(page_num)
  56. # 获取图片地址, 保存为一个列表
  57. img_addrs = find_imgs(page_url)
  58. # 保存到图片到指定文件夹
  59. save_imgs(folder, img_addrs)
  60. if __name__=='__main__':
  61. download_mm()

Python学习笔记(五十)爬虫的自我修养(三)爬取漂亮妹纸图的更多相关文章

  1. Python学习笔记(十四)

    Python学习笔记(十四): Json and Pickle模块 shelve模块 1. Json and Pickle模块 之前我们学习过用eval内置方法可以将一个字符串转成python对象,不 ...

  2. Python学习笔记(十)

    Python学习笔记(十): 装饰器的应用 列表生成式 生成器 迭代器 模块:time,random 1. 装饰器的应用-登陆练习 login_status = False # 定义登陆状态 def ...

  3. Python学习笔记(十五):类基础

    以Mark Lutz著的<Python学习手册>为教程,每天花1个小时左右时间学习,争取两周完成. --- 写在前面的话 2013-7-24 23:59 学习笔记 1,Python中的大多 ...

  4. Python学习笔记(十四):模块高级

    以Mark Lutz著的<Python学习手册>为教程,每天花1个小时左右时间学习,争取两周完成. --- 写在前面的话 2013-7-23 21:30 学习笔记 1,包导入是把计算机上的 ...

  5. Python学习笔记:利用爬虫自动保存图片

    兴趣才是第一生产驱动力. Part 1 起先,源于对某些网站图片浏览只能一张一张的翻页,心生不满.某夜,冒出一个想法,为什么我不能利用爬虫技术把想看的图片给爬下来,然后在本地看个够. 由此经过一番初尝 ...

  6. Python学习笔记第二十五周(Django补充)

    1.render_to_reponse() 不同于render,render_to_response()不用包含request,直接写template中文件 2.locals() 如果views文件中 ...

  7. python学习笔记-(十五)RabbitMQ队列

    rabbitMQ是消息队列:想想之前的我们学过队列queue:threading queue(线程queue,多个线程之间进行数据交互).进程queue(父进程与子进程进行交互或者同属于同一父进程下的 ...

  8. Python学习笔记第十五周

    目录: 一.CSS补充 1.position 2.overflow 3.hover 4.background 二.JavaScript 三.DOM 主要内容: 一.CSS补充 1.position 可 ...

  9. Python 学习笔记(十五)Python类拓展(二)方法

    方法 绑定方法和非绑定方法 绑定方法和非绑定方法在创建时没有任何区别,同一方法,既可以为绑定方法,也可以为非绑定方法,一切不同都只在调用时的手法上有所区别. 绑定方法即该方法绑定类的一个实例上,必须将 ...

随机推荐

  1. 01—为什么使用java

    Java解决的问题 1.指针问题 java里面没有指针,用引用解决指针问题,但是引用是一种限制的指针,不能参与整数运行和指向任意位置的内存,并且不用显示回收对象 引用地址:http://blog.cs ...

  2. P4环境搭建

    P4环境搭建 执行仓库中所有脚本,即可即可安装所有依赖项. GitHub链接 脚本执行顺序:deps,p4c-bm,bmv2,p4c

  3. 福大软工1816:Beta(2/7)

    Beta 冲刺 (2/7) 队名:第三视角 组长博客链接 本次作业链接 团队部分 团队燃尽图 工作情况汇报 张扬(组长) 过去两天完成了哪些任务 文字/口头描述 为utils_wxpy.py添加注释 ...

  4. 周总结<7>

    这周和3位朋友一起完成了系运动会的视频,感受很多,也学到很多. 周次 学习时间 新编代码行数 博客量 学到知识点 14 20 100 1 Html页面设计:虚拟机:(C语言)最小生成树与最短路径 Ht ...

  5. 重写JdbcRDD支持Sql命名参数和分区

    Spark提供的JdbcRDD很不好用,没法指定命名参数,而且必须要提供两个Long类型的参数表示分区的范围,如果数据表没有long类型的字段或者不需要条件,那就不能用JdbcRDD了.这里我简单重写 ...

  6. 第八次JAVA语言笔记

  7. 微信小程序 对接口常用

    @import '../expert/expert.wxss';   FZ._get('https://didu2.didu86.com/issun/index.php/Home/goodstype/ ...

  8. python编码iso-8859-9编码问题

    (2018-10-15) 路 2018骞�10鏈�16鏃�8:30鈥斺€�11:00锛屽湪鍏垽涓€搴叕寮€瀹$悊锛氬啀瀹$敵璇�.. (2018-10-15) 路 2018骞�10鏈�16鏃�8: ...

  9. CCSDS标准的LDPC编译码仿真

    html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,bi ...

  10. SQL入门之多表查询

    如果查询需要针对两个或者更多个表,则在需要涉及到表的连接操作(join). 0.笛卡儿积 最简单的连接方式是直接在from子句中加入两个表,并且用join操作符隔开.形式为Table1 join Ta ...