如何从带有通配符的html文档下载图像

时间:2013-08-28 20:08:07

标签: c# html

我正在编写一个c#程序来从HTML文档中提取.jpg图像,但目标图像的名称经常变化。我是一个非常新的程序员,我无法弄清楚如何达到预期的结果。

我正在使用webclient下载html。

所以我想我在这里要问几个问题。

  1. 如何使用通配符来假设图像名称的名称和长度?
  2. 如何修剪HTML容器远离文档中的目标图像?

2 个答案:

答案 0 :(得分:2)

简而言之,使用您所描述的方法:您不能。 HTTP要求通过其名称访问每个单独请求的资源,您不能要求HTTP服务器返回一组名称与模式匹配的资源(无论是通配符表达式还是正则表达式)。

但是,如果您知道特定范围之间存在名称并遵循模式,那么您可以创建一系列请求并相应地处理404错误,如下所示:

String resource = "/images/aestheticallyAttractiveHumanFemalesWithoutClothing/img_{0}.jpg";
for(int i=1;i<100;i++) {

    String thisResource = String.Format(CultureInfo.InvariantCulture, resource, i);

    HttpWebRequest request = new (HttpWebRequest)WebRequest.Create(thisResource);
    HttpWebResponse response = request.GetResponse();
    if( response.Status == HttpStatus.OK ) {
        using(Stream rs = response.GetResponseStream())
        using(FileStream fs = new FileStream(Path.Combine("C:\\Temp\\IRSTaxReturns2011\\" + i.ToString() + ".jpg") {
            rs.CopyTo( fs );
        }
    }
}

答案 1 :(得分:2)

您应该抓取网页以获取图片网址,然后下载图片。对于刮擦检查:

https://github.com/jamietre/CsQuery

https://code.google.com/p/fizzler/

https://code.google.com/p/sharp-query/

Is there a jQuery-like CSS/HTML selector that can be used in C#?

这些将允许您根据属性名称,文档中的位置或这些标识符的组合选择您关注的元素,然后获取src属性。

  1. 下载网页html
  2. 解析html以获取图片的网址
  3. 下载图片
  4. 编辑:@Jacob Proffitt 如果您对XPath的确定

    ,那就很酷了

    http://htmlagilitypack.codeplex.com/

    How to use HTML Agility pack