[C#]网络扒虫

原创 2011年01月17日 19:14:00

这个其实不能算是完全意义上的网络扒虫,只是对某个社交网络进行扒取,然后得到邻接矩阵,以及相应的头像等信息。

 

 

 

主要的步骤:

1,扒取信息

2,正则匹配

 

 

正则表达式主要参考了:http://deerchao.net/tutorials/regex/regex.htm

 

扒取信息中用的是 WebClient这个方法相对HttpRequest的HttpResponse更简洁一些。

 

难点是克服网站的认证机制,用的是保存Cookies的方法。

 

扒虫部分代码:

using System;

using System.Net;

using System.Text;

using System.Text.RegularExpressions;

 

public class Crawler

{

    public static string GetCont(string url)//扒取页面

    {

        string cookies = "_r01_=; depovince=BJ; p=; ap=; t=; societyguester=55a777838c4286ab5f657382dbd25c736; id=; xnsid=";

        WebClient WebC = new WebClient();

        WebC.Headers.Add("Cookie", cookies);

        byte[] WebPa = WebC.DownloadData(url);

        string PageHtml = Encoding.UTF8.GetString(WebPa);

        return PageHtml;

    }

    public static void GetImag(string ImgUrl,string UserName)//下载小图片

    { 

        string imageFileName;

        string imageFilePath;

        WebClient myClient = new WebClient();

        Regex regex = new Regex("//w*");

        MatchCollection UsNameMatches = regex.Matches(UserName);

        imageFileName = UsNameMatches[0].Value.ToString() + ".jpg";

        imageFilePath = @"D:/picture/" + imageFileName;

        try

        {

            myClient.DownloadFile(ImgUrl, imageFilePath);

        }

        catch

        {

        }

    }

}

 

//正则表达式部分

using System.Text;

using System.Text.RegularExpressions;

 

public class MyRegex

{

    public static string[] GetAddr(string PageHtml)

    {

        string[] PageUrl=new string[24];

        Regex regex = new Regex("http://www..com/profile.do//?portal=//w*&id=//d+(?=/"//stitle=)");

        MatchCollection urlMatches = regex.Matches(PageHtml);

 

        for(int i=0;i<urlMatches.Count;i++)

        {

            PageUrl[i]=urlMatches[i].Value.ToString();

        }

        return PageUrl;

    }

    public static string[] GetImgAddr(string PageHtml)

    {

        string[] ImgAddr = new string[24];

        Regex regex = new Regex("(?<=stats=/"pf_friend/"//ssrc//=/").*(?=/"//swidth=/"50/"//s/>)");

        MatchCollection ImgMatches = regex.Matches(PageHtml);

        for(int i=0;i<ImgMatches.Count;i++)

        {

            ImgAddr[i] = ImgMatches[i].Value.ToString();

        }

        return ImgAddr;

    }

    public static string[] GetUsName(string PageHtml)

    {

        string[] UsName = new string[24];

        Regex regex = new Regex("(?<=title=/"查看).*(?=的个人主页/">//W<img//sstats=/"pf_friend/")");

        MatchCollection UsNameMatches = regex.Matches(PageHtml);

        for (int i = 0; i < UsNameMatches.Count; i++)

        {

            UsName[i] = UsNameMatches[i].Value.ToString();

        }

        return UsName;

    }

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

C#网络编程(异步传输字符串) - Part.3

源码下载:http://www.tracefact.net/SourceCode/Network-Part3.rarC#网络编程(异步传输字符串) - Part.3这篇文章我们将前进一大步,使用异步的...

C#实现网络传输数据加密

1. 分组密码 分组密码是将明文消息编码表示后数字序列划分成长为n的分组,各组分别在密钥的作用下进行变换输出等长的数字序列,即密文。一次加密一个数据组,加解密所使用的是同一密钥,故其通常也称为对称加...

[C#]网络编程系列专题二:HTTP协议详解

我们在用Asp.net技术开发Web应用程序后,当用户在浏览器输入一个网址时就是再向服务器发送一个HTTP请求,此时就使用了应用层的HTTP协议,在上一个专题我们简单介绍了网络协议的知识,主要是为了后...

在线教学系统:C#实现网络电子白板、课件功能

电子白板和课件功能是在线教学系统中的必备功能,本文就介绍如何基于OMCS快速实现电子白板的基础功能,以及课件功能:上传课件、打开课件、课件翻页、课件同步、删除课件等高级功能。

c#网络编程学习笔记02_Tcp编程(中)_简单的同步tcp聊天程序

/* 写一个同步tcp程序,功能为,客户端发送一个字符串给服务器,服务器将字符串打印,服务器再将字符串全部转化为大写字母,发送给客户端,然后客户端接受打印 */ 回忆一下编写服务端的一般步骤: 1.取...

Unity3d +vs2012 多线程.多并发网络解决方案(C#)

此方案和结构在多线程多并发大吞吐下有绝对的效率优势 以下是服务端 vs2012 C# 复制代码 1 2 3 4 5 6 7 8 9 10 11 ...

C#网络编程初步之TCP

http://www.cnblogs.com/chengulv/archive/2013/01/21/2870406.html  阅读背景:本文针对有C#的初学者而写的,主要讲解如何利用C#...

C# 网络编程之webBrowser乱码问题及解决知识

C#编写webBrowser简单浏览器时总是显示中文乱码”口口口???”困扰我很长时间,可想而知怎样解决编码问题或统一编码问题是非常严重的问题。下面就讲讲我的一些理解及解决方法吧!主要结合实际编写的浏...

利用Visual C#实现ICMP网络协议

ICMP就是所谓的Internet控制报文协议(Internet Control Message Protocol),在网络中,一般用它来传递差错报文以及其他应注意的信息。ICMP一般被认为是和IP协...

C#网络编程(基本概念和操作) - Part.1

C#网络编程(基本概念和操作) - Part.1 引言 C#网络编程系列文章计划简单地讲述网络编程方面的基础知识,由于本人在这方面功力有限,所以只能提供一些初步的入门知识,希望能对刚开始学...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)