我正在编写一个c#程序来从HTML文档中提取.jpg图像,但目标图像的名称经常变化。我是一个非常新的程序员,我无法弄清楚如何达到预期的结果。
我正在使用webclient下载html。
所以我想我在这里要问几个问题。
答案 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
属性。
编辑:@Jacob Proffitt 如果您对XPath的确定
,那就很酷了