php - PHP使用页面上块ID找到的链接保存文件
问题描述
在页面https://data.mos.ru/opendata/61241/带有参数“export/get?id=”的第一个 url 包含下载开放数据 csv 文件的最后一个实际链接 //op.mos.ru/ EHDWSREST/catalog/export/get?id=989116。
问题是每次更新后url的数字结尾都不一样,事先不知道。
我有一个有效的脚本,它允许我将文件保存在一个已知的文件 url 中(但它只保存文件的旧版本,而不是当前版本):
<?php
function downloadJs($file_url, $save_to)
{
$content = file_get_contents($file_url);
file_put_contents($save_to, $content);
}
downloadJs('https://op.mos.ru/EHDWSREST/catalog/export/get?id=989116', realpath("./img/feeds") . '/61241.zip');
$zip = new ZipArchive;$zip->open('./img/feeds/61241.zip');$zip->extractTo('./img/feeds/61241');$zip->close();
$directory = './img/feeds/61241/'; if ($handle = opendir($directory)) { while (false !== ($fileName = readdir($handle))) { $dd = explode($fileName); $newfile = '61241.csv'; rename($directory . $fileName, $directory.$newfile); } closedir($handle); }
echo "Ok!";
?>
我需要更改此 PHP 脚本,以便在页面https://data.mos.ru/opendata/61241/上首先通过参数“export/get?id=”确定下载文件的第一个链接,其中链接位于。
解决方案
我不确定你是否明白你的意思。我们有:
<a target="_blank" href="//op.mos.ru/EHDWSREST/catalog/export/get?id=989116" onclick="yaCounter29850344.reachGoal('download_csv')...
也许我们会使用一些正则表达式来获取该 ID。假设您已经有了它的 html file_get_contents
:
preg_match('#get\?id=(\d+)".* onclick="[^"]+csv[^"]+"#', $html, $matches);
echo $matches[1]; // 989116
推荐阅读
- c# - 正确读取ms access数据库中的列数据类型
- sql - Oracle LEAD - 返回下一个匹配的列值
- symfony - Symfony 2.8 > 3.4.22 - 您的需求无法解析为一组可安装的软件包
- sql-server - 使用 MIN() 而不是 top 1 进行 SQL 查询
- google-maps - 当我包含谷歌地图时,我的构建失败
- python - 如何将直方图的y轴值乘以Python中的固定数字
- wordpress - 登录页面上的 Wordpress 网站菜单可见性
- php - 安装失败:目标文件夹已存在
- python - 将用户配置文件添加到 request.user
- mysql - 如何在我的查询中添加一个显示少于当前日期的数据的新列?