python爬取网页唯美图片

爬取过程分析:
1、打开url:http://www.mmonly.cc/wmtp/wmwz/, 调出开发者工具,刷新页面
2、算了,不想分析了,比较简单( ̄^ ̄゜)

看看代码吧:

import urllib
import requests
from bs4 import BeautifulSoup
import os


def Download(url, picAlt, name):
    path = 'D:\\pycharmproject\\spiderproject\\spiderphoto\\' + picAlt + '\\'
    if not os.path.exists(path):  # 判断系统是否存在该路径,不存在则创建
        os.makedirs(path)
    urllib.request.urlretrieve(url, '{0}{1}.jpg'.format(path, name))  # ,下载图片保存在本地



def run(targetUrl, beginNUM, endNUM):
    resp = requests.get(targetUrl)
    resp.encoding = 'gb2312'
    html =resp.text
    soup = BeautifulSoup(html, 'lxml')
    Divs = soup.find_all('div', attrs={'id': 'big-pic'})
    nowpage = soup.find('span', attrs={'class': 'nowpage'}).get_text()  # 获取当前页码
    totalpage = soup.find('span', attrs={'class': 'totalpage'}).get_text()  # 获取所有页
    if beginNUM == endNUM:  # 跳出条件
        return
    for div in Divs:  # 遍历所有大图所在的div,其实只有一个元素。因为前面使用的是find_all()方法得到的是集合,所以这要遍历了。有点不太实用 因为与照顾到语法使用全面的意思
        beginNUM = beginNUM + 1

        if div.find("a") is None:  # 如果这张图片没有下一张图片的链接
            print("没有下一张了")
            return
        elif div.find("a")['href'] is None or div.find("a")['href'] == "":  # 有链接,但是是 空链接
            print("没有下一张了")
            return
        if int(nowpage) < int(
                totalpage):  # nowpage,totalpage是str类型;(如果不转换成int来比较的话,totalPage是字符串“12”无法与‘1’‘2’这些单个字符的字符串比较)
            nextPageLink = "http://www.mmonly.cc/wmtp/wmwz/" + (div.find('a')['href'])
        elif int(nowpage) == int(totalpage):
            nextPageLink = (div.find('a')['href'])

        picLink = (div.find('a').find('img')['src'])  # 本网站大图的SRC属性是下一张图片的链接
        picAlt = (div.find('a').find('img'))['alt']  # 图片的名字alt属性
        print('套图名:[ ', picAlt, ' ] ')
        pic = requests.get(picLink)
        Download(picLink, picAlt, nowpage)
        run(nextPageLink, beginNUM, endNUM)  # 递归
        return


if __name__ == '__main__':
    targetUrl = "http://www.mmonly.cc/wmtp/wmwz/298803.html"
    run(targetUrl, beginNUM=0, endNUM=60)  # 设置下载图片数量:endNUM-beginNUM 数字相减为总数量
    print('下载完成')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值