什么是爬虫
哪些语言可以实现爬虫
1.php:可以实现爬虫。php被号称是全世界最优美的语言(当然是其自己号称的,就是王婆卖瓜的意思),但是php在实现爬虫中支持多线程和多进程方面(对异步数据的爬取封装的不够好)做的不好。
2.java:可以实现爬虫,比较主流的实现爬虫语言。java可以非常好的处理和实现爬虫,是唯一可以与python并驾齐驱且是python的头号劲敌。但是java实现爬虫代码较为臃肿,重构成本较大。
3.c、c++:可以实现爬虫,偏底层的编程语言,对爬虫的模块封装的不够多。但是使用这种方式实现爬虫纯粹是是某些人(大佬们)能力的体现,却不是明智和合理的选择。
4.python:可以实现爬虫,比较主流的实现爬虫语言。python实现和处理爬虫语法简单,代码优美,支持的模块繁多,学习成本低,具有非常强大的框架(scrapy等)且一句难以言表的好!没有但是!
爬虫的分类
- 1.通用爬虫:通用爬虫是搜索引擎(Baidu、Google、Yahoo等)“抓取系统”的重要组成部分。主要目的是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份。 简单来讲就是尽可能的;把互联网上的所有的网页下载下来,放到本地服务器里形成备分,在对这些网页做相关处理(提取关键字、去掉广告),最后提供一个用户检索接口。
- 搜索引擎如何抓取互联网上的网站数据?
- 门户网站主动向搜索引擎公司提供其网站的url
- 搜索引擎公司与DNS服务商合作,获取网站的url
- 门户网站主动挂靠在一些知名网站的友情链接中
2.聚焦爬虫:聚焦爬虫是根据指定的需求抓取网络上指定的数据。例如:获取豆瓣上电影的名称和影评,而不是获取整张页面中所有的数据值。
robots.txt协议
反爬虫
反反爬虫
- 什么是requests模块
- requests模块是python中原生的基于网络请求的模块,其主要作用是用来模拟浏览器发起请求。功能强大,用法简洁高效。在爬虫领域中占据着半壁江山的地位。
- 为什么要使用requests模块
- 因为在使用urllib模块的时候,会有诸多不便之处,总结如下:
- 手动处理url编码
- 手动处理post请求参数
- 处理cookie和代理操作繁琐
- ......
- 使用requests模块:
- 自动处理url编码
- 自动处理post请求参数
- 简化cookie和代理操作
- ......
- 如何使用requests模块
- 安装:
- pip install requests
- 使用流程
- 指定url
- 基于requests模块发起请求
- 获取响应对象中的数据值
- 持久化存储
流程示例
备注:爬去的代码可能样式会丢失,不影响页面数据。
- 通过5个基于requests模块的爬虫项目对该模块进行学习和巩固
- 基于requests模块的get请求
- 需求:爬取搜狗指定词条搜索后的页面数据
- 基于requests模块的post请求
- 需求:登录豆瓣电影,爬取登录成功后的页面数据
- 基于requests模块ajax的get请求
- 需求:爬取豆瓣电影分类排行榜 https://movie.douban.com/中的电影详情数据
- 基于requests模块ajax的post请求
- 需求:爬取肯德基餐厅查询http://www.kfc.com.cn/kfccda/index.aspx中指定地点的餐厅数据
- 综合练习
- 需求:爬取搜狗知乎指定词条指定页码下的页面数据
需求:爬取搜狗指定词条搜索后的页面数据。
示例1
示例2
需求:登录豆瓣电影,爬取登录成功后的页面数据。
示例1
需求:爬取豆瓣电影分类排行榜 https://movie.douban.com/中的电影详情数据。
示例1
备注:参数中的start和limit参数是可以修改的。
爬取肯德基餐厅查询http://www.kfc.com.cn/kfccda/index.aspx中指定地点的餐厅数据。
示例1
需求:爬取搜狗知乎指定词条指定页码下的页面数据。
代理ip:http://www.goubanjia.com/
示例1
数据解析三种方式
引言:回顾requests实现数据爬取的流程
- 指定url
- 基于requests模块发起请求
- 获取响应对象中的数据
- 进行持久化存储
其实,在上述流程中还需要较为重要的一步,就是在持久化存储之前需要进行指定数据解析。因为大多数情况下的需求,我们都会指定去使用聚焦爬虫,也就是爬取页面中指定部分的数据值,而不是整个页面的数据。因此,本次课程中会给大家详细介绍讲解三种聚焦爬虫中的数据解析方式。至此,我们的数据爬取的流程可以修改为:
- 指定url
- 基于requests模块发起请求
- 获取响应中的数据
- 数据解析
- 进行持久化存储
1、正解解析
- 常用正则表达式回顾:
正则表达式规则
规则练习
项目需求:爬取糗事百科指定页面的糗图,并将其保存到指定文件夹中
正则解析案例
2、Xpath解析
测试页面数据:
测试页面数据
常用xpath表达式回顾:
常用xpath表达式回顾
代码中使用xpath表达式进行数据解析:
安装xpath插件在浏览器中对xpath表达式进行验证:可以在插件中直接执行xpath表达式:
项目需求:获取好段子中段子的内容和作者 http://www.haoduanzi.com:
3、BeautifulSoup解析
环境安装:
遇到错误解决办法:AttributeError: module 'pip' has no attribute 'main':
解决办法
备注:文件名不能命名为bs4.py的文件,因为与内置的包文件重名,运行时会报错。
基础使用:
需求:使用bs4实现将诗词名句网站中三国演义小说的每一章的内容爬去到本地磁盘进行存储
http://www.shicimingju.com/book/sanguoyanyi.html
示例1
引言:有些时候,我们在使用爬虫程序去爬取一些用户相关信息的数据时,如果使用之前requests模块常规操作时,往往达不到我们想要的目的。写入到文件中的数据,不是个人页面的数据,而是人人网登陆的首页面。
- cookie概念:当用户通过浏览器首次访问一个域名时,访问的web服务器会给客户端发送数据,以保持web服务器与客户端之间的状态保持,这些数据就是cookie。
- cookie作用:我们在浏览器中,经常涉及到数据的交换,比如你登录邮箱,登录一个页面。我们经常会在此时设置30天内记住我,或者自动登录选项。那么它们是怎么记录信息的呢,答案就是今天的主角cookie了,Cookie是由HTTP服务器设置的,保存在浏览器中,但HTTP协议是一种无状态协议,在数据交换完毕后,服务器端和客户端的链接就会关闭,每次交换数据都需要建立新的链接。就像我们去超市买东西,没有积分卡的情况下,我们买完东西之后,超市没有我们的任何消费信息,但我们办了积分卡之后,超市就有了我们的消费信息。cookie就像是积分卡,可以保存积分,商品就是我们的信息,超市的系统就像服务器后台,http协议就是交易的过程。
- 经过cookie的相关介绍,那应该如何抓取到个人信息页呢?
思路:
1.我们需要使用爬虫程序对人人网的登录时的请求进行一次抓取,获取请求中的cookie数据;
2.在使用个人信息页的url进行请求时,该请求需要携带 1 中的cookie,只有携带了cookie后,服务器才可识别这次请求的用户信息,方可响应回指定的用户信息页数据。
1)无验证码操作:
2)带验证码操作(云打码):
推荐打码平台:http://www.yundama.com/
需要注册两个身份,一个是普通用户,一个是开发者;
开发者身份登录,在开发文档页面,点击调用示例及最新DLL,选择PythonHTTP调用示例下载’;
示例下载好后进行解压;
开发者身份登录,在我的软件页面-添加新软件-输入软件名称(软件密钥为自动生成),如下图:
登录普通用户中的题分价格页面,也可输入网址“http://www.yundama.com/price.html”,查看不同验证码类型;
然后将云打码中封装好的类导入代码,在使用示例中的流程。
封装的云打码类
- 什么是代理
- 代理就是第三方代替本体处理相关事务。例如:生活中的代理:代购,中介,微商......
- 爬虫中为什么需要使用代理
- 一些网站会有相应的反爬虫措施,例如很多网站会检测某一段时间某个IP的访问次数,如果访问频率太快以至于看起来不像正常访客,它可能就会会禁止这个IP的访问。所以我们需要设置一些代理IP,每隔一段时间换一个代理IP,就算IP被禁止,依然可以换个IP继续爬取。
- 代理的分类:
- 正向代理:代理客户端获取数据。正向代理是为了保护客户端防止被追究责任。
- 反向代理:代理服务器提供数据。反向代理是为了保护服务器或负责负载均衡。
- 免费代理ip提供网站
- http://www.goubanjia.com/
- 西祠代理
- 快代理
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/26272.html