本项目实现了对知乎用户信息的爬取,并没有用数据库等,只是简单地用一些提取了一些字段然后存储在了一个csv文件中,但是同样可以实现无线爬取,理论上可以实现万级数据的爬取(当然取决于网速了)

其实想爬取知乎网站是不需要进行登录的,通过一个个人账号就可以直接进行爬取了。

事先准备:要求不多,其实掌握了基本的scrapy爬虫编写的方式就可以了,当然对python的基本语法要有了解,还有就是一定的逻辑处理能力。

好了,我们来开始进行项目的解析:
我们首先从一个 个人账户的首页进行解析数据,比如我们最爱的——轮子哥

两个箭头的位置使我们接下来要重点分析的地方,我们要爬取的就是轮子哥的详细信息,我们打开开发者工具,找到页面的源码,找出轮子哥的详细信息在源码中的位置

我用的fiddler找到请求,在响应中,我发现轮子哥的详细信息都在一个data-state的变量中,而且变量明显是一个json类型的数据("是双引号),那我们接下来就是提取这个json数据中我们需要的数据
第一步:把json数据提取出来,用正则表达式re提取json数据

 x = response.body.decode('utf-8')# 用utf8解码响应的数据流y = re.search('data-state="({.*?})"', x).group(1).replace('"', '"')# 用re提取json数据,并用双引号"替换"字符

经过上面一步就是y就是一个标准的json数据了,那接下来在这个数据中找信息,这么乱怎么找?
我们可以用一个json在线解析,将json数据进行格式化,如图:

这里只用把json数据放进去就可以自动化在右边输出一个json格式的数据。接下来我们就只剩下解析json数据了。这个应该不难吧!
其实代码的大部分就是一个解析json’数据的过程,用json.loads方法将json数据转化为python字典的形式,然后用字典的方法提取我们想要的信息,明显几乎所有的信息都在users这个键里面。

好了,提取完了轮子哥的基本信息,这是一个魔伴,我们是要提取所有人的信息,所以要实现一个循环,让虫子爬,顺着轮子哥的关注的人爬,然后再爬,一直爬!!!
这就是一个逻辑的问题。

我们再来分析一下我们的start_urls,https://www.zhihu.com/people/excited-vczh/activities 这个链接我们改变的只有一个exci-vczh,也就是说每个人的主页都是这样组成的,那么我们怎么拿到这个东西呢?

好,我们再分析一下那个json数据

可以看到那个urlToken关键字所对应的值刚好使我们需要的字段,那么没话说,我们需要去找到其他人的这个urlToken。找谁的呢,我们来找轮子哥关注的人的


我们点击轮子哥关注的人,然后跳转页面,然后检查页面!
和前面一步一样,我们在这个页面的响应内容里面仍能找到一个data-state变量,也是存储了一个json的数据,我们提取这个数据,然后再json解析器中解析就能找到他关注的人的urlToken,好了,我们接下来只要用URLToken进行替换就可以了!
逻辑代码贴出来:

    def parse_fellow(self,response):x = response.body.decode('utf-8')y = re.search('data-state="({.*?})"', x).group(1).replace('"', '"')dict_y = json.loads(y)users = dict_y.get('entities').get('users')for user in users.keys():urlToken = users.get(user).get('urlToken')url = 'https://www.zhihu.com/people/{}/activities'.format(urlToken)yield scrapy.Request(url=url,callback=lambda response,name=urlToken: self.parse_urlToken(response,name))
# 当解析函数有多个参数时,我们就可以用这种方式专递多个参数了!

这样我们基本上完成了知乎的递归爬取信息,似乎是一个广度优先的爬取方式
由于我们这次只是简单的爬取,就不用数据库了,直接存进一个csv文件中

scrapy crawl zhuhuspider -o zhuhu_massage.csv

这样运行起来,我们就可以在文件中找到爬取的数据了!,贴图!!!!
我怕去的字段有:
school_and_major = Field() # 学校和专业
id = Field() # id
favoriteCount = Field()
voteupCount = Field()
headline = Field()
urlToken = Field()
employments = Field()
job_and_company = Field() # 公司和职位

这就是今天的知乎爬虫项目,可以无限爬取,不过图书馆网速比较慢,所以一个小时只爬取了1500条数据,然后就强行终止程序了!

源码就不给了,因为复制了就可以直接运行,可能会给网站造成一定的压力!
对了,强行加一张图!!!

scrapy实战项目(简单的爬取知乎项目)相关推荐

  1. python3 scrapy实战(简单实现爬取下载图片原理)

    这篇scrapy简单实现爬取并下载图片文章是为了后面一篇图片数据分析文章收集数据,后面我将做一个图片数据分析以及算法,这里顺便在复习一下之前学的scrapy语法以及原理,也是为了做个笔记和分享经验. ...

  2. 使用Scrapy、PhantomJS和Selenium爬取知网文献摘要

    使用Scrapy.PhantomJS和Selenium爬取知网文献摘要.以下例子用于爬取"医药卫生科技"类文献摘要. 1.使用Scrapy创建项目 scrapy startproj ...

  3. python爬虫实战(一)--爬取知乎话题图片

    原文链接python爬虫实战(一)–爬取知乎话题图片 前言 在学习了python基础之后,该尝试用python做一些有趣的事情了–爬虫. 知识准备: 1.python基础知识 2.urllib库使用 ...

  4. php 爬取股票数据库,爬虫框架Scrapy实战一——股票数据爬取

    简介 目标: 获取上交所和深交所所有股票的名称和交易信息. 输出: 保存到文件中. 技术路线:Scrapy爬虫框架 语言: python3.5 由于在上一篇博客中已经介绍了股票信息爬取的原理,在这里不 ...

  5. scrapy框架的简单使用——爬取当当网图书信息

    ** Scrapy爬取当当网图书信息实例 --以警察局办案为类比 ** 使用Scrapy进行信息爬取的过程看起来十分的复杂,但是他的操作方式与警局办案十分的相似,那么接下来我们就以故事的形式开始Scr ...

  6. Python3爬虫项目集:爬取知乎十几万张小姐姐美图

    文章目录 前言 注意点 代码实例 前言 github:https://github.com/pasca520/Python3SpiderSet 知乎上有很多钓鱼贴,也成功的钓上了很多鱼,你懂的~~~ ...

  7. python爬虫实战(2)——爬取知乎热榜内容

    文章目录 一.前期准备 1.获取headers 2.查看网页源代码 二.python代码实现 1.解析网页 2.获取标签 3.完整代码 三.最终结果 一.前期准备 1.获取headers 登录知乎官网 ...

  8. java爬虫实战——实现简单的爬取网页数据

    故事的开头 虽然我们程序员不干爬虫的活,但是工作中确实偶尔有需要网络上的数据的时候,手动复制粘贴的话数据量少还好说,万一数据量大,浪费时间不说,真的很枯燥. 所以现学现卖研究了一个多小时写出了个爬虫程 ...

  9. python爬虫实战(1)——爬取知乎热门回答图片

    文章目录 一.前期准备 1.查看网页源代码 2.看图片在什么位置 二.python代码实现 1.解析网页 2.获取问题标题 3.获取回答者信息 4.图片保存到本地 5.完整代码 三.最终结果 一.前期 ...

最新文章

  1. 《机器学习技法》---模型聚合
  2. Web认证及API的 使用TOKEN的一些思考
  3. AtCoder AGC022E Median Replace (字符串、自动机、贪心、计数)
  4. PHP单例模式(精讲)
  5. python集合的两种类型_python 入门之 – 集合类型(十九)
  6. 智能传感器产业三年行动指南
  7. c语言编写界面图形表示,「分享」C语言如何编写图形界面
  8. 30天自制操作系统 pdf_30天自制操作系统-汇编实现初版镜像
  9. 【Matlab】mat2cell用法
  10. navicat 10.1.7 注册码
  11. 【网络工程师】<软考中级>IP子网划分
  12. Python股票量化交易(一)
  13. 如何恢复误删的注册表
  14. 舒淇放下黎明战胜抑郁 自称没责任感且不会结婚q1h
  15. 阿里云 Teambition 网盘亲测体验,秀翻全网!
  16. java调用OPC-DA出现0x00000005错误
  17. 有钱任性的瑞幸,谁是它的对手? | Alfred数据室
  18. 银联商务MISPOS接口开发demo 需要调用POSINF.DLL
  19. ffmpeg中的时间 DTS、PTS、AV_TIME_BASE、AV_TIME_BASE_Q 介绍
  20. selenium模块 浏览器操作相关

热门文章

  1. 还爱着你心中曾经那朵红玫瑰吗?
  2. 3-33在图 3-31中,以太网交换机有6个接口,分别接到5台主机和一个路由器。在下面表中的“动作”一栏中,表示先后发送了4个帧。假定在开始时,以太网交换 机的交换表是空的。试把该表中其他的栏目都填写
  3. 以不变应万变:因果启发的稳定学习年度研究进展(上篇)
  4. 如何给刚刚出厂的服务器配置IP地址(华为RH2288 v3)
  5. Hexo添加Live2D看板娘最新教程
  6. 壹沓科技签约全球快消品牌巨头保乐力加,为企业数智化升级注入新动能
  7. 话说软件破解:道高一尺魔高一丈
  8. 示例填充图片_用示例解释洪水填充算法
  9. 扫描普通二维码,进入微信小程序
  10. 643 · 最长绝对文件路径