-5

这是网站:

http://www.sat24.com/foreloop.aspx?type=1&continent=europa# 那里的图像循环移动。

这是一张图片的 url 示例:

http://www.niederschlagsradar.de/images.aspx?jaar=-6&type=europa.precip&datum=201309171200&cultuur=en-GB&continent=europa 中间有时间和日期:201309171200 我需要以某种方式自动解析时间和日期从每个网址。

例如,要构建一些字符串:

"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)
        {

        }
    }
}

但我没有解析任何 url,但我只是使用主循环 url,我看到它每次都在下载 46kb 文件,但我无法打开它们,我得到一个错误,油漆无法打开它......等等

我这样做的方式是错误的。

如何从循环中下载站点中的每个图像?

我如何从每个图像中解析日期和时间,这样它就不会一直下​​载相同的图像?我需要以某种方式获取每个图像网址的日期和时间,并将其用作标志或其他东西,这样它就不会下载相同的文件。

编辑**

每个图像的每个 url 的日期和时间都在变化,例如:

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,您可以看到时间和日期每张图像都在更改。

4

1 回答 1

1

我假设您的意思是您获得了以下形式的 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。然后您可以依次下载每个图像。

于 2013-09-14T22:35:05.927 回答