美文网首页
爬虫入门基础

爬虫入门基础

作者: __晴天___ | 来源:发表于2018-12-22 19:24 被阅读14次

爬虫的入门基础

什么是爬虫?

网络爬虫(又被成为网页蜘蛛,网络机器人),就是模拟客户端发起网络请求,接收请求的响应,按照一定的个规则,自动的抓取互联网信息的程序

爬虫的基本流程

分析网站,得到目标url
根据url,发起请求,获取页面的HTML源码
从页面源码中提取数据  a. 提取到目标数据,做数据的筛选和持久化存储 b. 从网页中提取到新的url地址,继续执行第二步
爬虫结束:所有的目标url都提取完,并且得到数据,再也没有其他请求任务
网页的三大特征

每一个网页都有一个唯一的url(统一资源定位符),来进行定位
网页都是通过HTML展示的
所有的网页都是通过HTTP/HTTPS协议来传输的
通用爬虫和聚焦爬虫

通用爬虫:是搜索引擎的重要组成部分  目的:尽可能的将所有的互联网上的网页下载到本地,经过预处理(去噪,分词,去广告),最终将数据存储到本地,做一个镜像备份,形成一个检索系统  缺点:   1.必须遵守robot协议:就是一个规范,告诉搜索引擎,哪些目录下的资源允许爬虫,哪些不允许   2.搜索引擎返回的都是网页,并且返回的90%都是无用的数据   3.不能根据不同用户的需求或者检索结果返回不同的结果   4.通用爬虫对于媒体的文件不能获取
聚焦爬虫:聚焦爬虫是面向主题的爬虫,再爬取数据的过程中对数据进行筛选,往往只会【爬取与需求相关的数据
Robot.txt

Robot协议(也称为爬虫协议、机器人协议等)的全称是“网络爬虫排除标准”,Robot.txt是一个协议,而不是一个命令,他是国际互联网界通行到的规范,大型网站会通过Robot协议来告诉搜索引擎哪些页面可以爬取,哪些不能

参数:

allow:允许爬取
disallow:不允许爬取
七层协议

从上往下 应用层:为用户的应用程序提供网络服务的(http,https,ftp...) 表示层:负责端到端的数据信息可以被另一个主机所理解和识别,并且按照一定的格式将信息传递到会话层 会话层:会话层是管理主机之间的会化进程,负责建立,管理,和终止会话进程 传输层:进行数据传输的(tcp udp) 网络层:路由器 数据链路层:网桥 交换机 物理层:网线 网卡 集线器 中继器

http和https协议

HTTP协议(HyperText Transfer Protocol)中文名叫超文本传输协议: 是用于从网络传送超文本数据到本地浏览器的传送协议

HTTP协议(HyperText Transfer Protocol)中文名叫超文本传输协议: 是用于从网络传送超文本数据到本地浏览器的传送协议

HTTP的端口号为80,HTTPS的端口号为443

HTTPS的安全基础是SSL,因此通过它可以传输的内容都是经过SSL加密的,主要作用是:

建立一个安全有效的信息传送通道,保证数据传送的安全性
确定网站的真实性和有效性
注意:HTTPS比HTTP更安全,但是性能更低

url的基本组成部分

基本格式:schema://host[:port#]/path/?[query-string][#]anchor schema:协议(例如:http, https, ftp) host:服务器的IP地址或者域名 path:访问资源的路径 query-string:参数,发送给http服务器的数据 anchor:锚(跳转到网页的指定锚点位置)

请求的基本流程

from urllib import request

目标url

url = 'http://www.baidu.com'
response = request.urlopen(url,timeout=10)

从response响应结果中获取参数

状态码

code = response.status
print(code)

获取页面源码的二进制数据

b_html = response.read()
print(b_html,len(b_html))

获取响应的相应头部(response headers)

res_headers = response.getheaders()
print(res_headers)

获取响应头中指定参数的值

cokie_data = response.getheader('Set-Cookie')
print(cokie_data)

reason返回一个响应结果的原因

reason = response.reason
print(reason)
get请求和post请求的区别 1.传输数据的大小:对于GET,特定的 浏览器和服务器对URL的长度有限制;对于POST,由于不是URL传值,理论上是不会受限制的,但是实际上各个服务器会规定对POST提交数据大小进 行限制,Apache、IIS都有各自的配置。 2.安全性:POST的安全性比GET的高

请求头的参数 'User-Agent':模拟浏览器进行请求 'Cookie':存储在浏览器里面的,使用 cookie表明用户的身份 'Refere':说明当前的请求是从哪个页面发起的

常用的状态码

200:请求成功

301:永久重定向 302:临时重定向

400:客户端错误 401:未授权 403:服务器拒绝访问 404:页面未找到 405:请求方式不对 408:请求超时

500:服务器错误 503:服务器不可用

bytes类型和str字符串类型的相互转换,bytes和bytearray的区别

1.bytes是Python 3中特有的,Python 2 里不区分bytes和str。 2.str类型使用encode方法转化为bytes类型 bytes类型通过decode转化为str类型 3.bytearray bytearray和bytes不一样的地方在于,bytearray是可变的。

如何发起一个get请求

response = response.get
('www.baidu.com')

正则的基本用法:
. :表示匹配除了换行符之外的任意字符
\ :转义字符
[a-z] : 匹配a-z里面的任意一个字符

\d: 匹配数字 -> [0-9]
\D: 匹配非数字 [^\d]
\s: 匹配空白字符(空格,\n,\t...)
\S: 匹配非空白字符 
\w: 匹配单词字符 [A-Za-z0-9_]
\W: 匹配非单子字符

^:匹配以...开头
$:匹配以....结尾

():分组
|:或

多字符匹配
*:匹配*前面的字符任意次数

  • : 匹配+号前面的字符至少1次
    ?: 匹配?前面的字符0次或1次
    {m}:匹配{m}前面的字符m次
    {m,n}:匹配{m,n}前面的字符m~n次

非贪婪匹配
*?
+?
??
{m,n}?

相关文章

网友评论

      本文标题:爬虫入门基础

      本文链接:https://www.haomeiwen.com/subject/dilwkqtx.html