如何从循环运行的网站下载图像

本文关键字:网站 下载 图像 运行 循环 | 更新日期: 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。然后,您可以依次下载每个图像。