用IDM下载博客图片

前言

写博客的人一定都会有一个图床,将图片存在那里。发现自己以前没有注意图片来源问题,随手就贴在博客上面了。现在有不少图片都挂了,换句话来说有可能自己目前用的图床不提供服务了,那所有的图片都有可能丢失......所以打算写个脚本,把以前博客的图片保存下来,并在以后发博的时候注意保存本地图片。emmm,程序如下,主要是个人用脚本,所以很多地方就是图自己的方便、根据自己的情况写的:

代码

# -*- coding: utf-8 -*-
import os
import requests
from bs4 import BeautifulSoup
import re
import time
from subprocess import call

path = "./back_up/"
url = "https://www.cnblogs.com/yunlambert/p/"
model = 'http://equations.online/'

def download(DownUrl, DownPath, OutPutFileName):
    IDM = r'D:\yun_install_software\IDM\IDMan.exe'
    DownPath = r'E:\workstation\Github\Blog_Pictures\back_up'
    call([IDM, '/d', DownUrl, '/p', DownPath, '/f', OutPutFileName, '/n'])

def get_url(url):
    try:
        headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) ''Chrome/51.0.2704.63 Safari/537.36'}
        response = requests.get(url, headers=headers, timeout=30)
        if response.status_code == 200:
            return response.text
        else:
            print(response.status_code)
            return None
    except:
        print('Error open the page... ')
        return None

def get_pages(post_page):
    pages = []
    while True:
        try:
            post_pages = post_page.find_all(name="a")[-2].get('href')
            temp = get_url("https://www.cnblogs.com" + post_pages)
            post_page = BeautifulSoup(temp, "lxml")
            pages.append("https://www.cnblogs.com" + post_pages)
            # print(post_pages)
        except Exception as e:
            print(Exception, ":", e)
            break
    return pages

def main():
    folder = os.path.exists(path)
    if not folder:
        os.makedirs(path)
    html = get_url(url)
    soup = BeautifulSoup(html, "lxml")

    post_page_1 = soup.find(name='div', attrs={"class": "Pager"})
    post_page = get_pages(post_page_1)
    post_page.insert(0, "https://www.cnblogs.com/yunlambert/p/?page=1")
    print(post_page)
    post_article = []

    for i in range(0, len(post_page)):
        link = post_page[i]
        page = BeautifulSoup(get_url(link), "lxml")
        try:
            article = page.find_all(name="div", attrs={"class": "postTitl2"})
            for j in range(0, len(article)):
                post_article.append(article[j].a.get("href"))

        except Exception as e:
            print(Exception, ":", e)
            continue
    print(post_article)

    img_url_list = []
    for i in range(0, len(post_article)):
        print("new article....")
        m = get_url(post_article[i])
        soup_article = BeautifulSoup(m, "lxml")

        replace_pattern = r'<[img|IMG].*?/>'  # img标签的正则式
        img_url_pattern = r'.+?src="(\S+)"'  # img_url的正则式

        # 只在段落中查找图片
        need_replace_list = re.findall(replace_pattern, str(soup_article.find_all('p')))  # 找到所有的img标签
        for tag in need_replace_list:
            if re.findall(img_url_pattern, tag) != []:
                download_path = "E:\\workstation\\Github\\Blog_Pictures\\back_up\\"
                # download_name = re.findall(img_url_pattern, tag)[0].split('/')[-6]
                now = time.strftime("%Y-%m-%d-%H_%M_%S", time.localtime(time.time()))
                download_name = now + ".png"
                download(re.findall(img_url_pattern, tag)[0], download_path, download_name)
                print(re.findall(img_url_pattern, tag)[0])
                img_url_list.append(re.findall(img_url_pattern, tag)[0])  # 找到所有的img_url

if __name__ == "__main__":
    main()

原文地址:https://www.cnblogs.com/yunlambert/p/10201825.html

时间: 2024-10-02 20:01:59

用IDM下载博客图片的相关文章

Python 实用爬虫-04-使用 BeautifulSoup 去水印下载 CSDN 博客图片

