本文旨在介绍简单的脉脉爬虫,用作学习交流,侵删~

1. 基本知识

1.1Python基本语法

链接自寻 ?Python3 中文手册

1.2爬虫基本原理

具体一些内容参考博客?爬虫基本原理

1.3爬虫基本模块

1.3.1Requests模块

pip安装方法:

pip install requests

导入requests模块:

import requests

Requests主要用post或get的方法请求数据,根据需要添加一些headers和cookies

import requestsheader = {"user-agent": 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US;rv:1.9.1.5)Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729)'
}
url = 'www.baidu.com'
r = requests.get(url, headers=header)

链接走你?Requests中文文档

1.3.2BeautifulSoup模块

pip安装方法:

pip install beautifulsoup4

导入BeautifulSoup模块:

from bs4 import BeautifulSoup

安装第三方解析器,搭配BeuatifulSoup使用简直美滋滋~

pip install lxml

BeautifulSoup将复杂HTML文档转换成一个复杂的树形结构,方便之后对网页标签的提取。

简单使用方法:

import requests
from bs4 import BeautifulSoupheader = {"user-agent": 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US;rv:1.9.1.5)Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729)'
}
url = 'www.baidu.com'
r = requests.get(url, headers=header)
soup = BeautifulSoup(r.text, 'lxml')

1.3.3Json模块

有的网页获取到的是json形式的数据,那就用不到BeautifulSoup了,需要对json数据进行转换成Python的字典形式,之后的工作就是根据字典的键值进行提取数据。

json模块安装:

pip install json

导入使用:

import requests
import jsonheader = {"user-agent": 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US;rv:1.9.1.5)Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729)'
}
url = 'www.baidu.com'
r = requests.get(url, headers=header)
data = json.loads(r.text)

1.3.4urllib模块

urllib是一个强大的模块,可以用来请求数据等,由于本文使用的是requests模块,因此这里主要用做简单的url编码和解码。

安装:

pip install urllib

导入使用:

import requests
import json
import urllib.parseheader = {"user-agent": 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US;rv:1.9.1.5)Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729)'
}
url = 'www.baidu.com'
url = urllib.parse.quote(url)
r = requests.get(url, headers=header)
data = json.loads(r.text)

2.基本内容爬取

脉脉网页版url:https://maimai.cn/web/feed_explore

登陆之后可以看到好友的发布的动态消息,如图:

通过F12开发者工具抓包,可以看到主页显示的信息都在这里面啦!

通过寻找,发现主页这些人的信息都在一个文件里面,同时往下拉动态加载的数据也在另一个类似的文件里。

接下来我们就可以构造需要的url啦!

我们来比较一下两个不同的url:

https://maimai.cn/sdk/web/feed_list?u=188081240&channel=www&version=4.0.0&_csrf=NnNNs0Mk-QJrkSl7PjtQ_gVqeYLKd8XQa54w&access_token=1.8996b04cb72224ca89393ecffbd3e1fb&uid=%22RZ01hOKhNgSH%2Bk1Ntgdo9fAirs3A3wL6ApgZu%2Fo1crA%3D%22&token=%22TAKi5qw%2Bx6ZNfy%2BZUX4f37Au1iR97LH4vHVZytesdes1Ad3Gp1o%2BHETzdIsEU%2FOF8CKuzcDfAvoCmBm7%2BjVysA%3D%3D%22&page=0&hash=feed_explore&jsononly=1
https://maimai.cn/sdk/web/feed_list?u=188081240&channel=www&version=4.0.0&_csrf=NnNNs0Mk-QJrkSl7PjtQ_gVqeYLKd8XQa54w&access_token=1.8996b04cb72224ca89393ecffbd3e1fb&uid=%22RZ01hOKhNgSH%2Bk1Ntgdo9fAirs3A3wL6ApgZu%2Fo1crA%3D%22&token=%22TAKi5qw%2Bx6ZNfy%2BZUX4f37Au1iR97LH4vHVZytesdes1Ad3Gp1o%2BHETzdIsEU%2FOF8CKuzcDfAvoCmBm7%2BjVysA%3D%3D%22&page=1&hash=feed_explore&jsononly=1

