概率论专题和AC自动机专题略难,今天恰逢领钥匙,明天搬寝室,闲来捣鼓捣鼓些其他事情。

妹子开网店,需要下载其他淘宝卖家的图片,如果在 Linux 系统肯定生龙活虎,奈何现在只有 Windows 。

网上找不到满意的工具,就琢磨着自己写一个。

我的思路是,手动下载网页的源代码,然后用C++程序提取出源代码中的图片链接,导出一个 list.txt 文件,接着用 wget 批量下载这些图片,存放到指定目录下。先贴上文件列表:

首先我先写了个 list.cpp 将网页源代码转换成图片链接列表 list.txt 。

/*
 * Author: Haipz
 * School: HDU
 * File Name: list.cpp
 */
#include <cstdio>
#include <cmath>
#include <ctime>
#include <cctype>
#include <cfloat>
#include <cstdlib>
#include <cstring>
#include <climits>
#include <iostream>
#include <vector>
#include <string>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <fstream>
#include <windows.h>
#include <algorithm>
using namespace std;

const int N = 3;
string s[3] = {".jpg", ".png", ".gif"};

int main() {
    ifstream fsin("source.txt");
    ofstream fsout("list.txt");
    string str;
    while (fsin >> str) {
        for (int i = 0; i < N; ++i) {
        unsigned int start;
            start = 0;
            while (true) {
                unsigned int poshttp = str.find("http", start);
                unsigned int posjpg = str.find(s[i], start);
                while (posjpg != str.npos && posjpg < poshttp) posjpg = str.find(".jpg", posjpg + 1);
                if (poshttp == str.npos || posjpg == str.npos || poshttp >= posjpg) break;
                else {
                    fsout << str.substr(poshttp, posjpg - poshttp + s[i].length()) << endl;
                    start = posjpg + 1;
                }
            }
        }
    }
    fsin.close(), fsout.close();
    return 0;
}

然后下载 wget.exe 用来下载链接,最后写了个 download.bat 完成这一切操作。

@echo off
echo 网页图片批量下载程序
echo 正在抓取网页源代码图片链接...
list.exe
echo 所有图片链接抓取完毕!
echo 正在批量下载图片...
echo 请勿关闭本窗口,下载完成后程序会提示!
wget -nc -q -P .\pics -i list.txt
echo 下载完成,图片在pics目录下。
pause

如果还是不懂得如何使用,请看 README.txt ,鉴于我不懂如何直接下载网页源代码,就只能做到这里了。

右键下面下载链接选择链接另存为下载整个压缩包:

http://haipz.qiniudn.com/20140702%E7%BD%91%E9%A1%B5%E5%9B%BE%E7%89%87.zip

转载保留版权:http://haipz.com/blog/i/4836 - 海胖博客