一,数据的来源
1 企业生产的用户数据
2 数据管理咨询公司
3 政府/机构提供的公开的数据
4 第三方数据平台购买数据
5 爬虫爬取数据
二爬虫分类
根据使用场景,网络爬虫可分为 通用爬虫 和 聚焦爬虫 两种.
通用爬虫
通用爬虫:搜索引擎用的爬虫系统。搜索引擎和web服务商提供的爬虫。
目标:
就是尽可能的;把互联网上的所有的网页下载下来,放到本地服务器里形成备分,在对这些网页做相关处理(提取关键字、去掉广告),最后提供一个用户检索接口。
抓取流程:
首先选取一部分URL,把这些URL放到待爬取队列。
从队列取出URL,然后解析DNS得到主机IP,然后保存这个IP对应的服务器里下载HTML页面,保存到搜索引擎的本级服务器,之后把这个爬过的url放入已爬过的队列。
分析这些网页内容,找出网页里其他的URL链接,继续执行第二步,直到爬取结束
搜索引擎如何获取一个新网站的URL:
a)主动向搜索引擎提交网站
B)在其他网站里设置外联
C)索引擎会和DNS服务商服务商进行合作,可以快速收录新的网站
DNS把域名解析成IP的一种技术。
通用爬虫并不是万物皆可爬取,他也要遵循规则:
Robots协议:协议会指明通用爬虫可以爬取网页的权限(告诉搜索引擎那些可以抓取,那些不可以抓取)
Robots.txt 并不是所有的爬虫都遵守,一般只有大型的搜索引擎爬虫才会遵守
存在位置:robots.txt文件应该放置在网站根目录下
例如:https://www.taobao.com/robots.txt
通用爬虫工作流程:
爬取网页 存储数据 内容处理 提供检索/排名服务
搜索引擎排名:
PageRank值:根据网站的流量(点击量/浏览量/人气)统计,流量越高,网站排名越靠前。
竞价排名:谁给的钱多,谁排名就高。
通用爬虫的缺点:
只能提供和文本相关的内容(HTML、Word、PDF)等等,但是不能提供多媒体文件(音乐、图片、视频)和二进制文件(程序、脚本)
提供的结果千篇一律,不等针对不同背景领域的人提供不同的搜索结果
不能提供人类语义上的检索
通用搜索引擎的局限性
通用搜索引擎所返回的网页里90%的内容无用。
中文搜索引擎自然语言检索理解困难
信息占有量和覆盖率存在局限。
搜索引擎最主要的还是以关键字搜索为主,对于图片、数据库、音频、视频多媒体的内容通用搜索引擎无能为力。
搜索引擎的社区化和个性化不好,大多数搜索引擎没有考虑人的地域,性别,年龄的差别
搜索引擎抓取动态网页效果不好
解决通用爬虫的缺点,聚焦爬虫出现了。
聚焦爬虫
聚焦爬虫:爬虫程序员写的针对某种内容爬虫。
面向主题爬虫、面向需求爬虫:会针对某种特定的能容去爬取信息,而且保证内容需求尽可能相关。
三,HTTP和HTTPS的基本概念和区别
HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。
HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。
HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,于是设计了SSL(Secure Sockets Layer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。简单来说,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。
HTTPS和HTTP的区别主要如下:
https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
常用HTTP状态码
100~199:信息状态码,表示成功接收请求,要求客户端继续提交下一次请求才能完成整个处理过程 , 100(continue)继续发送
200~299:成功状态码,表示成功接收请求并已完成整个处理过程,常用200(OK)成功接收
300~399:重定向状态码,例如,请求的资源已经移动一个新地址,常用302、307和304
400~499:客户端的请求有错误,常用404(Not Found),403(Fobidden)
500~599:服务器端出现错误,常用 500
200 - 请求成功
301 - 资源(网页等)被永久转移到其它URL
400 客户端请求的语法错误,服务器无法理解
401 请求要求用户的身份认证
404 请求的资源(网页等)不存在
500 - 内部服务器错误
四,requests的一些基础知识
安装requests模块: pip install requests
核心代码: 发送get请求
response = requests.get(url)
response = requests.post(url,data=data)
response的常用属性:
response.text
respones.content 二进制形式的响应数据
response.status_code 响应状态吗
response.headers 响应头
response.request.headers 请求头
response.text 和response.content的区别
response.text
类型:str
解码类型: 根据HTTP头部对响应的编码作出有根据的推测,推测的文本编码
如何修改编码方式:response.encoding=”utf8”
response.content
类型:bytes
解码类型: 没有指定
如何修改编码方式:response.content.deocde(“utf8”)
更推荐使用response.content.deocde()的方式获取响应的html页面