zoukankan      html  css  js  c++  java
  • 网站采集

    一、采集器的制作的基本知识点。

    1、懂一些简单的正则表达式的知识,知道些基本知识对大家在采集软件设置规则的时候是有帮助,正则表达式的一些基础知识是很容易掌握的,而绝大多数采集用的是最基本的正则表达式的内容。
    如:你起码要知道"." “\n” “\s” "\d" "*" "+" "?" "{3,5}" "[3-6]"。 了解这些简单正则式的基本含义,这里不作详细详解,大家可以从网上查到资料。我个人觉得正则还是比较容易学习,但是不经常使用的话,忘记的比较快。经常会出现边在网上查正则,边书写采集规则的情况。



    2、会使用一些程序命令将网页的内容正确抓取下来。

    -------使用webclient来抓取网页内容
    String PageUrl = @"http://www.79zw.com/files/article/info/65/65670.htm";
    WebClient wc = new WebClient();
    ///方法一:
    Byte[] pageData = wc.DownloadData(PageUrl);
    ContentHtml.Text = Encoding.Default.GetString(pageData);


    /// 方法二:
    /// ***************代码开始**********
    Stream resStream = wc.OpenRead(PageUrl);
    StreamReader sr = new StreamReader(resStream,System.Text.Encoding.Default);
    ContentHtml.Text = sr.ReadToEnd();
    resStream.Close();
    /// **************代码结束********
    ///
    wc.Dispose();  

    -------使用webrequest来抓取网页内容

    PageUrl = @"http://www.79zw.com/files/article/info/65/65670.htm";
    WebRequest   request = WebRequest.Create(PageUrl);
    WebResponse response = request.GetResponse();
    Stream resStream = response.GetResponseStream();
    StreamReader sr = new StreamReader(resStream, System.Text.Encoding.Default);
    String content = sr.ReadToEnd();
    resStream.Close();
    sr.Close();

    ------使用xmlhttp来抓取网页内容
    XMLHTTP xhttp = new XMLHTTP();
    string url=@"http://www.79zw.com/files/article/info/65/65670.htm";
    xhttp.open("post", url, false, null, null);
    xhttp.send("");
    Byte[] bb = (Byte[])xhttp.responseBody;
    xhttp.abort();


    二、对小说站进行采集的思路。

    就看一下如何采集世纪,世纪的站长不在这里吧?

    只要知道一个书本的ID号就可以开始啦。。。。。

    书籍简介页面:http://www.79zw.com/files/article/info/59/59295.htm


    <font size="4" color="red">佛本是道<img
           <td width="25%">类    别:仙侠奇侠</td>
           <td width="25%">作    者:梦入神机</td>
           <td width="25%">管 理 员:</td>
           <td width="25%">全文长度:2008072字</td>
           <td>最后更新:2007-03-04</td>
           <td>文章状态:完成</td>
           <td>授权级别:暂未授权</td>
           <td>首发状态:他站首发</td>
           <td>总点击数:13197071</td>
           <td>本月点击:693848</td>
           <td>本周点击:270326</td>
           <td>本日点击:20941</td>




    书籍目录页面:http://www.79zw.com/files/article/html/59/59295/index.html


    <td colspan="3" class="vcss">
           正文 </td>
       </tr>
           <tr>
    <td class="ccss">
           <a href="1639383.html">前 言</a>
    </td>
    <td class="ccss">
           <a href="1639384.html">第一章 原 由 第一节 奥林匹亚风云</a>
           </td>
    <td class="ccss">
           <a href="1639385.html">第二节神符巨人</a>
           </td>
       </tr>
      
    书籍章节内容页面:http://read.2100book.com/files/article/html/45/45647/2144288.html




    通过前面的采集代码,一层一层的从网页上抓取数据,然后根据你设置的正则表达式标签,把所需要的内容取出来,判断是文字内容,还是图片内容,然后分别写入后端数据库。

    如果是批量采集就按照设置的ID号不断循环,直到全部采集完。如果你设置从1-50000号开始采集,就基本可以目标书站的书全部采集完。

    就算目标站中有空号,比如说:4678这个号没有书,这样大抓取这个号的时候会出现错误,通过正则采集判断是空号就放弃采集这个ID号就成啦。

    手上的蓝心采集已经实现了三种批采模式






    三、防采集的基本思路。

    目前而言,防采集还没有一个还没有一个完全彻底的解决方案
    一,增加采集的规则难度,经常变换规则,这种方法对于防止采集是比较容易使用的方法,而且效果比较好,容易。
    大家请看两个地址:
    1、 http://read.2100book.com/files/article/html/45/45647/index.html
    2、 http://www.79zw.com/files/article/html/39/39621/index.html


    抽出我们所需要的资料
    世纪:<a href="1639384.html">第一章 原 由 第一节 奥林匹亚风云</a>
       <a href="1639385.html">第二节神符巨人</a>
          <a href="1639386.html">第三节异次元空间门</a>
       <a href="1639387.html">第四节 龙之墓地</a>
    世纪的章节规则:<a href=”\d+.html”>[^<|>]*</a>

    79:<a   href=696794.html title="第一章原由第一节奥林匹亚风云">第一章原由第一节奥林匹亚风云</a>
    <a title=" href=8384.html 生成时间:2007-3-9 12:33:57" href=696795.html>第二节神符巨人</a>
    <a   href="696796.html">第三节异次元空间门</a>
    79的章节规则就不好写啦,有3个,难度比世纪就大多啦。
    如果把内容页和图片页的规则也设置很多个的话,这样采集的难度就更大了,非牛人不能采集。



    二、可以设置IIS和apache对图片的采集进行限制。
    IIS通过重写一些附加模块可以实现,但是直接在IIS里通过设置来实现方法比较困难,需要附加模块来做这个事。
    Apache可以实现图片简单防采和防盗链,设置比较简单,而且很实用。
    SetEnvIfNoCase Referer "^http://www.88zw.com" local_ref=1
    SetEnvIfNoCase Referer "^http://88zw.com" local_ref=1
    SetEnvIfNoCase Referer "^$" local_ref=1
    SetEnvIf Request_URI /images/logo(.)+ local_ref=1

    <FilesMatch "\.(gif|jpg|bmp|jpeg|png)">
    Order Allow,Deny
    Allow from env=local_ref
    Allow from 127.0.0.1
    </FilesMatch>
  • 相关阅读:
    [转] Chrome
    阿里安全潘多拉实验室首先完美越狱苹果iOS 11.2
    【阿里聚安全·安全周刊】阿里双11技术十二讲直播预约|AWS S3配置错误曝光NSA陆军机密文件
    卡巴斯基发布安全公告:2018年威胁预测
    【阿里聚安全·安全周刊】双十一背后的“霸下-七层流量清洗”系统| 大疆 VS “白帽子”,到底谁威胁了谁?
    分享一个白帽交流灵感的社区——先知技术安全社区
    WiFi网络WPA2 KRACK漏洞分析报告
    #云栖大会# 移动安全专场——APP渠道推广作弊攻防那些事儿(演讲速记)
    #云栖大会# 移动安全专场——APP加固新方向(演讲速记)
    Java安全编码:糟糕的在线建议和令人困惑的APIs
  • 原文地址:https://www.cnblogs.com/jcomet/p/1242778.html
Copyright © 2011-2022 走看看