如何从循环运行的网站下载图像
本文关键字:网站 下载 图像 运行 循环 | 更新日期: 2023-09-27 18:31:16
这是网站:
http://www.sat24.com/foreloop.aspx?type=1&continent=europa#那里的图像在循环移动。
这是一个图像的网址示例:
http://www.niederschlagsradar.de/images.aspx?jaar=-6&type=europa.precip&datum=201309171200&cultuur=en-GB&continent=europa中间有时间和日期:201309171200我需要以某种方式从每个 url 自动解析时间和日期。
例如,要构建一些字符串:
"www.niederschlagsradar.de/images.aspx?jaar=-6&type=europa.precip&datum=" + parsedDateAndTime + &cultuur=en-GB&continent=europa到目前为止,我尝试的是:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Net;
namespace DownloadImages
{
public partial class Form1 : Form
{
int counter;
public Form1()
{
InitializeComponent();
counter = 0;
string localFilename = @"d:'localpath'";
while (true)
{
using (WebClient client = new WebClient())
{
client.DownloadFile("http://www.sat24.com/foreloop.aspx?type=1&continent=europa#", localFilename + counter.ToString("D6") + ".jpg");
counter++;
}
}
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
}
但是我没有解析任何网址,我只是使用主循环网址,我看到它每次下载 46kb 文件,但我无法打开它们,我收到一个错误,油漆无法打开它...等
我这样做的方式是错误的。
如何从循环从站点下载每个图像?
如何从每个图像中解析日期和时间,使其不会一直下载相同的图像?我需要以某种方式获取每个图像网址的日期和领带,并将其用作标志或其他东西,这样它就不会下载相同的文件。
编辑**
日期和时间正在更改每个图像的每个网址,例如:
http://www.niederschlagsradar.de/images.aspx?jaar=-6&type=europa.precip&datum=201309161500&cultuur=en-GB&continent=europa
下一个图片网址将是:http://www.niederschlagsradar.de/images.aspx?jaar=-6&type=europa.precip&datum=201309171500&cultuur=en-GB&continent=europa
日期和时间会根据循环而变化,就像在网站中一样,如果您右键单击图像并进行:复制图像URL,您可以看到时间和日期是每个图像的变化。
我假设你的意思是你得到一个表单的URL:
"http://www.niederschlagsradar.de/images.aspx?
jaar=-6&type=europa.precip&datum=201309171500&cultuur=en-GB&continent=europa"
并且您希望提取该日期和时间位,以便将其与已有的图像列表进行比较。所以在上面,你想得到201309171500
.
您可以使用正则表达式执行此操作:
string theUrl = @"http://www.niederschlahttp://www.niederschlagsradar.de/images.aspx?
jaar=-6&type=europa.precip&datum=201309171500&cultuur=en-GB&continent=europa";
Match m = Regex.Match(theUrl, @"&datum=('d{12})&");
if (m.Success)
{
string theDate = m.Groups[1].Value;
Console.WriteLine(theDate);
}
附加信息
如果你从原始URL查看HTML,http://www.sat24.com/foreloop.aspx?type=1&continent=europa#
,你会看到一些看起来像这样的Javascript:
var images = new Array(
"http://www.niederschlagsradar.de/images.aspx?jaar=-6&type=europa.precip&datum=201309150000&cultuur=en-GB&continent=europa",
"http://www.niederschlagsradar.de/images.aspx?
// many more image URLs here
);
您需要下载 HTML 页面,在 HTML 中找到该数组,并解析出各个图像的 URL。然后,您可以依次下载每个图像。