Python程序员自制爬虫小程序, 瞬间爬取十几万美女图片

最近对python爬虫感兴趣,于是也依葫芦画瓢试着用爬虫爬取之前喜欢的网站上的美女图片,其中每一套图都是一张一个页面,存一套图如果是手动得点翻几十个页面,但现在用爬虫的话,就很方便了,只需输入套图的id,轻轻松松就可以把美女存到硬盘了。

Python程序员自制爬虫小程序, 瞬间爬取十几万美女图片

1.目标网址

url:http://www.mm131.com/xinggan/2373.html

2.源代码分析

F12可以找到如下2行内容

src="http://img1.mm131.com/pic/2373/1.jpg"

span class="page-ch">共56页

我们得到如下信息

第一页的url为http://www.mm131.com/xinggan/2373.html

第一行是第一页图片的的url,其中2373是套图的id

第二行看到这个套图有56张

我们点击第二页和第三页继续看源码

第二页和第三页的url为http://www.mm131.com/xinggan/2373_2.html2373_3.html

图片url和第一页类似,1.jpg变成2.jpg

3.爬取图片

我们试着爬取第一个页面的图,直接上代码:

importrequests

importre

url ='http://www.mm131.com/xinggan/2373.html'

html= requests.get(url).text#读取整个页面为文本

a= re.search(r'img alt=.* src="(.*?)"/',html,re.S)  #匹配图片url

print(a.group(1))

得到:

http://img1.mm131.com/pic/2373/1.jpg

接下来我们需要把图片保存在本地:

pic= requests.get(a, timeout=2) #time设置超时,防止程序苦等

fp = open(pic,'wb')    #以二进制写入模式新建一个文件

fp.write(pic.content)  #把图片写入文件

fp.close()

这样,你的本地就会有第一张美女图了,

第一张既然已经保存了,那剩下的也都不要放过,继续放代码:

4.继续把代码补全

载入所需模块,并设置图片存放目录

#coding:utf-8

import requests

import re

import os

from bs4 import BeautifulSoup

pic_id = raw_input('Input pic id: ')

os.chdir("G:\pic")

homedir = os.getcwd()

print("当前目录 %s" % homedir )

fulldir = unicode(os.path.join(homedir,pic_id),encoding='utf-8')  #图片保存在指定目录,并根据套图id设置目录

if not os.path.isdir(fulldir):

    os.makedirs(fulldir)

url='http://www.mm131.com/xinggan/%s.html' % pic_idhtml = requests.get(url).text#soup = BeautifulSoup(html)soup = BeautifulSoup(html, 'html.parser') #使用soup取关键字,上一行会报错UserWarning: No parser was explicitly specifiedye = soup.span.stringye_count = re.search('\d+',ye)print('pages:共%d页' % int(ye_count.group()))

​主函数

def downpic(pic_id):

    n = 1

    url='http://www.mm131.com/xinggan/%s.html' % pic_id

    while n <= int(ye_count.group()):  #翻完停止

        #下载图片

        try:

            if not n == 1:

                url='http://www.mm131.com/xinggan/%s_%s.html' % (pic_id,n) #url随着n的值变化的

            html = requests.get(url).text

            pic_url = re.search(r'img alt=.* src="(.*?)" /',html,re.S)  #使用正则去关键字

            pic_s = pic_url.group(1)

            print(pic_s)

            pic= requests.get(pic_s, timeout=2)

            pic_cun = fulldir + '\\' + str(n) + '.jpg'

            fp = open(pic_cun,'wb')

            fp.write(pic.content)

            fp.close()

            n += 1

        except requests.exceptions.ConnectionError:

            print("【错误】当前图片无法下载")

            continue

if __name__ == '__main__':

    downpic(pic_id)

程序跑起来

声明:本文于网络整理,著作权归原作者所有,如有侵权,请联系小编删除。