开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 8937|回复: 5
收起左侧

[源码分享] [python] 第一个爬虫, 爬妹子写真集图片

[复制链接]
结帖率:81% (26/32)
发表于 2017-7-18 23:23:58 | 显示全部楼层 |阅读模式   贵州省贵阳市
效果图
]N5K3FZ2SEBEHAO96GW.jpg
版本以及需要用到的第三方库
  • python 2.7
  • bs4 (安装命令: pip install bs4)
    -
代码
  1. #!/usr/bin/env python
  2. #coding:UTF-8

  3. #脚本名称: 爬妹纸写真图
  4. #脚本作者: 剑齿虎
  5. #脚本版本: python2.7
  6. #第三方库: BeautifulSoup

  7. import urllib2
  8. import os
  9. from bs4 import BeautifulSoup
  10. import sys
  11. reload(sys)
  12. sys.setdefaultencoding('gbk') #使用GBK编码

  13. #函数: 进入下载写真集
  14. def DownloadMz(url):
  15.     html    =   urllib2.urlopen(url).read()
  16.     dom_    =   BeautifulSoup(html, 'html.parser') #解析为类似dom的对象

  17.     title   =   dom_.body.select(".main-title")[0].string #找元素:标题
  18.     count   =   dom_.body.select(".pagenavi")[0].findAll('a')[4].span.string #找元素:页数

  19.     #打印信息
  20.     print('title:' + title)
  21.     print('count:' + count)
  22.     print('url:' + url + "\n------------------")

  23.     #保存图片
  24.     for i in range(1,int(count)):
  25.         get_url     =   url + "/" + str(i) #分页地址
  26.         save_path   =   os.getcwd() + "\\Download\" + str(title)  #保存目录

  27.         #创建保存目录, 如果不存在
  28.         if os.path.exists(save_path)==False:
  29.             os.mkdir(save_path)

  30.         #保存图片
  31.         save_path   =   save_path + "\" + str(i) + ".jpg" #保存文件名
  32.         SaveImage(get_url, save_path)
  33.         print("-- OK: "+ save_path)

  34.     print("---------- END -----------\n\n")


  35. #函数: 保存每页图片
  36. def SaveImage(get_url, savePath):
  37.     #获取图片地址
  38.     html    =   urllib2.urlopen(get_url).read()
  39.     dom_    =   BeautifulSoup(html, 'html.parser')
  40.     src     =   dom_.select(".main-image")[0].p.a.img['src']

  41.     #保存呀保存
  42.     f       =   open(savePath, 'wb')
  43.     f.write(urllib2.urlopen(src).read())
  44.     f.close()







  45. #来啊~ 快活呀
  46. url     =   "http://www.mzitu.com/japan/"
  47. html    =   urllib2.urlopen(url).read()
  48. bs      =   BeautifulSoup(html, 'html.parser')
  49. pages   =   bs.body.select(".page-numbers")[5]['href'] #取总页数html

  50. #取爬取页面分页总数
  51. cur_end     =   pages.rindex("/", 0)
  52. cur_start   =   pages.rindex("/", 0, cur_end) + 1
  53. page_count  =   pages[cur_start:cur_end] #页数

  54. for i in range(1, int(page_count)):
  55.     page_url    =   url + "/page/" + str(i) #分页url
  56.     print("*** PAGE *** " + str(i) + "/" + str(page_count) + " $ " + page_url)

  57.     dom_        =   BeautifulSoup(urllib2.urlopen(page_url).read(), 'html.parser') #取分页dom
  58.     uls     =   bs.body.findAll('ul',{'id':'pins'})[0].findAll("li") #获取写真集列表

  59.     #进入下载写真集
  60.     for li in uls:
  61.         DownloadMz(str(li.span.a['href']))
复制代码


目前正在学习Python, 为了更能快速学到知识. 最好就是实践一个小项目, 一般看文档一般搜百度一边写程序, 虽说踩的坑不少, 但也积累了经验.
这个程序还存在个问题, 就是”写真集”没有分页, 下载完第一页就结束了. 有兴趣的小伙伴可以改改
“脚本目录需要新建一个 Download 目录, 脚本不会自己创建这个目录的~”


评分

参与人数 1好评 +1 精币 +4 收起 理由
SalHe + 1 + 4 最近也开始入坑Python 给楼主点个赞

查看全部评分

本帖被以下淘专辑推荐:

结帖率:43% (3/7)
发表于 2017-8-10 12:29:28 | 显示全部楼层   湖南省衡阳市
python2.7与python3.6差别太大,用3.6无法运行,thml通不过。
回复 支持 反对

使用道具 举报

结帖率:53% (10/19)
发表于 2017-7-19 12:41:54 | 显示全部楼层   广西壮族自治区北海市
火钳刘明
回复 支持 反对

使用道具 举报

结帖率:100% (11/11)

签到天数: 1 天

发表于 2017-7-19 08:11:36 | 显示全部楼层   贵州省贵阳市
最近也开始入坑Python  给楼主点个赞
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)
发表于 2017-7-19 04:27:25 | 显示全部楼层   美国
可以,第一个爬虫就那么迫不及待哈哈~支持~
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)
发表于 2017-7-19 01:56:27 | 显示全部楼层   广西壮族自治区玉林市
......................
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表