发现只是page=0改成了page=1,因此我们可以通过让page的值增加的方式获取到更多的数据,是不是很赞( •̀ ω •́ )y

构造如下url,通过for循环增加page的值,requests的时候不要忘了构造header和cookie哦,要不然是获取不到数据的:

import requests
import jsoncookie = {'Cookie': ''}  #把复制的cookies放在这里
header = {"user-agent": 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US;rv:1.9.1.5)Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729)'}
for page in range(0, 5):url = 'https://maimai.cn/sdk/web/feed_list?u=188081240&channel=www&version=4.0.0&_csrf=NnNNs0Mk-QJrkSl7PjtQ_gVqeYLKd8XQa54w&access_token=1.8996b04cb72224ca89393ecffbd3e1fb&uid=%22RZ01hOKhNgSH%2Bk1Ntgdo9fAirs3A3wL6ApgZu%2Fo1crA%3D%22&token=%22TAKi5qw%2Bx6ZNfy%2BZUX4f37Au1iR97LH4vHVZytesdes1Ad3Gp1o%2BHETzdIsEU%2FOF8CKuzcDfAvoCmBm7%2BjVysA%3D%3D%22&page={}&hash=feed_explore&jsononly=1'.formate(page)r = requests.get(url, headers=header, cookies=cookie)data = json.loads(r.text)

剩下的只需要对需要的信息进行字典的键值操作提取就可以啦~

比如我们要提取姓名这一属性,发现姓名标签存在的位置依次为:feeds→0→main→u→name,按照这个顺序我们可以成功提取到姓名的这一属性的数据啦!其他的属性同理可得 o(* ̄▽ ̄*)ブ

import requests
import jsoncookie = {'Cookie': ''}  #把复制的cookies放在这里
header = {"user-agent": 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US;rv:1.9.1.5)Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729)'}
for page in range(0, 5):url = 'https://maimai.cn/sdk/web/feed_list?u=188081240&channel=www&version=4.0.0&_csrf=NnNNs0Mk-QJrkSl7PjtQ_gVqeYLKd8XQa54w&access_token=1.8996b04cb72224ca89393ecffbd3e1fb&uid=%22RZ01hOKhNgSH%2Bk1Ntgdo9fAirs3A3wL6ApgZu%2Fo1crA%3D%22&token=%22TAKi5qw%2Bx6ZNfy%2BZUX4f37Au1iR97LH4vHVZytesdes1Ad3Gp1o%2BHETzdIsEU%2FOF8CKuzcDfAvoCmBm7%2BjVysA%3D%3D%22&page={}&hash=feed_explore&jsononly=1'.formate(page)r = requests.get(url, headers=header, cookies=cookie)data = json.loads(r.text)name_list = data.get('feeds')for li in list:name = li.get('main').get('u').get('name')

3.总结

脉脉的数据还是很丰富的,例如每个人的好友列表,好友动态等信息,本文介绍了一些基本的爬取方法,供初学者参考使用,时间匆促,如有错误之处,还请各路大侠批评指正(●'◡'●)!

注:转载请注明地址https://blog.csdn.net/qq_36767053/article/details/85222871

