该程序分为三个部分:获取人人网登陆权限、爬取所需要的好友信息和分析好友关系。下面对这三个部分的设计思路进行阐述。

(1)获取人人网登陆权限

设计的核心思想是:将登陆所需要的cookie放在程序中,使得程序能够在爬取网页之前能够获得登陆的权限。

这里用到了firebug这样一个运行在firefox浏览器中的插件,来获得所需要的cookie。如图:

由此获得的cookie可以用下面一段代码登陆:

WebClient client = new WebClient(); client.Headers.Add("Cookie", "你的cookie"); Byte[] pageData = client.DownloadData(url); string text = Encoding.UTF8.GetString(pageData);

上面的代码事实上已经将url页面的内容取出来并转化成string类型了。注意:WebClient 的使用要加头:using System.Net;

(2)爬取所需要的好友信息

这个过程其实只要了解了正则表达式的写法之后,就非常简单了。只需要先通过正则表达式对上面取到的文本进行匹配,然后将不相关的文字replace 掉,就可以了。匹配的代码:

Regex regex = new Regex("<a stats=/"pf_friend/" class=/"avatar/" href="/" mce_href="/""http://www.renren.com/profile.do//?portal=profileFriendlist&id=.*?/" title=/"查看.*?的个人主页/">//n<img stats=/"pf_friend/" src="/" mce_src="/"".*?.jpg"); MatchCollection myfriendsmatch = regex.Matches(html);

通过上面的匹配,就能够从html中获得匹配结果并保存在myfriendsmatch,供进一步分析使用。replace的部分就不讲了。

(3)分析好友关系

这个得看程序是怎么进行爬取的了。要将所有的好友关系都爬取出来时比较困难的,我在程序中只爬取了两层,因此还是比较简单的一种方法吧。算是入门级别的吧。

总之,整个程序的核心其实在于登陆账号的写入、页面内容的获取和正则表达式的匹配。

基于人人网的简单爬虫(二)——具体实现相关推荐

  1. 基于人人网的简单爬虫(一)——正则表达式

    应课程实验要求,要写一个基于人人网的简单爬虫.实验要求如下: 学会使用一种编程语言实现爬取人人网关系网络的程序.该程序功能如下: 1.  能够输入用户登陆所产生的cookie,允许爬虫对人人网进行爬取 ...

  2. java爬虫之基于httpclient的简单Demo(二)

    转载自 java爬虫之基于httpclient的简单Demo(二) 延续demo1的 java爬虫的2种爬取方式(HTTP||Socket)简单Demo(一),demo2出炉啦,大家想学爬虫都可以从这 ...

  3. 基于iOS的简单计算器(二)

    接上一篇基于iOS的简单计算器(一)皆为po主iOS课程的实验内容. 新增界面 高级计算器:能够进行一些高级的运算比如三角函数.阶乘.对数等. 体质计算器:获取用户的身高体重后,反馈用户的体质指数. ...

  4. Java实例——基于jsoup的简单爬虫实现(从智联获取工作信息)

    这几天在学习Java解析xml,突然想到Dom能不能解析html,结果试了半天行不通,然后就去查了一些资料,发现很多人都在用Jsoup解析html文件,然后研究了一下,写了一个简单的实例,感觉还有很多 ...

  5. 基于pycharm的简单爬虫

    爬取的是豆瓣书籍top250的所有书籍信息和图片,然后做了一个小小的功能界面 首先用到的一些库,其中sys和os不用下系统自带,其他都需要自己下 from PyQt5 import QtCore, Q ...

  6. python简单爬虫代码-python简单爬虫(二)

    ") file.write(" for data inself.datas: file.write(" file.write(' '+str(data['url'])+' ...

  7. Keras之ML~P:基于Keras中建立的简单的二分类问题的神经网络模型(根据200个数据样本预测新的5个样本)——概率预测

    Keras之ML~P:基于Keras中建立的简单的二分类问题的神经网络模型(根据200个数据样本预测新的5个样本)--概率预测 目录 输出结果 核心代码 输出结果 核心代码 # -*- coding: ...

  8. Keras之ML~P:基于Keras中建立的简单的二分类问题的神经网络模型(根据200个数据样本预测新的5+1个样本)——类别预测

    Keras之ML~P:基于Keras中建立的简单的二分类问题的神经网络模型(根据200个数据样本预测新的5+1个样本)--类别预测 目录 输出结果 核心代码 输出结果 核心代码 # -*- codin ...

  9. 基于Java实现简单亚马逊爬虫

    前言:最近博主买了台Kindle,感觉亚马逊上的图书资源质量挺好,还时不时地会有价格低但质量高的书出售,但限于亚马逊并没有很好的优惠提醒功能,自己天天盯着又很累.于是,我自己写了一个基于Java的亚马 ...

最新文章

  1. PyTorch 系列教程之空间变换器网络
  2. UA MATH565C 随机微分方程II Wiener过程简介
  3. Linux疑难杂症解决方案100篇(三)-嵌套循环及随机数知多少
  4. php 删除文件时间,php删除文件后重建,文件创建时间(filectime)未变化怎么解决??...
  5. 洛谷出现RE(re)的情况
  6. 北斗导航 | 现代授时技术——北斗GPS导航系统
  7. 经典C语言程序100例之四七
  8. 用计算机答题答案提交后能否改错,南京晓庄计算机操作系统习题库含答案全1-5章...
  9. java 内省 反射_Java的反射和内省
  10. 占空比50%的奇数分频
  11. 构建之法现代软件概述
  12. linux配置vscodec运行环境,Linux 下 VSCode c/c++环境配置
  13. 运行wpf_在WPF中一种较好的绑定Enums数据方法
  14. Java优先级队列PriorityQueue
  15. Sublime Text格式化SQL
  16. 什么是信道编码?信道编码比较
  17. 怎么用计算机提供权限,“你需要计算机管理员提供的权限才能对此文件进行更改”怎么办...
  18. 乒乓球比赛赛程_2018国际乒联乒乓球重大赛事详细赛程表,看点爆点早知道
  19. 学习排序 Learning to Rank:从 pointwise 和 pairwise 到 listwise,经典模型与优缺点
  20. 笔记:Linux系统调用在文件中的分布情况

热门文章

  1. 手动升级 Confluence - 规划你的升级
  2. memcached一致性哈希及php客户端实现
  3. MFC体系结构(3)
  4. Google Puppeteer加入到headless Chrome的工具行列
  5. 证书(3)如何在程序中使用数字证书
  6. MVC TIP7:自定义IHttpModule、IRouteHandler实现路由调试
  7. react 轮播组件
  8. 构建最小JDK Docker镜像 或者直接使用镜像:frolvlad/alpine-oraclejre8:slim
  9. 使用接口更改已装箱的值类型中的字段
  10. ISP DSP的不同