http://www.cnblogs.com/wxxian001/archive/2011/09/07/2169519.html

刚刚完成一个简单的网络爬虫,因为在做的时候在网上像无头苍蝇一样找资料。发现了很多的资料,不过真正能达到我需要,有用的资料--代码很难找。所以我想发这篇文章让一些要做这个功能的朋友少走一些弯路。

首先是抓取Html源码,并选择<ul class="post_list">  </ul>节点的href:要添加 using System.IO;using System.Net;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
private void Search(string url)
{
    string rl;
    WebRequest Request = WebRequest.Create(url.Trim());
 
    WebResponse Response = Request.GetResponse();
 
    Stream resStream = Response.GetResponseStream();
 
    StreamReader sr = new StreamReader(resStream, Encoding.Default);
    StringBuilder sb = new StringBuilder();
    while ((rl = sr.ReadLine()) != null)
    {
        sb.Append(rl);
    }
 
 
    string str = sb.ToString().ToLower();
 
    string str_get = mid(str, "<ul class=\"post_list\">""</ul>");
 
 
    int start = 0;
    while (true)
    {
        if (str_get == null)
            break;
        string strResult = mid(str_get, "href=\"""\""out start);
        if (strResult == null)
            break;
        else
        {
            lab[url] += strResult;
            str_get = str_get.Substring(start);
        }
    }
}
 
 
 
 
private string mid(string istr, string startString, string endString)
{
    int iBodyStart = istr.IndexOf(startString, 0);               //开始位置
    if (iBodyStart == -1)
        return null;
    iBodyStart += startString.Length;                           //第一次字符位置起的长度
    int iBodyEnd = istr.IndexOf(endString, iBodyStart);         //第二次字符在第一次字符位置起的首次位置
    if (iBodyEnd == -1)
        return null;
    iBodyEnd += endString.Length;                              //第二次字符位置起的长度
    string strResult = istr.Substring(iBodyStart, iBodyEnd - iBodyStart - 1);
    return strResult;
}
 
 
private string mid(string istr, string startString, string endString, out int iBodyEnd)
{
    //初始化out参数,否则不能return
    iBodyEnd = 0;
 
    int iBodyStart = istr.IndexOf(startString, 0);               //开始位置
    if (iBodyStart == -1)
        return null;
    iBodyStart += startString.Length;                           //第一次字符位置起的长度
    iBodyEnd = istr.IndexOf(endString, iBodyStart);         //第二次字符在第一次字符位置起的首次位置
    if (iBodyEnd == -1)
        return null;
    iBodyEnd += endString.Length;                              //第二次字符位置起的长度
    string strResult = istr.Substring(iBodyStart, iBodyEnd - iBodyStart - 1);
    return strResult;
}

好了,上面就是全部代码了,如果你想要运行出来的话,有些细节要自己修改下。

C# 抓取网页Html源码 (网络爬虫)的更多相关文章

  1. C# 使用 Abot 实现 爬虫 抓取网页信息 源码下载

    下载地址 ** dome **

  2. Python数据抓取(2) —简单网络爬虫的撰写

    (一)使用Requests存储网页 Requests 是什么?网络资源(URLs)抓取套件 优点? 改善urllib2的缺点,让使用者以最简单的方式获取网络资源 可以使用REST操作(POST,PUT ...

  3. [Python]网络爬虫(一):抓取网页的含义和URL基本构成

    一.网络爬虫的定义 网络爬虫,即Web Spider,是一个很形象的名字. 把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛.网络蜘蛛是通过网页的链接地址来寻找网页的. 从网站某一个 ...

  4. [转]Linux Socket编程 Socket抓取网页源码

    “一切皆Socket!” 话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket. ——有感于实际编程和开源项目研究. 我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览 ...

  5. 使用Socket抓取网页源码

    import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import ...

  6. Asp.net 使用正则和网络编程抓取网页数据(有用)

    Asp.net 使用正则和网络编程抓取网页数据(有用) Asp.net 使用正则和网络编程抓取网页数据(有用) /// <summary> /// 抓取网页对应内容 /// </su ...

  7. C语言Linix服务器网络爬虫项目(二)项目设计和通过一个http请求抓取网页的简单实现

    我们通过上一篇了解了爬虫具体要实现的工作之后,我们分析得出的网络爬虫的基本工作流程如下: 1.首先选取一部分精心挑选的种子URL: 2.将这些URL放入待抓取URL队列: 3.从待抓取URL队列中取出 ...

  8. Python -- 网络编程 -- 简单抓取网页

    抓取网页: urllib.request.urlopen(url).read().decode('utf-8')  ---  (百度是utf-8,谷歌不是utf-8,也不是cp936,ascii也不行 ...

  9. [转载]爬虫的自我解剖(抓取网页HtmlUnit)

    网络爬虫第一个要面临的问题,就是如何抓取网页,抓取其实很容易,没你想的那么复杂,一个开源HtmlUnit包,4行代码就OK啦,例子如下: 1 2 3 4 final WebClient webClie ...

随机推荐

  1. 补鞋匠---Cobbler 服务器自动搭建

    Cobbler 服务器自动搭建http://tshare365.com/archives/439.html

  2. 使用地址栏访问CXF Webservice写法

    /* * 通过url调用 * http://localhost:8080/EFP/webService/TestWebservice/testOut/arg0/liuyx */ http://loca ...

  3. js 中常用的方法

    1..call() 将.call()点之前的属性或方法,继承给括号中的对象. 2.(function(){xxx})() 解释:包围函数(function(){})的第一对括号向脚本返回未命名的函数, ...

  4. [转]CodeSmith和PowerDesigner的使用安装和数据库创建

    最近要忙期考,但还是决定每天抽点空来写CodeSmith的系列文章了,在此实在不敢用教程这个词语,毕竟自己对CodeSmith了解的也不是很多,有很多牛人都在博客园发布了不少关于CodeSmith的文 ...

  5. INADDR_ANY的确切含义

    INADDR_ANY就是inet_addr("0.0.0.0") 首先,需要明确的是当服务器的监听地址是INADDR_ANY时设置的是服务器的IP地址. 其次,当服务器的监听地址是 ...

  6. 目标检测——HOG特征

    1.HOG特征: 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子.它通过计算和统计图像局部区域的 ...

  7. Linux常用指令---工作

    查看所有用户cat /etc/passwd 复制整个目录cp -ri A/B/* A1/B1/ 若复制过程中询问是否覆盖,输入y按回车 另外若A A1不在同一目录下,最好填绝对路径,就是/xxx/xx ...

  8. 从0开始学Java——JSP&Servlet——如何在Eclipse中配置Web容器为tomcat

    windows- >Preferences -> Server->runtime Envirement ->Add 点击下一步,然后按照如下设置:  

  9. 20145324 20145325《信息安全系统设计基础》实验五 简单嵌入式WEB服务器实验

    实验五报告链接为:http://www.cnblogs.com/SJZGM10/p/6106668.html

  10. HTML5 文件异步上传 — h5uploader.js

    原文地址:http://imziv.com/blog/article/read.htm?id=62 之前写过一篇H5异步文件上传的文章, 但是很多朋友看着我的这个教程还是出现很多问题,文章写的不是很好 ...