爬虫实战:学者网(一)
来源:互联网 发布:杭州淘宝拍摄公司 编辑:程序博客网 时间:2024/06/06 09:21
学者网是广东省服务计算工程技术研究开发中心(华南师范大学计算机学院汤庸团队)开发的学术社交网站,类似于谷歌学者。目标群体主要是高校学者。因此该网站用户定位十分精确。从价值上,个人信息价值高,主要有姓名单位邮箱等,如下图。
本着学习的目的,我编写了一套简单的程序对该网站进行数据抓取。本次爬虫项目分三个步骤:一、网站分析;二、程序设计。
另外免责声明:本文所有方法与代码与正常web浏览模式一致,不涉及侵犯任何计算机系统;本文爬到的数据皆为网页公开数据不涉及任何隐私;本文方法代码完全公开,请仅作学习使用,其余用途与本文作者无关。
网站分析:
1,如何迭代
对于爬虫程序,首要的问题是如何源源不断的获取需要的信息的URL。我们分析学者网的URL可以发现不同用户的主页链接是由“网站地址”+“用户ID”构成的,要遍历网站用户,即需要遍历用户ID。
如果单单是数字ID可以采取暴力遍历的方法,但在这里,用户ID是字母和数字构成,不可能遍历完。因此在这里我要想得到用户ID,第一时间想到的是SQL注入拿库,但是这是非法的不可取。我又想起了一句话“世界上任何两个人之间只隔着六个人”,这叫六度空间理论。那么是否可以
从一个人出发遍历到所有的人。
其实不可能的,有两种情况的遍历不到:
1如果一个人注册后完全不加好友,和其他人没有链接,这种人属于“僵尸号”,无法被遍历到,如下图右上角用户。
2封闭小圈子无法被遍历,比如ABC三人互相加好友,但是不加其他人,也无法遍历到,如下图左上角。
我们只能遍历一个主连通图。那么如何遍历,可以发现每个人主页中有“圈子”这个栏目,打开后直接可见它所有的好友。
打开firefox看network项目,发现点开圈子时,有文件下载,打开即为我们需要的信息,json格式。如下图:
查看header发现传入的参数为当前用户ID
到这里,遍历网站就可以实现了:从用户ID出发不断取得其他用户ID,进行图的深度遍历。
2抓取数据
在前面的json中包含了中文名,ID,头像链接。那么主页中还有其他的信息,例如工作单位,邮箱等。
大多数数据直接可提取,但是用户邮箱该网站作了简单的防提取:
可以看到首先使用了js生成,其次加入了很多混淆信息。然而虽然使用js但数据并非动态从数据库提取,还是静态的传输过来了。其次这种固定的混淆对于正则表达式完全无效。我们只需要用正则定位和即可拼凑正确邮箱地址。
到此我们实现了数据的提取和遍历的方式,那么网站的分析就到这里,下一篇是代码的实现。
本人博客http://blog.lishiqi.org
- 爬虫实战:学者网(一)
- 爬虫实战:学者网(二)
- Python爬虫实战(一)
- python爬虫实战(一)
- python网络爬虫实战笔记(一)
- 学者网
- Python爬虫入门实战一
- 爬虫爬虫爬虫(一)
- 爬虫实战一:爬取当当网所有 Python 书籍
- Python实战(一)——Python编写网络爬虫
- Python爬虫实战之抓取淘宝MM照片(一)
- 分布式爬虫实战(一)互联网协议相关基础知识
- python爬虫入门 实战(一)---爬糗事百科
- python爬虫实战(一)--爬取知乎话题图片
- python3爬虫实战(一)爬取创业邦创投库
- (实战项目一)手机App抓包爬虫
- Python 爬虫实战(一):使用 requests 和 BeautifulSoup
- python爬虫实战(一)----------爬取京东商品信息
- request、response的常见用法
- iOS圆角和阴影并存
- 按位取反运算符~详解
- 数组的分页
- 海外云主机搭建IKEV2 VPN之经验总结 + 搭建证书服务器
- 爬虫实战:学者网(一)
- leetcode:5. Longest Palindromic Substring
- 【网络】端口相关概念介绍
- 【MQTT】在Windows下搭建MQTT服务器
- MATLAB中写TXT文件换行的实现
- 轻松打造APP统一标题栏
- 设置ls -l命令中显示的日期格式
- python 入门一(数据结构)
- 1092 回文字符串