python爬虫练习——爬取妹子图图片

引子

包括我在内的广大宅男经常上的网站之一就是mzitu.com,个人认为属于做的非常好的美女图片网站。最近在学python于是想自己做一个爬虫,把这些美女抓下来存到自己电脑上,说干就干不墨迹。

过程

由于本人水平有限,也是初学者,所以参考了http://cuiqingcai.com/3179.html这篇帖子的主要思路。做了一点小小的改动,原作者是爬取mzitu整站的图片,我改为仅爬取性感妹子目录下的图片,你懂得~

主要过程是

  • 分析网页结构(代码特点)
  • 用BeautifulSoup找到自己需要的内容
  • 用requests来下载相应内容

代码

代码github链接在此

# -*- coding: utf-8 -*-
import requests
from bs4 import BeautifulSoup
import os
 

def getimg(baseurl, title):
    #baseurl是第一张图片地址,输入变量后,可以获取此组图片,保存在文件夹内
    #name = name
    html = requests.get(baseurl, headers=headers)
    html_Soup = BeautifulSoup(html.text, 'lxml')
    max_span = html_Soup.find('div', class_='pagenavi').find_all('span')[-2].get_text()
    path = title.replace('?', '_').replace(' ', '_')
    mkdir(path)
    os.chdir("E:\mzitu\\"+path)
    for page in range(1, int(max_span)+1): ##不知道为什么这么用的小哥儿去看看基础教程吧
        page_url = baseurl + '/' + str(page) ##同上
        #print(page_url)
        img_html = requests.get(page_url, headers=headers)
        img_Soup = BeautifulSoup(img_html.text, 'lxml')
        img_url = img_Soup.find('div', class_='main-image').find('img')['src'] ##这三行上面都说过啦不解释了哦
        #print(img_url)        
        name = img_url[-9:-4] ##取URL 倒数第四至第九位 做图片的名字
        img = requests.get(img_url, headers=headers)
        f = open(name+'.jpg', 'wb')##写入多媒体文件必须要 b 这个参数!!必须要!!
        f.write(img.content) ##多媒体文件要是用conctent哦!
        f.close()
def mkdir(path):
    path = path.strip()
    isExists = os.path.exists(os.path.join("E:\mzitu", path))
    if not isExists:
        print(u'建了一个名字叫做', path, u'的文件夹!')
        os.makedirs(os.path.join("E:\mzitu", path))
        return True
    else:
        print(u'名字叫做', path, u'的文件夹已经存在了!')
        return False

headers = {'User-Agent':"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1"}##浏览器请求头(大部分网站没有这个请求头会报错、请务必加上哦)
a=[];
a.append('/')
#datafile = open('data.txt','w')
for pagenum in range(2,77):
    a.append('/page/'+str(pagenum))
for pagenum in a:
    nexturl = 'http://www.mzitu.com/xinggan'+pagenum
    start_html = requests.get(nexturl, headers=headers)
    Soup = BeautifulSoup(start_html.text, 'html5lib')
    all_li = Soup.find('ul', id="pins").find_all('li')
    
    try:
        for li in all_li:
        #print(li.find('a'))
            #datafile.write(li.find('a')['href']+'\n'+li.find('a').find('img')['alt']+'\n\n')
            getimg(li.find('a')['href'], li.find('a').find('img')['alt'])        
        print(str(pagenum))
    except:
        print('error'+str(pagenum))
        continue
    print(nexturl)          
#datafile.close()

其中的很多代码其实都参考了那篇帖子,甚至保留了一些批注。但最终还是实现了这个功能。

成果

 

python爬虫练习——爬取妹子图图片》有5个想法

  1. ‍山羊爷爷的萝卜丰收了,请小白兔和小黑兔来帮忙。收完萝卜后山羊爷爷分别送了两只小兔一些萝卜,小黑兔拿了萝卜走了,小白兔则说我不要萝卜,你送我些萝卜籽吧。
    ‍第二年小白兔还没等到萝卜长出来就饿死了。小黑兔吃完自己的萝卜,正好赶上小白兔的萝卜成熟,就收了,把自己养的胖胖的。这个故事告诉我们,考虑你奶奶个孙子的长远啊,潇洒一天是一天吧,整不好自己就没了!

    你不给我萝卜,你给我个萝卜籽,你饿死我得了被,当谁都懂python呢。快,把你打包好的图片,弄个分享下载。哈哈哈哈哈哈哈哈哈哈

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据