爬虫介绍
-
什么是爬虫
- 代替人去模拟浏览器进行网页操作
-
为什么需要爬虫
- 为其他程序员提供数据源,数据分析,大数据等等
-
企业获取数据的方式
-
公司自有的数据
-
第三方平台购买的数据
-
爬虫爬取数据
-
-
Python做爬虫的优势
-
PHP:对多线程异步支持不好
-
JAVA:代码量大,代码笨重
-
C/C++:代码量大,难以编写
-
Python:支持模块多,代码简洁,开发效率高
-
-
爬虫分类
-
通用网络爬虫:百度,谷歌,雅虎等搜索引擎,遵守robots协议
-
聚焦网络爬虫:有目的有选择的获取特定的数据
-
增量式网络爬虫:对下载网页采取增量式的更新和只爬行新产生或者已发生变化的网页爬虫
-
深层网络爬虫:指那些大部分内容不能通过静态链接获取的、隐藏在搜索表单后的,只有用户提交一些关键词才能获得的web页面
-
几个概念
-
GET和POST
-
GET:查询参数都会在URL上显示出来
-
POST:查询参数和需要提交数据时隐藏在Form表单里,不会在URL地址上显示出来
-
-
URL组成部分
-
URL:同一资源定位符
-
https:协议
-
new.qq.com:主机名可以将主机理解为一台名叫new.qq.com的机器,这台主机在qq.com域名下
-
port 端口号:443, new.qq.com在他的后面有个:443可以省略
-
TWF20200/TWF2020032502924000.html 访问资源的路径
-
anchor:锚点用前端在作页面定位的
-
注意:在浏览器请求一个url,浏览器会对这个url进行一个编码。(除了英文字母,数字,和部分标识其他的全部使用%加十六进制码进行编码)
-
-
User-Agent 用户代理
-
作用:记录用户的浏览器操作系统等,为了让用户更好的获取HTML页面效果
-
User-Agent:
- User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36
-
-
Refer
- 表明当前这个请求时从那个url过来的,一般情况下可以用来做反爬的技术
-
状态码
-
200:请求成功
-
301:永久重定向
-
302:临时重定向
-
403:服务器拒绝请求
-
404:请求失败
-
500:服务器内部请求
-
-
抓包工具
-
Elements:元素 网页源代码,提取数据和分析数据
-
Console:控制台(打印信息)
-
Sources:信息来源(整个网站加载的文件)
-
NetWork:网络工作(信息抓包)能够看到很多的网页请求
-
爬虫请求模块
-
urllib.request
-
urllib.request.urlopen(),传入url参数,不支持headers
-
urllib.request.Request(),重构headers,传入url和headers参数或单独url,其返回值在使用urlopen()请求数据
-
响应对象中的方法
-
read()读取服务器响应的内容–>字节流bytes
-
read().decode(‘utf-8’),解码 将字节流解码成字符串 bytes–>str
-
getcode() 返回状态码
-
geturl()返回响应url
-
-
-
urllib.parse
-
urllib.parse.urlencode(),传入字典,返回编码后的字符串
-
urllib.parse.quote(),传入字符串
-
网友评论