一,认识爬虫
1、爬虫概念
爬虫是什么?
生活中,爬虫就是爬行的虫子,毛毛虫、蛆、蜘蛛(spider)
蜘蛛网:从任何一端都可以到达任何一端,由很多的节点构成
互联网爬虫。
互联网:从一个地址开始可以到达其它任何地址
a链接 href 网址(url)
互联网爬虫:写一个程序,功能就是打开一个url,从内容中获取我们想要的数据
都有哪些语言可以实现这种功能?
(1)php,号称世界上最美丽的语言。实现的不好,多进程多线程支持的不好
(2)c、c++,学习成本非常高,指针,不是一个好的选择。说你牛x
(3)java语言,爬虫做的不错,是python最主要的对手,java做的不好。java语言代码臃肿,重构成本高,差远了。
(4)python,实现的非常好,号称世界上最优雅的语言,优势,有一个强大框架支撑,scrapy(python语言实现的)
通用爬虫
百度、搜狗、谷歌、360、必应等 搜索引擎
工作:将互联网中所有的数据全部爬取下来,给用户提供检索服务
自己的网站呢?博客,阿里云服务器,放上去了,放到网上了
百度能不能抓取你的网站?
(1)其它网站中设置友情链接
(2)主动提交url,百度开发者
(3)百度会和DNS服务商合作,抓取新的网站
能不能让百度不抓取你的网站?
可以实现,通过robots.txt文件,需要放在网站的根目录,写出来哪些可以抓,哪些不可以抓取。
robots.txt是一个口头协议、君子协议,百度遵从这个协议,你自己写的,你要不要遵从呢?我们不遵从
网站排名(SEO)
(1)page-rank值排名,自己的实力排名
(2)竞价排名,魏泽西事件
缺点:
(1)抓取的很多数据都是没用的
(2)不能根据指定的需求获取数据
聚焦爬虫
概念:根据特定的需求从互联网上爬取指定的数据
网页的共同特点:
(1)一个网页都有自己唯一的url(统一资源定位符)
(2)网页都是html结构的
(3)网页传输使用的都是http协议、https协议
思路:
(1)给我一个url
(2)向这个url发送请求,得到响应(网页内容)
(3)解析网页,提取指定数据
环境:
windows、linux、python3.6、编辑器(pycharm)、sublime
整体内容:
(1)如何发送请求
urllib.request urllib.parse requests
(2)解析数据
正则表达式(都可以)、bs4(html)、xpath(html)、jsonpath(json数据)
(3)采集动态html数据
selenium+phantomjs(大招、绝招)
(4)scrapy,scrapy-redis分布式部署
(5)涉及到爬虫、反爬虫、反反爬虫的技术
核心,理论上:只要浏览器能够访问,那么程序就能访问
实际过程中,参数搞不定,
反爬手段:UA、代理、验证码、动态数据加载、防盗链、懒加载
不好:爬虫要求高 web < 爬虫 < 数据
2、http协议
网站的工作原理
见图形
url详解
http://www.baidu.com:80/index.html?username=goudan&password=123456#lala
协议 主机 端口号 请求资源 请求参数 锚点
锚点:本页面内部的跳转
mysql 3306
redis 6379
mongodb 27017
https 443
ftp 21
ssh 22
http协议
因为代码要模拟发送http请求,所以要学习http协议
图解http协议
http和https的区别
网景公司 Netscape 倒闭了 javascript
Mozilla基金会 火狐浏览器 谷歌浏览器
https://www.cnblogs.com/wqhwe/p/5407468.html
HTTPS和HTTP的区别主要如下:
1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。 钓鱼网站 12306
2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
公钥-私钥
加密,我恨你 md5 base64 秘钥
解密,秘钥
公钥加密的数据,只能私钥解密,私钥加密的数据,只能公钥解密