Python 爬虫专栏大数据 爬虫Python AI SqlPython数据采集与爬虫

Python 爬虫爬取简书作者信息

2017-12-15  本文已影响128人  全栈coder
目标:
爬取简书的作者信息
步骤:
1.随便进入一个作者页面
2.提取作者信息,包括头像,昵称,关注数,粉丝数,文章数,字数,收获喜欢数
3.进入粉丝列表,爬取所有粉丝的信息
4.进入关注列表,爬取所有关注者的信息
5.从列表中选择一个用户,进入其主页,从步骤3开始循环爬取
环境:
Python3.6,MongoDB,windows7 

代码地址:https://github.com/daocaoren1111/jianshuspider

不明白的可以私信我

详细步骤

01.png

分析如下:

所有的作者主页链接都是 www.jianshu.com + users + uid + followers 模式,其中最关键的就是uid部分,每个作者的uid都是不同的。我们使用python的Requests库获取页面,然后使用Beautifulsoup解析页面文档

02.png QQ截图20171215160501.png
  1. 打开浏览器的调试台,使用Beautifulsoup的语法将作者的信息
    提取出来,将其组成一个字典,以uid为主键随后写入MongoDB的
    user集合中。
  2. 使用request.urlretrieve()函数将图片保存在磁盘中
03.png 分页url.png
  1. 值得注意的是,简书规定最多只能查看900个粉丝信息,其余的就不显示了,所以我们首先通过粉丝数计算页数,因为每页可以展示9个人的信息,所以最多循环100组提取信息。
  2. 同样将每个粉丝的信息写入到MongoDB的user集合中。
关注列表.png
  1. 同上一步一样,循环获取信息写入MongoDB
  2. 定义一个列表,将所有关注者的uid写入列表

1.在MongoDB在新建一个集合hascrawl,每爬一个作者将其uid写入集合中。

  1. 从列表中循环读取关注者uid,从集合hascrawl中查uid确定是否存在此uid,如果存在说明已经爬取过作者。如果不存在,则拼接url进入此uid作者主页,进入步骤3。

PS:我写了两个版本的爬虫,一个用MongoDB,一个用MySQL。经过测试发现MongoDB比较吃内存,运行一段时间后写入会变慢。对于本爬虫项目来说还是MySQL比较合适,因为爬虫爬取的作者信息是固定格式,使用关系型数据库比较合适,另外读写也比较稳定。
参考链接
爬虫代码地址

上一篇 下一篇

猜你喜欢

热点阅读