“大数据时代” 数据获取的方式
-
企业生产的用户数据:大型互联网公司有海量用户
-
互联网数据指数
百度指数:http://index.baidu.com/
阿里指数:http://index.1688.com/
腾讯指数:http://tbi.tencent.com/
微博指数:http://data.weibo.com/index
-
数据管理咨询公司
-
艾瑞咨询:http://www.mckinsey.com.cn/
-
麦肯锡咨询: http://www.mckinsey.com.cn/
-
埃森哲咨询:https://www.accenture.com/cn-zh/
-
政府/机构提供的公开数据:政府通过各地政府统计上报的数据进行合并;机构都是权威的第三方网站。
中华人民共和国国家统计局数据:http://data.stats.gov.cn/
世界银行公开数据: https://data.worldbank.org.cn/
纳斯达克股票市场: http://www.nasdaq.com/zh
联合国数据: http://data.un.org/
-
第三方数据平台购买数据
数据堂:http://www.datatang.com/
贵阳大数据交易所:http://www.gbdex.com/website/
iData:http://www.idataapi.cn/
数据智汇:http://www.shujuzhihui.cn/apis
-
爬虫爬取数据: 从互联网上定向采集数据。
爬虫
- 爬虫:就是抓取网页数据的程序。
- 搜索引擎: 百度,谷歌
- 反爬虫和反反爬虫。
- 只要人能看到的,爬虫都可以获取, 反爬虫一定是爬虫胜利。
网络请求与响应
- 网络协议
- HTTP : 超文本标记语言
- HTTP协议(Protocol) 是一种发布和接收 HTML页面的方法。
- HTTPS(Hypertext Transfer Protocol over Secure Socket Layer)简单讲是HTTP的安全版,在HTTP下加入SSL层。
- SSL 安全套接(Socket)层
- HTTP 端口号: 80
- HTTPS 端口号: 443
- FTP SFTP : 21 22
- Mysql 3306
- Fiddler 8888
HTTP通信
- 网址(域名) -》 DNS服务器 (网址与IP地址的映射)-》 IPv4地址 (283.22.11.33)。
- 由两部分组成: 客户端请求消息 与 服务器响应消息
- URL : 统一资源定位符
- 本格式:scheme://host[:port#]/path/…/[?query-string][#anchor]
scheme:协议(例如:http, https, ftp)
host:主机名, 服务器的IP地址或者域名
port#:服务器的端口(如果是走协议默认端口,缺省端口80)
path:访问资源的路径
query-string:参数,发送给http服务器的数据
anchor:锚点(跳转到网页的指定锚点位置)
https://kuaibao.jd.com/article?id=223862561
http://api.vcaomao.com/#indexW
https://capital.iresearch.com.cn/index.html
HTTP请求报文
-
http 报文结构
-
Connection:表示客户端与服务连接类型 keep-alive在很多情况下能够重用连接,减少资源消耗,缩短响应时间,比如当浏览器需要多个文件时(比如一个HTML文件和相关的图形文件),不需要每次都去请求建立连接。
-
Upgrade-Insecure-Requests: 升级为HTTPS请求
Upgrade-Insecure-Requests:升级不安全的请求,意思是会在加载 http 资源时自动替换成 https 请求,让浏览器不再显示https页面中的http请求警报。
-
用户代理(客户端浏览器的名称): ******
- User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36
-
Accept : 传输文件类型
-
Referer : 页面跳转处 表明产生请求的网页来自于哪个URL,用户是从该 Referer页面访问到当前请求的页面。这个属性可以用来跟踪Web请求来自哪个页面,是从什么网站来的等。
-
Accept-Encoding(文件编解码格式)
-
Accept-Language(语言种类)
-
Accept-Charset(字符编码)
-
COOKIE:浏览器用这个属性向服务器发送COOKIE。COOKIE是在浏览器中寄存的小型数据体,
-
Content-Type : POST请求里用来表示的内容类型。
HTTP 响应报文
-
响应状态码
响应状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值。
常见状态码:
100~199:表示服务器成功接收部分请求,要求客户端继续提交其余请求才能完成整个处理过程。
200~299:表示服务器成功接收请求并已完成整个处理过程。常用200(OK 请求成功)。
300~399:为完成请求,客户需进一步细化请求。例如:请求的资源已经移动一个新地址、常用302(所请求的页面已经临时转移至新的url)、307和304(使用缓存资源)。
400~499:客户端的请求有错误,常用404(服务器无法找到被请求的页面)、403(服务器拒绝访问,权限不够)。
500~599:服务器端出现错误,常用500(请求未完成。服务器遇到不可预知的情况)。
-
Cache-Control / Pragma : 服务端希不希望客户端缓存资源,在下次请求资源时,必须要从新请求服务器,不能从缓存副本中获取资源。
-
Connection:keep-alive
这个字段作为回应客户端的Connection
-
Content-Encoding : 编解码格式
-
Content-Type : 接受的文件类型
-
Date : 服务端发送资源时的服务器时间
-
Expires : 过期时间 客户端在这个时间前,可以直接访问缓存副本
-
Server : 服务器的版本
-
Transfer-Encoding : 是否分块发送
-
Vary
urllib 库 原生库
- 网络请求库 requests
- get方法
- url 网址
- 请求头内容 headers {User-Agent必须加}
- verify = False 忽略SSL安全认证
response = requests.get(url,headers = headers, verify = False)
print(response.content.decode(“utf8”)) - 返回响应对象
- response.url
- response.text
- response.encoding
- with 语句:
练习
- 获取百度首页源代码,并写入到一个html文件中。
- 获取任意关键词的百度搜索页,任意起始页和结束页。 存入到html文件中
- 获取任意关键词的百度贴吧页,任意起始页和结束页, 存入到html文件中。