Python爬虫设计之职业社交网站——脉脉相关推荐

  1. 浅析天际网、IT260、微人脉等中国职业社交网站

    近日,国内外互联网巨头纷纷进驻职业社交领域,先是facebook推出求职应用"社交求职",然后是搜狐推出了IT260,紧接着新浪在微博基础上推出微人脉,再加上这个领域耕耘多年的天际 ...

  2. Python爬虫抓取某音乐网站MP3(下载歌曲、存入Sqlite)

    Python爬虫抓取某音乐网站MP3(下载歌曲.存入Sqlite) 最近右胳膊受伤,打了石膏在家休息.为了实现之前的想法,就用左手打字.写代码,查资料完成了这个资源小爬虫.网页爬虫, 最主要的是协议分 ...

  3. Python爬虫设计思路

    Python爬虫设计思路 一.爬虫架构 爬虫调度端:一般指的入口函数,发起动作的入口. URL管理器:存放待爬取网站的URL和已爬取过的URL的功能(python内存.关系数据库.缓存数据库). 网页 ...

  4. Python爬虫实战爬取租房网站2w+数据-链家上海区域信息(超详细)

    Python爬虫实战爬取租房网站-链家上海区域信息(过程超详细) 内容可能有点啰嗦 大佬们请见谅 后面会贴代码 带火们有需求的话就用吧 正好这几天做的实验报告就直接拿过来了,我想后面应该会有人用的到吧 ...

  5. python爬虫实战-爬取视频网站下载视频至本地(selenium)

    #python爬虫实战-爬取视频网站下载视频至本地(selenium) import requests from lxml import etree import json from selenium ...

  6. Python 爬虫进阶必备 | 某音乐网站查询参数加密逻辑分析(分离式 webpack 的加密代码扣取详解)...

    点击上方"咸鱼学Python",选择"加为星标" 第一时间关注Python技术干货! 今日网站 aHR0cDovL3d3dy5rdXdvLmNuL3NlYXJj ...

  7. 详细实例:用python爬虫爬取幽默笑话网站!(建议收藏)

    前言: 今天为大家带来的内容是详细实例:用python爬虫爬取幽默笑话网站!(建议收藏),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下! 爬取网站为 ...

  8. 初次尝试python爬虫,爬取小说网站的小说。

    本次是小阿鹏,第一次通过python爬虫去爬一个小说网站的小说. 下面直接上菜. 1.首先我需要导入相应的包,这里我采用了第三方模块的架包,requests.requests是python实现的简单易 ...

  9. Python爬虫实战之爬取网站全部图片(一)

    Python爬虫实战之爬取网站全部图片(二) Python爬虫实战之通过ajax获得图片地址实现全站图片下载(三) 一.获得图片地址 和 图片名称 1.进入网址之后 按F12  打开开发人员工具点击e ...

最新文章

  1. php怎样验证验证码对错,PHP生成中文验证码并检测对错实例
  2. 王勇DRP项目浏览器无法正常显示问题
  3. ORACLE关于段的HEADER_BLOCK的一点浅析
  4. 燕山大学数字通信计算机仿真课程设计,燕山大学数字通信计算机仿真课程设计模板...
  5. 我30岁了。现在开始编程,会不会太晚?
  6. JS-DOM-节点-获取元素-文档结构-元素的属性
  7. JavaScript记录一下
  8. 深挖android low memory killer
  9. [WC2007] 剪刀石头布
  10. element-ui表单验证时需要number类型
  11. win7如何启用计算机的无线功能,win7系统如何开启wifi热点|win7系统配置wifi热点的方法...
  12. U盘启动制作及系统安装
  13. 方格网的填方和挖方计算
  14. 集群监控:Ambari和Cloudera Manger
  15. 基于ssm框架的同城物流配送网站系统
  16. docker 开机自启动容器docker运行自启动
  17. 关于异步的几点思考......
  18. 线程锁完成----2021年1月19日19:17:45
  19. lambda表达式——捕获
  20. 【转载】CU、PU、TU划分显示代码

热门文章

  1. 刷题记录:牛客NC17193简单瞎搞题
  2. 艾永亮:成为中国版“YouTube”,B站做的不仅是拿下版权
  3. php 统计下载次数,Dedecms下载次数真实统计的实现方法
  4. ettercap 命令
  5. [150518]程序员颈椎保护指南
  6. 12款最佳的Linux命令行终端工具
  7. ros中cpp节点创建
  8. 从微信「拍一拍」,我想到了那些神奇的一行代码功能(文末福利)
  9. TVM Pass 总结
  10. OpenGL.ES在Android上的简单实践:21-水印录制(MediaCodec输出h264+MediaMuxer合成mp4 上)