如何登陆豆瓣自动下图

2 篇文章 0 订阅

    最近在研究利用网站的API 自动保存网站图片的搜索结果,实验了百度,搜狗,bing 都比较的顺利,都能很好的完成我的想法。

    其实一直挺喜欢豆瓣的,最近发现豆瓣也有类似图片搜索的功能,而且里面的图片都是人工标记好的,质量比较高,所以想做一个想软件,功能是输入一个关键字,就自动下载这个关键字对应的图片。

    查找API 一切都很顺利,当我在和豆瓣的服务器端通信的时候,在浏览器里面能够很好的显示的结果,突然变成了error 403 ;

   我的调用代码是这样的

         WebClient wc = new WebClient();
  	string tempSearchString_coding = HttpUtility.UrlEncode(keywords);
 	string DouBanAPI = "http://www.douban.com/j/search_photo?q=" + tempSearchString_coding + "&limit=20&start=" + string.Format("{0}", 0);
 	byte[] aryByte = wc.DownloadData(DouBanAPI);


期望出现的结果是:

{"images":[{"src":"http:\/\/img5.douban.com\/view\/photo\/photo\/public\/p2165894096.jpg","author":"荷田田","url":"http:\/\/www.douban.com\/link2\/?url=http%3A%2F%2Fwww.douban.com%2Fphotos%2Fphoto%2F2165894096%2F&query=%E6%9D%8E%E5%86%B0%E5%86%B0&cat_id=1025&type=search","id":"2165894096","title":"李冰冰","width":449,"height":600},{"src":"http:\/\/img3.douban.com\/view\/photo\/photo\/public\/p2165894100.jpg","author":"荷田田","url":"http:\/\/www.douban.com\/link2\/?url=http%3A%2F%2Fwww.douban.com%2Fphotos%2Fphoto%2F2165894100%2F&query=%E6%9D%8E%E5%86%B0%E5%86%B0&cat_id=1025&type=search","id":"2165894100","title":"李冰冰","width":476,"height":600},{"src":"http:\/\/img3.douban.com\/view\/photo\/thumb\/public\/p2165894103.jpg","author":"荷田田","url":"http:\/\/www.douban.com\/link2\/?url=http%3A%2F%2Fwww.douban.com%2Fphotos%2Fphoto%2F2165894103%2F&query=%E6%9D%8E%E5%86%B0%E5%86%B0&cat_id=1025&type=search","id":"2165894103","title":"李冰冰","width":170,"height":114},{"src":"http:\/\/img5.douban.com\/view\/photo\/photo\/public\/p2165894106.jpg","author":"荷田田","url":"http:\/\/www.douban.com\/link2\/?url=http%3A%2F%2Fwww.douban.com%2Fphotos%2Fphoto%2F2165894106%2F&query=%E6%9D%8E%E5%86%B0%E5%86%B0&cat_id=1025&type=search","id":"2165894106","title":"李冰冰","width":478,"height":600},
   但是一个无情403错误打击了我。但是一切的操作在浏览器端还是好好的。

   通过查阅资料,我明白了403 错误指的是,没有权限的错误,不是我代码的的问题。要怎么样获得权限呢,网上有很多种说法,什么设置cookie啊什么的,我都不懂。

   我就用了一个最笨的办法解决了这个问题,通过设置WebClient 的CredentialCache解决了这个问题。

   首先新建一个 CredentialCache;

    CredentialCache myCache = new CredentialCache();

   然后加入豆瓣的账号密码:

    myCache.Add(new Uri("http://www.douban.com/"), "Basic", new NetworkCredential(UserName, SecurelyStoredPassword));

    wc.Credentials = myCache; // 添加授权证书
        设置使用 chrome 调用
     wc.Headers.Add("User-Agent", "chrome ");

    经过这一番设置之后,就没有了403 错误,都可以正常的调用了。

   今天又get 了一项新技能真开心!!

  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值