基于人人网的简单爬虫(二)——具体实现
该程序分为三个部分:获取人人网登陆权限、爬取所需要的好友信息和分析好友关系。下面对这三个部分的设计思路进行阐述。
(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. 能够输入用户登陆所产生的cookie,允许爬虫对人人网进行爬取 ...
- java爬虫之基于httpclient的简单Demo(二)
转载自 java爬虫之基于httpclient的简单Demo(二) 延续demo1的 java爬虫的2种爬取方式(HTTP||Socket)简单Demo(一),demo2出炉啦,大家想学爬虫都可以从这 ...
- 基于iOS的简单计算器(二)
接上一篇基于iOS的简单计算器(一)皆为po主iOS课程的实验内容. 新增界面 高级计算器:能够进行一些高级的运算比如三角函数.阶乘.对数等. 体质计算器:获取用户的身高体重后,反馈用户的体质指数. ...
- Java实例——基于jsoup的简单爬虫实现(从智联获取工作信息)
这几天在学习Java解析xml,突然想到Dom能不能解析html,结果试了半天行不通,然后就去查了一些资料,发现很多人都在用Jsoup解析html文件,然后研究了一下,写了一个简单的实例,感觉还有很多 ...
- 基于pycharm的简单爬虫
爬取的是豆瓣书籍top250的所有书籍信息和图片,然后做了一个小小的功能界面 首先用到的一些库,其中sys和os不用下系统自带,其他都需要自己下 from PyQt5 import QtCore, Q ...
- python简单爬虫代码-python简单爬虫(二)
") file.write(" for data inself.datas: file.write(" file.write(' '+str(data['url'])+' ...
- Keras之ML~P:基于Keras中建立的简单的二分类问题的神经网络模型(根据200个数据样本预测新的5个样本)——概率预测
Keras之ML~P:基于Keras中建立的简单的二分类问题的神经网络模型(根据200个数据样本预测新的5个样本)--概率预测 目录 输出结果 核心代码 输出结果 核心代码 # -*- coding: ...
- Keras之ML~P:基于Keras中建立的简单的二分类问题的神经网络模型(根据200个数据样本预测新的5+1个样本)——类别预测
Keras之ML~P:基于Keras中建立的简单的二分类问题的神经网络模型(根据200个数据样本预测新的5+1个样本)--类别预测 目录 输出结果 核心代码 输出结果 核心代码 # -*- codin ...
- 基于Java实现简单亚马逊爬虫
前言:最近博主买了台Kindle,感觉亚马逊上的图书资源质量挺好,还时不时地会有价格低但质量高的书出售,但限于亚马逊并没有很好的优惠提醒功能,自己天天盯着又很累.于是,我自己写了一个基于Java的亚马 ...
最新文章
- PyTorch 系列教程之空间变换器网络
- UA MATH565C 随机微分方程II Wiener过程简介
- Linux疑难杂症解决方案100篇(三)-嵌套循环及随机数知多少
- php 删除文件时间,php删除文件后重建,文件创建时间(filectime)未变化怎么解决??...
- 洛谷出现RE(re)的情况
- 北斗导航 | 现代授时技术——北斗GPS导航系统
- 经典C语言程序100例之四七
- 用计算机答题答案提交后能否改错,南京晓庄计算机操作系统习题库含答案全1-5章...
- java 内省 反射_Java的反射和内省
- 占空比50%的奇数分频
- 构建之法现代软件概述
- linux配置vscodec运行环境,Linux 下 VSCode c/c++环境配置
- 运行wpf_在WPF中一种较好的绑定Enums数据方法
- Java优先级队列PriorityQueue
- Sublime Text格式化SQL
- 什么是信道编码?信道编码比较
- 怎么用计算机提供权限,“你需要计算机管理员提供的权限才能对此文件进行更改”怎么办...
- 乒乓球比赛赛程_2018国际乒联乒乓球重大赛事详细赛程表,看点爆点早知道
- 学习排序 Learning to Rank:从 pointwise 和 pairwise 到 listwise,经典模型与优缺点
- 笔记:Linux系统调用在文件中的分布情况