爬虫速成(一):前言

文档配套视频

https://www.bilibili.com/video/BV1Pr4y1w7rW/

什么是爬虫

网络爬虫(又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。

当然,上面的是百度百科的解释。大家肯定在学习python的时候听说过这个名词!(或者是现在才听到?)到了21世纪,经过爬虫工作人员与反爬虫工作人员的不断交火,爬虫技术已经十分成熟,python中有许许多多的库,例如:urllib、requests、webdriver,也有许多框架,例如:scrapy、pyspider(中国人写的哦!),爬虫的实际就是模拟浏览器获取网络资源 ,就看你模拟的像不像了,不像就完蛋蛋喽。

当我们需要大量获取网络资源或者是为了自己的便利来获取一些资源的时候,我们就可以使用爬虫,
比如说:下载书籍、音乐、视频、调用API、或者是根据自己的需求来设计


爬虫的分类

最常见的就是爬取网页资源,因为好访问、好解析嘛,但其实也可以爬取手机app、电脑app资源(以后会做介绍)

根据爬取资源类型分类:

  • 二进制数据:视频、音频、图片等
  • 文本数据

根据被爬取的设备分类:

  • 网页爬虫
  • 手机app爬虫
  • 电脑应用爬虫
  • 小程序爬虫
  • …等等

根据爬虫使用分类:

  • 程序爬虫:python、java、R
  • 应用爬虫:集搜客、八爪鱼、火车头采集器、后羿采集器等等(阿里公司正在开发自己的爬虫应用,等以后出来了会和大家分享)

为什么学爬虫

满足自我需求

首先呢,学了爬虫我们可以很方便的满足自己的需求,也许当前不需要,但是等你需要的时候你会啊,哪有那么多需求是你学完就恰好直接能用得上的。

其实这个,需要你保持一颗好奇心

搞钱

当然是!!!有钱途 啊。

市场有需求吗?you啊!我们有技术吗?马上就快有了啊!!!有市场,有技术,那还会有什么?you钱啊,我们可以make money啦!

当我们学了最基本的爬虫,了解了爬虫的基本步骤,我们就可以去接单了啊!而且爬虫程序都是100起步的哦。

其他

撩妹??

因为牛批?

说出去帅!!!


爬虫的基本步骤

对于爬虫大概分为三步:

  • 数据采集
  • 数据清洗
  • 数据存储

本专栏(爬虫速成)会针对这三部分介绍又好用、又简单的第三方库或实用工具,后期会在这个博客专栏添加一些拓展、进阶知识,大家有什么需要也可以和我留言,期待共同进步!

其实在我们拿到数据之后,还可以对数据可视化,但是可视化是python单独的一个领域,在此不做过多介绍,大家可以参考我的matplotlib教程(点击跳转),做一些基本的图形哦!(或者参考其他博主的也可以…)


对python要求高吗?

其实我们刚开始写的时候,都是面向过程的(没听过这个词就当没看到哈),语法很简单,等到后面进阶,我们会学习许多知识。

关于爬虫的学习,一句话,入门简单,学精很难!

对于不同阶段,在这里写一下最基本的要求。

入门阶段:

  • 会使用鼠标、键盘,并且会创建python脚本文件
  • 会使用python的for循环、会使用if语句、print
  • 会使用浏览器,能使用百度搜索问题

初级阶段:

  • 会调用函数、编写函数
  • 掌握requests、xpath、webdriver、正则最基本的用法
  • 可以提取json数据
  • 会将数据存入到Excel表格、csv文件中
  • 会使用os库创建文件夹

中级阶段:

  • 了解python多线程,会写多线程爬虫
  • 会使用python操作数据库,MySQL、MongoDB、SQLite最起码选一个吧?

进阶阶段:

  • 了解Fiddler、Proxifier
  • 可以对小程序、手机应用进行爬取
  • 可以破解验证码
  • 会进行js解密
  • 可以判断网站加密方式并制定解决方案
  • 写一个淘宝爬虫

一些爬虫小程序

官方说我违规,我就删了几个

爬取李清照诗集

#110首
import requests
import re
count=0
with open('李清照诗词集.md','w',encoding='utf-8') as fp:
    for i in range(1,12):
        print('正在爬取第%d页'%i)
        url='https://so.gushiwen.org/authors/authorvsw.aspx?page='+str(i)+'&id=9cb3b7c0e4a0'
        response=requests.get(url).text
        # print(response)
        poem_title_list=re.findall('