Python 实用爬虫-04-使用 BeautifulSoup 去水印下载 CSDN 博客图片 其实没太大用,就是方便一些,因为现在各个平台之间的图片都不能共享,比如说在 CSDN 不能用简书的图片,在博客园不能用 CSDN 的图片. 当前想到的方案就是:先把 CSDN 上的图片都下载下来,再手动更新吧. 所以简单写了一个爬虫用来下载 CSDN 平台上的图片,用于在其他平台上更新图片时用 更多内容,请看代码注释 效果演示 Python 源代码 提示: 需要先下载 BeautifulSoup 哦,

C#控制台基础 正则表达式,regex,webclient下载博客园网页中的一张图片

1 网页图 这网页就一张图片,新手入门,找个简单一些的. 2 代码 1 正则表达式,regex,webclient下载博客园网页中的一张图片 2 3 4 using System; 5 using System.Collections.Generic; 6 using System.IO; 7 using System.Linq; 8 using System.Net; 9 using System.Text; 10 using System.Text.RegularExpressions; 1

登录百度下载博客

#coding:utf8 #Author = [email protected] #Create = 20120517 import cookielib, urllib2, urllib import os, sys,socket ,re #解析有多少页博客 pageStr = """allCount : '(\d+)',\s+pageSize : '(\d+)'""" pageObj = re .compile(pageStr, re .DOT

七牛云测试域名到期博客图片问题

从上周末开始到今天,终于把七牛云到期的测试域名所属空间的博客照片迁移到腾讯云.腾讯云有一定量免费空间供用户使用(发博文时免费额度:50 GB 标准存储容量,10 GB CDN 回源流量,100 万次读请求,100 万次写请求.费用实例),希望腾讯云短期内不要出对没钱用户的制裁条款.当然,出了我们也不用慌,再迁移便是,正所谓不折腾不舒服斯基.果然免费的都是要付出其它代价的- 备份七牛云图片到本地 方案一:如果此时你处在工作日时间,可以参考此链接教你如何在七牛云域名过期后备份内容完成转移,让七牛云技

异想家博客图片批量压缩程序

为了方便给自己的博客配图,用Golang写了一个脚本处理,现分享出来,有需要的朋友也可以参考修改使用. 压缩规则 1.图片都等比例压缩,不破坏长宽比. 2.如果是横屏图片,压缩到宽度为1280,高度适应. 3.如果是竖屏图片,压缩到高度为1000,宽度适应. 4.如果分辨率小于这个,不压缩. 5.支持png.jpg.jpeg. 使用方法 go build jfzBlogPicCompress.go 原图放在当前目录下的raw目录中,压缩后的图片生成在thumb目录下,运行生成的二进制文件即可,压

博客图片点击放大

1. 进入博客,点击管理——>设置——>申请支持JS代码权限: 2. 支持JS代码后,在页脚Html代码中粘贴如下代码: <div id="shadediv" style="display: none;position: fixed;z-index: 1000;top: 0;left: 0; width: 100%;height: 100%;background-color: rgba(255,255,255,.8);"> <img i

【转】hexo博客图片问题

1.首先确认_config.yml 中有 post_asset_folder:true. Hexo 提供了一种更方便管理 Asset 的设定:post_asset_folder 当您设置post_asset_folder为true参数后,在建立文件时,Hexo 会自动建立一个与文章同名的文件夹,您可以把与该文章相关的所有资源都放到那个文件夹,如此一来,您便可以更方便的使用资源. 2.在hexo的目录下执行npm install https://github.com/CodeFalling/hex

博客图片

将批量下载的博客导入到手机后,通过豆约翰博客阅读器APP(Android手机)进行浏览,白字黑底,保护眼睛,图文并茂。

首先下面演示的博文来自于以下地址:http://www.douban.com/note/423939291/ 需要先通过博客备份专家将导出的博文导入到手机(还不会用的朋友请先阅读http://www.douyuehan.com/space/douyuehan/Blog1/Post/259.aspx),然后通过豆约翰开发的手机博客阅读器APP进行阅读. 先看一下效果 大家可以看到,黑底白字,非常省眼,比用博客备份专家导出成PDF看要好得多,而且同样图文并茂. 接下来,豆约翰就向朋友们来讲解一下豆约