★关于获取下载网页的图片(这个有点难度)

bzhi268 2010-01-17 05:01:26
要获取下载例如这个网页里的图片
http://www.188pay.com/product_view.asp?id=7752

这个里面的图片地址是http://pic.188pay.com/showpic.asp?pid=39235p0

问题在于:这个图片地址在www.188pay.com这个域下加载的,就是正确的图片,我需要获取这个正确的图片,并下载。
如果单独打开这个图片地址,就会变成另一张图片,这一张不是我需要的

问各位大虾,怎么实现
...全文
360 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
mendel 2010-01-23
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 bzhi268 的回复:]
引用 6 楼 mendel 的回复:
C# code
WebClient client=new WebClient();
                client.BaseAddress="http://"+strSiteUrl;string[] arrNames= url.Split('/');string strFileName= arrNames[arrNames.Length-1];
                client.DownloadFile(url, txtPath.Text+"\\"+ strFileName);

试一下

txtPath.Text是什么???是域名??
[/Quote]

txtPath是要保存在本地的路径
hujing19880618 2010-01-18
  • 打赏
  • 举报
回复
纯属路过打酱油,不过楼主的帖子真的很好,csdn里面就是需要这样的贴子才能提高大家的水平
  • 打赏
  • 举报
回复
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://pic.188pay.com/showpic.asp?pid=39235p0 ");//moviePath为图片的真实URL
request.Method = "GET";
request.Referer="http://www.188pay.com/product_view.asp?id=7752";//伪造网址
request.UserAgent ="Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR .0.04506; InfoPath.2)";//指定请求的User Agent属性
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
Stream responseStream = response.GetResponseStream();
System.Drawing.Image img = System.Drawing.Image.FromStream(responseStream);
img.Save("C:\\1.bmp");//保存到C盘
responseStream.Close();
response.Close();
wuyq11 2010-01-17
  • 打赏
  • 举报
回复
System.Net.WebClient wc = new System.Net.WebClient();
wc.DownloadString("",@"C:\a.jpg", );

System.Net.HttpWebRequest request = (System.Net.HttpWebRequest)System.Net.WebRequest.Create("");
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)";
System.Net.WebResponse response = request.GetResponse();
System.IO.Stream resStream = response.GetResponseStream();
System.Drawing.Image img = System.Drawing.Image.FromStream(response.GetResponseStream());
wzp144650 2010-01-17
  • 打赏
  • 举报
回复
webclient不可以DOWNLOAD下来吗
ckl881003 2010-01-17
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 bzhi268 的回复:]
引用 6 楼 mendel 的回复:
C# code
WebClient client=new WebClient();
                client.BaseAddress="http://"+strSiteUrl;string[] arrNames= url.Split('/');string strFileName= arrNames[arrNames.Length-1];
                client.DownloadFile(url, txtPath.Text+"\\"+ strFileName);

试一下

txtPath.Text是什么???是域名??
[/Quote]
textBox 的内容
mngzilin 2010-01-17
  • 打赏
  • 举报
回复
引入命名空间
using System.Net;
using System.IO;
mngzilin 2010-01-17
  • 打赏
  • 举报
回复
100分哦

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://pic.188pay.com/showpic.asp?pid=39235p0 ");//moviePath为图片的真实URL  
request.Method = "GET";
request.Referer="http://www.188pay.com/product_view.asp?id=7752";//伪造网址
request.UserAgent ="Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR .0.04506; InfoPath.2)";//指定请求的User Agent属性
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
Stream responseStream = response.GetResponseStream();
System.Drawing.Image img = System.Drawing.Image.FromStream(responseStream);
img.Save("C:\\1.bmp");//保存到C盘
responseStream.Close();
response.Close();
bzhi268 2010-01-17
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 mendel 的回复:]
C# code
WebClient client=new WebClient();
client.BaseAddress="http://"+strSiteUrl;string[] arrNames= url.Split('/');string strFileName= arrNames[arrNames.Length-1];
client.DownloadFile(url, txtPath.Text+"\\"+ strFileName);

