1.爬虫概要
Django 静态网页
页面上的数据如果使用JS渲染就是动态网页(flask) 否则就是静态网页(Django)
区别: 动态页面使用js渲染的 右击在网页源码是没有数据的
为什么要学习爬虫? 拿数据
爬虫的定义: 模拟客户端发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序
ps: 只要是浏览器能做的事情, 原则上, 爬虫都能够做
爬虫的更多用途: 12306抢票 , 网站上的投票, 短信轰炸
ajax: 实现页面的局部刷新,通过JS重新发送一次请求,拿到数据
发送短信验证码的网站
爬虫的分类:
- 通用爬虫: 通常指搜索引擎的爬虫
- 聚焦爬虫: 针对特定网站的爬虫
通用搜索引擎工作原理
ROBOTS协议
- 网站通过Robots协议:网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取.
例如:
https://www.taobao.com/robots.txt
协议: 双方约定好 数据怎么传
不一样原因在于 浏览器渲染的页面包含js调整修改之后的内容
HTTP常见请求头
GET请求 把参数放在url地址里面 ,GET请求有上限, url长度有限携带数据量有限
POST请求 把参数放在请求体里面, POST请求携带数据量没有上限
字符串
ASCII编码是1个字节, Unicode标准是2个字节表示一个字符,字符集包括: ASCII字符集,GBK字符集,Unicode字符集.
bytes: 二进制(互联网上数据都是以二进制的方式传输的)
str: unicode的呈现形式(utf-8)
str----encode编码--->bytes
bytes--decode解码--->str(编码方式和解码方式必须一样,否则就会出现乱码)
UTF-8是Unicode的实现方式之一(也是它的子集),是一种变长的编码方式,可以是1,2,3个字节.能用一个字节表示就用一个字节, Python2里面默认编码是ASCII,Python3是UTF-8的编码方式,就能够完美的解决各种各样的字符相关的问题.
Markdown Atom github上的一个开源的编辑器
day1重点
####爬虫定义:
- 模拟浏览器发送网络请求,获取数据
####爬虫获取到的数据的两个用途
- 直接展现
- 数据分析
####不同的公司用爬虫干什么
- 金融, 用爬虫爬取金融资讯网站的新闻, 企业信息,企业信用信息, (关于公司融资多少, 财富数据, 罚款,被调查,老板下台)
- 旅游相关, 酒店, 机票, 景点门票, 餐饮价格信息
- 电商, 商品信息和价格, JD, taobao, amazon, dangdang, 比价商品信息的对比分析
- 房地产, 租房,抓取信息发布网站上的租房信息, 安居客, 链家租房价格等信息, 对比其他平台同个地段的价格, 帮助用户调整租房价格,
抓黑中介的信息 (房地产经纪公司销售或者门店经理的信息,名字电话, 后续如果有人注册了, 就可以知道这个人可能是黑中介, 通过手机号码判断出来, 还会爬豆瓣或者微博发布的房源信息, 还会爬一些黑中介的不好的评论, 怎么骗的过程, 找出来这条信息对应哪个公司, 整理一下, 在自己平台公布黑中介的公司)
- 游戏, 抓不同论坛上面, 对这个游戏的反馈, 同类游戏的用户反馈, 对应可以调整优化我们的游戏, 攻略, 抓取Google play 游戏软件的下载量, 人气高的游戏放在自己app上, 还会爬别人的论坛上面关于这个游戏破解的攻略,教程,安装包都可以放在自己的服务器,数据库里面
- 招聘, 招聘网站上的用人需求等信息
#### 聚焦爬虫
- url # 明确爬取哪些网站
- 发送请求, 获取响应 --------> 提取url地址, 重新请求
- 提取数据
- 保存
#### 爬虫请求到的数据需要以当前的url地址对应的响应为准
状态码 : 200 成功, 302重定向 , 404 资源不存在 , 500 服务器内部错误
对方服务器如何通过cookie判断用户是否登录?
- cookie存在本地, 因为浏览器发送请求的时候会把cookie带上(为了获取登录之后才能获取的页面)
- 对方会通过cookie判断是否为爬虫
ps: 想打开一个干净的页面不携带任何cookie可以使用谷歌浏览器新建一个标签就可以了
本公众号长期提供各种免费视频学习资源,欢迎与作者相互探讨学习
公众号回复以下关键字获取相关视频教程:
python、django 、flask、数据分析、爬虫、大数据、量化金融、机器学习、深度学习、自然语言处理、人工智能