大佬程序员用python在知乎爬取MM的信息,太棒了!

Alexantao 2018-03-10

大佬程序员用python在知乎爬取MM的信息,太棒了!

爬虫涉及的技术包括但不限于熟练一门编程语言(这里以 Python 为例) HTML 知识、HTTP 协议的基本知识、正则表达式、数据库知识,常用抓包工具的使用、爬虫框架的使用、涉及到大规模爬虫,还需要了解分布式的概念、消息队列、常用的数据结构和算法、缓存,甚至还包括机器学习的应用,大规模的系统背后都是靠很多技术来支撑的。下面这里有视频来看下python爬虫的重要性:数据分析、挖掘、甚至是机器学习都离不开数据,而数据很多时候需要通过爬虫来获取Python有很多开源工具包供我们使用,我这里使用了requests、BeautifulSoup4、json等包。requests模块帮助我们实现http请求,bs4模块和json模块帮助我们从获取到的数据中提取一些想要的信息,几个模块的具体功能这里不具体展开。下面我分功能来介绍如何爬取知乎。

模拟登录

要想实现对知乎的爬取,首先我们要实现模拟登录,因为不登录的话好多信息我们都无法访问。下面是登录函数,这里我直接使用了知乎用户fireling的登录函数,具体如下。其中你要在函数中的data里填上你的登录账号和密码,然后在爬虫之前先执行这个函数,不出意外的话你就登录成功了,这时你就可以继续抓取想要 的数据。注意,在首次使用该函数时,程序会要求你手动输入captcha码,输入之后当前文件夹会多出cookiefile文件和zhihucaptcha.gif,前者保留了cookie信息,后者则保存了验证码,之后再去模拟登录时,程序会自动帮我们填上验证码。

大佬程序员用python在知乎爬取MM的信息,太棒了!

需要注意的是,在login函数中有一个全局变量s=reequests.session(),我们用这个全局变量来访问知乎,整个爬取过程中,该对象都会保持我们的持续模拟登录

scrapy 原理

在写过几个爬虫程序之后,我们就会知道,利用爬虫获取数据大概的步骤:

  • 请求网页。

  • 获取网页。

  • 匹配信息。

  • 下载数据。

  • 数据清洗。

  • 存入数据库。

scrapy 是一个很有名的爬虫框架,可以很方便的进行网页信息爬取。那么 scrapy 到底是如何工作的呢?之前在网上看了不少 scrapy 入门的教程,大多数入门教程都配有这张图。

大佬程序员用python在知乎爬取MM的信息,太棒了!

也不知道是这张图实在太经典了,还是程序员们都懒得画图,我第一次看到这个图的时候,心情是这样的。

大佬程序员用python在知乎爬取MM的信息,太棒了!

经过了一番深入的理解,大概知道这幅图的意思,让我来举个栗子(是的,我又要举奇怪的栗子了):

大佬程序员用python在知乎爬取MM的信息,太棒了!

scrapy 原理图之我要吃好吃的

当我们想吃东西的时候,我们会出门,走到街上,寻找一家想吃的店,然后点餐,服务员再通知厨房去做,最后菜到餐桌上,或者被打包带走。这就是爬虫程序在做的事,它要将所有获取数据需要进行的操作,都写好。

而 scrapy 就像一个点餐 APP 一般的存在,在订餐列表(spiders)选取自己目标餐厅里想吃的菜(items),在收货(pipeline)处写上自己的收货地址(存储方式)。

下面的函数get_userInfo(userID)实现了爬取一个知乎用户的个人信息,我们传递给该用户一个用户ID,该函数就会返回一个 list,其中包含昵称、ID、居住地、所在行业、性别、所在公司、职位、毕业学校、专业、赞同数、感谢数、提问数、回答数、文章数、收藏数、公共编辑数量、关注的人数、被关注的人数、主页被多少个人浏览过等19个数据。

大佬程序员用python在知乎爬取MM的信息,太棒了!

大佬程序员用python在知乎爬取MM的信息,太棒了!

大佬程序员用python在知乎爬取MM的信息,太棒了!

请点击此处输入图片

作为一个 Python 程序员,要如何找到小姐姐,避开暴击伤害,在智中取胜呢?于是就有了以下的对话:描述

大佬程序员用python在知乎爬取MM的信息,太棒了!

大佬程序员用python在知乎爬取MM的信息,太棒了!

大佬程序员用python在知乎爬取MM的信息,太棒了!

用 Python 写爬虫。首先需要会 Python,把基础语法搞懂,知道怎么使用函数、类、list、dict 中的常用方法就算基本入门。入门爬虫,学习正则表达式并不是必须的,你可以在你真正需要的时候再去学,比如你把数据爬取回来后,需要对数据进行清洗,当你发现使用常规的字符串操作方法根本没法处理时,这时你可以尝试了解一下正则表达式,往往它能起到事半功倍的效果。Python 的 re 模块可用来处理正则表达式。

好了,今天就分享到这里,关于怎么学好python爬虫,欢迎在下面评论区留言和小编交流,留言有惊喜哦!

视频加载中...

相关推荐