Python 爬虫爬取简书作者信息
2017-12-15 本文已影响128人
全栈coder
目标:
爬取简书的作者信息
步骤:
1.随便进入一个作者页面
2.提取作者信息,包括头像,昵称,关注数,粉丝数,文章数,字数,收获喜欢数
3.进入粉丝列表,爬取所有粉丝的信息
4.进入关注列表,爬取所有关注者的信息
5.从列表中选择一个用户,进入其主页,从步骤3开始循环爬取
环境:
Python3.6,MongoDB,windows7
代码地址:https://github.com/daocaoren1111/jianshuspider
不明白的可以私信我
详细步骤:
-
随意打开一个作者页面

分析如下:
所有的作者主页链接都是 www.jianshu.com + users + uid + followers 模式,其中最关键的就是uid部分,每个作者的uid都是不同的。我们使用python的Requests库获取页面,然后使用Beautifulsoup解析页面文档
-
提取作者信息,包括头像,昵称,关注数,粉丝数,文章数,字数,收获喜欢数


- 打开浏览器的调试台,使用Beautifulsoup的语法将作者的信息
提取出来,将其组成一个字典,以uid为主键随后写入MongoDB的
user集合中。- 使用request.urlretrieve()函数将图片保存在磁盘中
-
进入粉丝列表,写入粉丝信息


- 值得注意的是,简书规定最多只能查看900个粉丝信息,其余的就不显示了,所以我们首先通过粉丝数计算页数,因为每页可以展示9个人的信息,所以最多循环100组提取信息。
- 同样将每个粉丝的信息写入到MongoDB的user集合中。
-
进入关注列表,提取所有关注者的信息

- 同上一步一样,循环获取信息写入MongoDB
- 定义一个列表,将所有关注者的uid写入列表
-
从列表中选择一个作者,进入其主页,重复步骤1,循环
1.在MongoDB在新建一个集合hascrawl,每爬一个作者将其uid写入集合中。
- 从列表中循环读取关注者uid,从集合hascrawl中查uid确定是否存在此uid,如果存在说明已经爬取过作者。如果不存在,则拼接url进入此uid作者主页,进入步骤3。
PS:我写了两个版本的爬虫,一个用MongoDB,一个用MySQL。经过测试发现MongoDB比较吃内存,运行一段时间后写入会变慢。对于本爬虫项目来说还是MySQL比较合适,因为爬虫爬取的作者信息是固定格式,使用关系型数据库比较合适,另外读写也比较稳定。
参考链接
爬虫代码地址