[python] 第一个爬虫, 爬妹子写真集图片
阅读原文时间:2023年09月07日阅读:4

效果图

版本以及需要用到的第三方库

  • python 2.7
  • bs4 (安装命令: pip install bs4)

-

代码

#!/usr/bin/env python
#coding:UTF-8

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

import urllib2
import os
from bs4 import BeautifulSoup
import sys
reload(sys)
sys.setdefaultencoding('gbk') #使用GBK编码

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

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

    #打印信息
    print('title:' + title)
    print('count:' + count)
    print('url:' + url + "\n------------------")

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

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

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

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

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

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

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

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

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

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

    #进入下载写真集
    for li in uls:
        DownloadMz(str(li.span.a['href']))

目前正在学习python, 为了更能快速学到知识. 最好就是实践一个小项目, 一般看文档一般搜百度一边写程序, 虽说踩的坑不少, 但也积累了经验.

这个程序还存在个问题, 就是”写真集”没有分页, 下载完第一页就结束了. 有兴趣的小伙伴可以改改

“脚本目录需要新建一个 Download 目录, 脚本不会自己创建这个目录的~”