试一下
[/Quote]
txtPath.Text是什么???是域名??
ckl881003 2010-01-17
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 bzhi268 的回复:]
引用 4 楼 ckl881003 的回复:
引用 3 楼 vrhero 的回复:
引用 1 楼 ckl881003 的回复:
通常的办法是判断HTTP_REFERE,如果是在这个域的那么就显示,不是的话按照你的要求处理

注意,这个方法只能防止在游览器中的盗链,如果要放非法下载的话那是永远也防不了的。
如果对方要抓你的图片让后放到自己的网站上,那你防了也没用。

你理解错了...楼主要偷不是防...

我从他发的另外一个贴过来的。。那个贴说的是防、、、


我那个贴没说要防,我是要获取
[/Quote]
要获取的话简单,可以使用WebClient 去抓,记得设置HTTP_REFERER属性,如果不行那就先访问页面,然后设置HTTP_REFERER属性再抓图就可以了
bzhi268 2010-01-17
  • 打赏
  • 举报
回复
::附加:::::::::::::::::

这个图片地址在www.188pay.com这个域下加载的,请求后解释后的网页源代码,图片地址还是http://pic.188pay.com/showpic.asp?pid=39235p0 ,不是最终的带有图片格式的图片。。
mendel 2010-01-17
  • 打赏
  • 举报
回复

WebClient client = new WebClient();
client.BaseAddress = "http://"+strSiteUrl;
string[] arrNames = url.Split('/');
string strFileName = arrNames[arrNames.Length - 1];
client.DownloadFile(url, txtPath.Text + "\\" + strFileName);


试一下
bzhi268 2010-01-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ckl881003 的回复:]
引用 3 楼 vrhero 的回复:
引用 1 楼 ckl881003 的回复:
通常的办法是判断HTTP_REFERE,如果是在这个域的那么就显示,不是的话按照你的要求处理

注意,这个方法只能防止在游览器中的盗链,如果要放非法下载的话那是永远也防不了的。
如果对方要抓你的图片让后放到自己的网站上,那你防了也没用。

你理解错了...楼主要偷不是防...

我从他发的另外一个贴过来的。。那个贴说的是防、、、
[/Quote]

我那个贴没说要防,我是要获取
ckl881003 2010-01-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 vrhero 的回复:]
引用 1 楼 ckl881003 的回复:
通常的办法是判断HTTP_REFERE,如果是在这个域的那么就显示,不是的话按照你的要求处理

注意,这个方法只能防止在游览器中的盗链,如果要放非法下载的话那是永远也防不了的。
如果对方要抓你的图片让后放到自己的网站上,那你防了也没用。

你理解错了...楼主要偷不是防...
[/Quote]
我从他发的另外一个贴过来的。。那个贴说的是防、、、
vrhero 2010-01-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ckl881003 的回复:]
通常的办法是判断HTTP_REFERE,如果是在这个域的那么就显示,不是的话按照你的要求处理

注意,这个方法只能防止在游览器中的盗链,如果要放非法下载的话那是永远也防不了的。
如果对方要抓你的图片让后放到自己的网站上,那你防了也没用。
[/Quote]
你理解错了...楼主要偷不是防...
vrhero 2010-01-17
  • 打赏
  • 举报
回复
防盗链资源...你可以模拟登录,例如用WebRequest类去请求图片所在页面再下载,或者用WebBrowser控件打开图片所在页面再下载...
ckl881003 2010-01-17
  • 打赏
  • 举报
回复
通常的办法是判断HTTP_REFERE,如果是在这个域的那么就显示,不是的话按照你的要求处理

注意,这个方法只能防止在游览器中的盗链,如果要放非法下载的话那是永远也防不了的。
如果对方要抓你的图片让后放到自己的网站上,那你防了也没用。

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