使用PHP批量下载Mediawiki站点的图片 | Mayx的博客
Author: mayx
Description: 又是万能的PHP!不过还是Mediawiki API的功劳
Date: 2019-05-27T00:00:00+08:00

27 May 2019 - 字数统计：828 - 阅读大约需要3分钟 - Hits: Loading...

# 使用PHP批量下载Mediawiki站点的图片

by mayx

这是一篇创建于 天前的文章，其中的信息可能已经有所发展或是发生改变。

AI摘要

这篇文章讲述了作者使用PHP处理 Mediawiki 站点图片下载问题的方法。通过解析页面内容，利用 `action=parse` 的 API 接口获取图片标签中的 URL，作者创建了一个循环来遍历图片数组，使用正则表达式解析出图片地址，并将它们写入到 "List.txt" 文件中。作为备份策略，作者还提到可以从 `action=query&list=allimages` 接口获取整个Wiki站的所有图片。

- 解决方案
- Code
- P.S.

又是万能的PHP!不过还是Mediawiki API的功劳

最近我为了备份一下某个Wiki站（Ta们把R18名字空间的东西删的一干二净 后来才知道原来转移到了一个Wiki上，真的是好久没关注了 ），然后学习了一下Mediawiki API来下载整个Wiki（Ta们把站点导出也给弄没了QAQ）

文本很好下载，但是Mediawiki的图片我不知道存在哪里，API文档翻烂了也没找到把图片解析成地址的API，那怎么办呢？

#
解决方案

“解析”？emmmm……parse？不错，正好有这么一个action，好的，那就这样搞吧！

#
Code

    <?php
    set_time_limit(0);
    ignore_user_abort();
    $list = array("图片数组");

        $arrlength=count($list);
    for($x=0;$x<$arrlength;$x++) {
        $tmp = json_decode(file_get_contents("https://MediaWiki的地址/api.php?action=parse&text=[[File:".$list[$x]."]]&contentmodel=wikitext&formatversion=2&format=json"),true);
        $preg='/src="(.*?)"/is';
        preg_match($preg,$tmp[parse][text],$match);
        $tt=$tt."
        ".$match[1];
    }
    $markout = fopen("List.txt", "w") or die("Unable to open file!");
    fwrite($markout, $tt);
    fclose($markout);
    die("Finish");
    ?>

#
P.S.

如果需要获取该Wiki的所有图片，可以从`api.php?action=query&list=allimages`这里获取。

tags: PHP - Mediawiki - 图片 查看原始文件

#### 推荐文章

Loading...

上一篇：如何不使用百度App打开搜索结果？
下一篇：高考即将来临
想问这篇文章
召唤伊斯特瓦尔