一、基本配置和基础知识
- 安装ipython:进入python安装目录,进入Scripts文件夹,在这个文件夹进入cmd,执行pip install ipython命令即可安装

- 如果出现如下提示,就进入python安装目录,打开cmd执行它所提示的命令


- 为了保险起见,可以重新按照上面的步骤安装ipython,安装成功后,scripts文件夹会多出我们安装的脚本

- 如果安装的包太多,也可以选择执行pip list命令查看安装的包

- 直接使用pip install命令会从默认的https://files.pythonnhosted.org/网站进行下载,这个是国外的网站,会比较慢
- 我们只需要在命令后面加上 -i 国内源地址即可
pip install 包名 -i 国内源地址
pip install ipython -i https://pypi.mirrors.ustc.edu.cn/simple/
阿里云 http://mirrors.aliyun.com/pypi/simple/
中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
豆瓣(douban) http://pypi.douban.com/simple/
清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/
中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/
- 打开Pycharm软件,在设置中的Editor中的File and Code Templates选择.py文件,为其设置模版

- 每次我们创建.py文件时,会自动将其添加

如果我们把互联网比作一张大的蜘蛛网,那一台计算机上的数据便是蜘蛛网上的一个猎物,而爬虫程序就是一只小蜘蛛,沿着蜘蛛网抓取自己想要的数据
- 通过一个程序,根据Url(http://www.taobao.com)进行爬取网页,获取有用信息
- 使用程序模拟浏览器,去向服务器发送请求,获取响应信息
- 爬取网页:爬取整个网页,包含了网页中所有内容,这是你必须会的一步
- 解析数据:将网页中你得到的数据,进行解析。上一步爬取到的整个网页的数据,我们并不是全部都需要,此时需要将我们需要的数据解析出来
- 难点:爬虫和反爬虫之间的博弈。反爬虫就是你找他要数据,他不给你。而我们搞爬虫的如果让他给你数据呢?核心就是找到他不给你数据的原因,只要找到了这个,在爬虫时将其解决,就会给你数据了
例如我们要爬取一个网站的数据,这个网站不给你爬,因为你不是系统开放成员,他需要你有一个内部账号才能访问数据,此时你唯一的办法就是获取内部账号。
- 数据分析/人工数据集:因为这些工作是建立在数据之上的,而爬虫是获取数据的有效手段
- 社交软件冷启动:有些社交软件初期用户不多,会通过爬虫爬取一些其它大社交网站的数据,将这些数据生成为假用户,让我们的社交软件显得不那么冷清清的。
- 舆情监控
- 竞争对手监控
- 下图是前几年爬虫很火的时候,大家写爬虫程序爬取数据的行业占比,可以发现出行数据和社交数据是重灾区

- 通用爬虫:我们不会学习这个,因为这些数据大部分是无用数据
- 使用通用爬虫的实例有: 百度、360、google、sougou等搜索引擎‐‐‐伯乐在线。细心的人可以发现,使用这些搜索引擎搜索东西的时候,重复率很大。而且谁花钱谁放在前面
- 功能: 访问网页‐>抓取数据‐>数据存储‐>数据处理‐>提供检索服务
- robots协议: 一个约定俗成的协议,添加robots.txt文件,来说明本网站哪些内容不可以被抓取,起不到限制作用.自己写的爬虫无需遵守
- 网站排名(SEO):这个也是通用爬虫获取数据大部分是无用数据的原因
- 本来网站排名应该是根据pagerank算法值进行排名(参考个网站流量、点击率等指标)
- 而现在的搜索引擎基本上就是百度竞价排名这一套,你去百度,前面的数据都是广告,非常影响我们的体验
- 缺点
- 抓取的数据大多是无用的
- 不能根据用户的需求来精准获取数据
- 聚焦爬虫:这是我们要研究的重点
- 功能: 根据需求,实现爬虫程序,抓取需要的数据
- 设计思路
- 确定要爬取的url。需要研究如何获取Url
- 模拟浏览器通过http协议访问url,获取服务器返回的html代码。需要研究如何访问
- 解析html字符串(根据一定规则提取需要的数据)。需要研究如何解析
- User‐Agent:中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等
这是我们爬虫的第一道大关,简称UA校验,简单来说,如果我们不做特殊处理,他能识别到我们是假数据,而不是真实的用户
- 代理IP:试想一下,你一个ip一秒钟点击一个网站200次,这显然不是人类用手能干出来的操作。如果你对网站的操作是异于人类的,那么我会封掉你的ip,让你无法进行访问
- 西次代理
- 快代理
- 什么是高匿名、匿名和透明代理?它们有什么区别?
- 使用透明代理,对方服务器可以知道你使用了代理,并且也知道你的真实IP
- 使用匿名代理,对方服务器可以知道你使用了代理,但不知道你的真实IP。
- 使用高匿名代理,对方服务器不知道你使用了代理,更不知道你的真实IP。
- 验证码访问:现在基本上大部分平台都有验证码校验了,有效限制大家爬虫,因为有验证码,你在登录的时候就已经有难度了
- 打码平台
- 云打码平台
- 超级老鹰
- 动态加载网页:网站返回的是js数据,并不是网页的真实数据。这种数据让我们很难爬取有效信息
selenium驱动真实的浏览器发送请求
- 数据加密:将数据加密后返回给你,尤其是ssh加密的,你没有密钥很难解开,这种数据如果你不是内部人员还是不要爬取的好,但是有些网站明明数据不重要,还搞这一出,我们就可以通过分析进行解密爬取
分析js代码
二、Urllib库
根据请求将数据爬取下来
三、解析库
爬取到数据后,里面的大部分数据是我们不需要的,我们要对其进行解析,定位我们需要的数据,将其提取出来
四、Selenium
前面都是用程序去模拟请求获取数据,而这个可以让我们操作真实浏览器去获取数据,不光如此,谷歌浏览器还提供无窗口模式(没有浏览器界面,但是操作了真实的浏览器)
五、request