我正在编写 ac# 程序以从 HTML 文档中提取 .jpg 图像,但目标图像的名称经常更改。我是一个非常新的程序员,我不知道如何达到预期的结果。
我正在使用 webclient 下载 html。
所以我想我在这里有几个问题要问。
- 我如何使用通配符来假设图像名称的名称和长度?
- 以及如何从文档中的目标图像修剪 HTML 容器?
您应该抓取网页以获取图像 url,然后下载图像。对于抓取检查:
https://github.com/jamietre/CsQuery
https://code.google.com/p/fizzler/
https://code.google.com/p/sharp-query/
是否有可以在 C# 中使用的类似 jQuery 的 CSS/HTML 选择器?
这些将允许您根据属性名称、文档中的位置或这些标识符的组合选择您关心的元素,然后获取src
属性。
编辑:@Jacob Proffitt 很酷的东西,如果你对 XPath 没问题的话
简而言之,使用您描述的方法:您不能。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 );
}
}
}