[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[原创教程] python抓取美女图.py

本帖最后由 codegay 于 2016-5-29 15:24 编辑

python抓取美女图.py

由于是只用标准库,装了python3运行本代码就能下载到多多的美女图...
写出代码前面部分的时候,我意识到自己的函数设计错了,强忍继续把代码写完。
测试发现速度一般,200K左右的下载速度,也没有很好的错误处理。不过还是基本上能用。以后继续改进。

写出抓取东西的程序,比写其它程序要开心很多。^_^,大家也来试试写一个?
  1. """
  2. python抓取性感尤物美女图.py
  3. 2016年5月4日 00:51:00 codegay
  4. 参考资料: Python3学习笔记(urllib模块的使用)
  5. http://www.cnblogs.com/Lands-ljk/p/5447127.html
  6. 以下例子是python2的代码,并且用到lxml,requests 库
  7. 我用python3标准库和正则写一个下载全站美女图的程序
  8. 使用python来批量抓取网站图片
  9. http://www.cnblogs.com/TeyGao/p/5225940.html
  10. """
  11. print("程序运行中...")
  12. import re
  13. from urllib import request
  14. import os
  15. from pprint import pprint
  16. from time import sleep
  17. rooturl="http://www.xgyw.cc/"
  18. def getclass():
  19.     rec=re.compile('''align=center\>\<a href="(/\w+/)\"\>(.+)\</a\>''')
  20.     try:
  21.         txt=request.urlopen(rooturl).read().decode("gbk")
  22.         fl=rec.findall(txt)
  23.     except:
  24.         print("错误")
  25.         sleep(1)
  26.         
  27.     print("分类:")
  28.     pprint(fl)
  29.     return fl
  30. fenlei=getclass()#下载所有分类下的图片
  31. #fenlei=[getclass()[-1]]#只下载推女郎
  32. def getpagelist():
  33.     plist=[]
  34.     for f,n in fenlei:
  35.         rec=re.compile('''({}page_\d+?\.html)'''.format(f))
  36.         try:
  37.             txt=request.urlopen(rooturl+f).read().decode("gbk")
  38.             t=sorted(set(rec.findall(txt)+[f]))
  39.             plist+=t
  40.         except:
  41.             print("错误",e)
  42.             sleep(1)
  43.             
  44.     #print("page_list:")
  45.     #pprint(plist)
  46.     return plist
  47. pagelist=getpagelist()
  48. def getalbumlist():
  49.     albumlist=[]
  50.     for r in pagelist:
  51.         print(rooturl+r)
  52.         try:
  53.             txt=request.urlopen(rooturl+r).read().decode("gbk")
  54.             for x in re.findall(r'''href=(/(\w+)/(\2)\d+.html)''',txt):
  55.                 albumlist+=[x[0]]
  56.         except:
  57.             print("getalbumlist错误")
  58.             sleep(1)
  59.     return albumlist
  60. albumlist=getalbumlist()
  61. def getfphoto():
  62.     for r in albumlist:
  63.         try:
  64.             txt=request.urlopen(rooturl+r).read().decode("gbk")
  65.             result=re.findall(r'''(/(\w+)/(\2)\d+_?\d*.html)''',txt)
  66.             print(t)
  67.         except:
  68.             sleep(1)
  69.             
  70.             pass
  71.         for x in result:
  72.             try:
  73.                 html=request.urlopen(rooturl+x[0]).read().decode("gbk")
  74.                 jpgresult=re.findall('''src=\"(/uploadfile.*?\d+/\w+\.jpg)\"''',html)
  75.                 print(jpgresult)
  76.             except:
  77.                 sleep(1)
  78.             for h in jpgresult:
  79.                 try:
  80.                     request.urlretrieve(rooturl+h,os.path.basename(h))
  81.                 except:
  82.                     print(3)
  83.                     sleep(1)
  84. getfphoto()
复制代码
2

评分人数

去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

不错,进步很比我的都快。
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

不会用Python,查了挺久,乱凑出来…
  1. import re
  2. from urllib import request
  3. import os
  4. from pprint import pprint
  5. from time import sleep
  6. url_imgs = 'http://img.xgyw.cc/'
  7. url_root = 'http://www.xgyw.cc'
  8. url_find = url_root + '/neiyiyouwu/neiyiyouwu2035.html'
  9. path_save = '.'
  10. try:
  11. txt=request.urlopen(url_find).read().decode("gbk")
  12. rs_page=re.findall(r'''(/(\w+)/(\2)\d+_?\d*.html)''',txt)
  13. print('\n### rs_page::\n', rs_page)
  14. except:
  15. sleep(1)
  16. pass
  17. nPage = 0
  18. for x in rs_page:
  19. nPage += 1
  20. url_page = url_root + x[0]
  21. try:
  22. html=request.urlopen(url_page).read().decode("gbk")
  23. rs_img=re.findall('''src=\"(/uploadfile.*?\d+/\w+\.jpg)\"''',html)
  24. print('\n### Page:' + str(nPage) + '/' + str(len(rs_page)))
  25. print('\t### ' + url_page)
  26. except:
  27. sleep(1)
  28. nImgs = 0
  29. for h in rs_img:
  30. nImgs += 1
  31. fn = os.path.basename(h)
  32. dp = os.path.basename(url_find)
  33. #dp = url_find[url_find.rfind('/')+1:]
  34. dp = path_save + '/' + dp[:dp.rfind('.')]
  35. if (os.path.exists(dp) == False) : os.makedirs(dp) #建立文件夹
  36. ff = (dp + '/' + fn).replace('/', '\\')
  37. url_img = url_imgs + h
  38. print('\n### Page:' + str(nPage) + '/' + str(len(rs_page)), '\tImgs:' + str(nImgs) + '/' + str(len(rs_img)))
  39. print('\t### ' + url_page)
  40. print('\t###   ', url_img)
  41. print('\t### ->', ff)
  42. try:
  43. if (os.path.exists(ff) == False):
  44. print('\t### Download ...')
  45. request.urlretrieve(url_img, ff)
  46. print('\t\t### [OK]')
  47. else:
  48. print('\t### [EXIST]')
  49. except:
  50. print('\t\t### Error:0x3')
  51. sleep(1)
  52. print('\n### Done.')
复制代码
1

评分人数

『千江有水千江月』千江有水,月映千江;万里无云,万里青天。    http://yu2n.qiniudn.com/

TOP

改了。
丑陋的代码简直是不让能向人提起的黑历史。
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

第94行开头多了一个空格...
1

评分人数

TOP

虽然没玩过py,但还是觉得第21行代码写的太精彩了,看了一遍又一遍

TOP

回复 5# broly


    带带我
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

老司机
---学无止境---

TOP

回复 3# happy886rr


技巧欠缺加上之前没有写过。
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

回复 2# codegay
不错,这个py太实用了,代码很长啊。

TOP

返回列表