Python知乎爬虫———爬取用户基本数据到数据库完整代码(萌新版)

前言

大佬勿喷,萌新刚入坑,没有多么正确的词汇,纯自娱自乐,爬虫没有使用scrapy,简单的使用了webdriver selenium,正则表达式,response,xpath对网页数据进行提取。 爬取知乎首先要登录知乎,不然爬取未登录的知乎网页会自动跳转到知乎登录页面,由于知乎的滑动验证未解决(原因:利用selenium模拟浏览器点击输入账号密码后,跳出的滑动验证码需要对图片进行识别处理,知识盲区)用webdriver打开浏览器,一次登录,保存cookies值,跳过了登录步骤,然后进行数据爬取。

本代码主要爬取知乎的用户信息,包括:名字,介绍,居住地,所在行业,职业经历,教育经历,个人简介,回答数,视频量,提问数,文章数,专栏,想法,收藏,个人成就等;
如图:在这里插入图片描述

对知乎页面组成进行分析:

  • 在知乎首页进行开始操作,代码将提取用户事件分为三种情况;
    1、可以提取热点内容下的用户信息
    2、可以直接利用知乎中的搜索框搜索指定用户名的相关信息
    3、利用知乎的搜索框搜索问题,提取问题下用户列表的相关用户信息

  • 然后开始对指定网页的提取,将每一个网页的提取步骤写在一个函数中,多次调用即可;

  • 最后将提取的用户信息保存在excel表中
    注:也可将数据保存在数据库中,详见Python爬虫爬取数据到sqlite数据库实例只需修改保存数据的函数即可

因为代码数目过多代码地址资源已上传

不足:我是按照目标值提取数据的,但是如果数据过多,知乎的页面是需要向下滑动加载的,我参考了别人的很多方法,这里使用的是用js语句模拟滚动条向下滑动。这里有一个硬性问题有待解决:我先加入了一种判断语句,如果下滑到底端就自动停止加载,这就使得如果网络卡顿时,他会自己提前结束加载,导致获取的数据达不到目标值。

如果哪位大佬可以解决,请不吝赐教。

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Python 模拟爬虫抓取知乎用户信息以及人际拓扑关系,使用scrapy爬虫框架,数据存储使用mongo数据库。   本地运行请注意:爬虫依赖mongo和rabbitmq,因此这两个服务必须正常运行和配置。为了加快下载效率,图片下载是异步任务,因此在启动爬虫进程执行需要启动异步worker,启动方式是进入zhihu_spider/zhihu目录后执行下面命令:   celery -A zhihu.tools.async worker --loglevel=info   爬虫项目部署:   进入zhihu_spider后执行```docker-compose up``` ,进入container后和本地运行方法相同,依次启动mongo、rabbitmq、异步任务、爬虫进程即可。   其它需要说明的问题:   爬虫框架从start\_requests开始执行,此部分会提交知乎主页的访问请求给引擎,并设置回调函数为post_login.   post\_login解析主页获取\_xsrf保存为成员变量中,并提交登陆的POST请求,设置回调函数为after\_login.   after\_login拿到登陆后的cookie,提交一个start\_url的GET请求给爬虫引擎,设置回调函数parse\_people.   parse\_people解析个人主页,一次提交关注人和粉丝列表页面到爬虫引擎,回调函数是parse\_follow, 并把解析好的个人数据提交爬虫引擎写入mongo。   parse\_follow会解析用户列表,同时把动态的人员列表POST请求发送只引擎,回调函数是parse\_post\_follow,把解析好的用户主页链接请求也发送到引擎,人员关系写入mongo。   parse\_post\_follow单纯解析用户列表,提交用户主页请求至引擎。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值