C# 抓取网页Html源码 (网络爬虫)

本文提供了一个简单的网络爬虫实现代码,包括抓取HTML源码并选择指定节点的href链接。通过实例帮助读者了解如何从网页中获取所需信息,减少开发过程中的弯路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

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

转载于:https://www.cnblogs.com/ttlive/archive/2011/09/07/2170134.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值