欢迎光临散文网 会员登陆 & 注册

某科学的爬虫原理

2018-12-14 11:44 作者:小熊FFD  | 我要投稿

为了防止B站不给过这篇文章,大家自己猜测爬的是哪个图片站吧

正文

网上关于此站的教程多是python的,我讲一下C#实现过程中会遇到哪些技术问题

咱们一步一步来,写爬虫嘛,我认为第一步应该做到:知己知彼百战不殆

先来分析,找规律

这次开刀的网站,很有规律性

www.pixiv.net/search.php?s_mode=s_tag&word=miku 【关键字模式】

www.pixiv.net/search.php?s_mode=s_tag_full&word=miku 【标签模式】

差别只是mode不一样

再来看一下页数

www.pixiv.net/search.php?word=miku&order=date_d&p=2 【关键字模式】

www.pixiv.net/search.php?word=miku&s_mode=s_tag_full&order=date_d&p=2  【标签模式】

方法此站,需要搞个 User-Agent

感谢 cucmberium さん

[http://cucmberium.hatenablog.com/entry/2016/06/20/214109]

该博客的方法亲测有效

下载图片代码:

               string url=“网址”;
               string time=DateTime.Now.ToString("yyyyMMddHHm");
        string downloadpath = Environment.CurrentDirectory+@"\"+"Cover"+@"\"+time+url.Substring(url.Length-4,4);
        WebClient mywebclient = new WebClient();
         mywebclient.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.84 Safari/537.36");
         mywebclient.Headers.Add("Referer", url);
         mywebclient.DownloadFile(url, downloadpath);

爬虫核心代码

 string remoteUri =网址;
HtmlDocument  doc = new HtmlDocument();
using (WebClient myWebClient = new WebClient())
{
  myWebClient.Headers.Add(HttpRequestHeader.UserAgent, "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.84 Safari/537.36");
  doc.Load(myWebClient.OpenRead(remoteUri));
  }

上面是最难鼓捣的东西,下面还有个东西需要考虑

https://i.pximg.net/img-original/img/2018/12/13/19/56/00/72095984_p0.png 【原图】

https://i.pximg.net/c/240x240/img-master/img/2018/12/13/19/56/00/72095984_p0_master1200.jpg 【缩略图】

https://i.pximg.net/img-master/img/2018/12/13/14/47/52/72092738_p0_master1200.jpg 【原图】

https://i.pximg.net/c/240x240/img-master/img/2018/12/13/14/47/52/72092738_p0_master1200.jpg 【缩略图】

唉~,我目前见到这两种。

f*ck,本来想根据缩略图链接,得到原图链接的

结果,原图有两种(可能以上)的形式

这就需要写个判断了,判断是否能打开网址

//C# 判断网站是否能访问或者断链
         public bool CheckUrlVisit(string url) 
        {       
            try
            {
     
            WebClient mywebclient = new WebClient();
           mywebclient.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.84 Safari/537.36");
             mywebclient.Headers.Add("Referer", url);
          string msg=   mywebclient.DownloadString(url); //获取html源码
                      
                if (msg!="")
                {
                    return true;
                }
            }
            catch (WebException webex)
            {
                return false;
            }
    
            return false;
        
        }

唉~,经过这么一顿分析,写出爬虫

然鹅,理论上都是放屁,下载速度跟蜗牛一样(貌似得鼓捣多线程的)

唉~


某科学的爬虫原理的评论 (共 条)

分享到微博请遵守国家法律