爬虫基础(续)

第二章、爬虫基础

2.2 网页基础

2.2.1 网页的组成

网页分为三大部分—-HTML、CSS和JavaScript
1.HTML(内容和结构)
网页的基础框架就是HTML
开发者工具中Elements选项卡下左边为html,右边为CSS
2.CSS(布局)

#head_wrapper.s-ps-islite .s-p-top{
position:absolute;
width:100%;    //宽度100%占满父元素
}

这就是一个CSS样式大括号前#head_wrapper.s-ps-islite .s-p-top就是一个CSS选择器,此选择器首先选中id为head_wrapper且class为s-ps-islite的节点,然后再选其内部的class为s-p-top的节点。
3.JavaScript(行为)
简称JS,是一种脚本语言,交互和动态效果就是JavaScript的功劳。HTML中通过script标签引入JS。

2.2.2 网页的结构(略)

2.2.3 节点树及节点间的关系

W3C文档对象模型(DOM)是中立与平台和语言的接口.通过HTML DOM,树中的所有节点都可以通过JavaScript访问,并且修改或创建或删除。

2.2.4 选择器

根据id、class、标签名筛选
CSS选择器的语法规则见P91

2.3 爬虫的基本原理

2.3.1 爬虫概述

爬虫就是获取网页提取保存信息的自动化程序
1.获取网页
urllib、request库等可以实现HTTP请求操作,得到响应后只需要解析数据结构中的body部分即可以得到网页的源代码
2.提取信息
获取网页的源代码后接下来就是分析网页源代码,从中提取我们要的数据,用正则表达式提取是一个万能办法。还可以根据网页节点属性、CSS选择器或XPath来提取网页信息的库,如Beautiful Soup、pyquery、lxml等。
3.保存数据
可以简单保存为TXT文本或JSON文本,也可以保存在数据库中,如MySQL,MongoDB等,甚至保存至远程服务器,如借助SFTP来操作。
4.自动化程序
爬虫就是代替人来完成爬虫工作的自动化程序,并且能进行各种异常处理、错误重试等。

2.3.2 能抓怎样的数据

可能有些网页返回的不是HTML代码,而是JSON字符串(API接口大多采用这样的形式),它们同样可以抓取。还可以抓取一些图片、视频等,只要在浏览器中可以访问到的都可以抓取。

2.3.3 JavaScript渲染页面

有时用urllib或requests抓取网页时,得到的源代码实际和浏览器中看到的不一样。现在原来越多的网页采用AJax、前端模块化工具来构建,整个网页可能都是由JavaScript渲染出来的,原始HTML代码就只是一个空壳。用urllib或requests等库请求这些网页时,得到的只是HTML代码,它不会继续去加载这个JavaScript文件。如下代码

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>this is demo</title>
</head>
<body>
<div id="id">
</div>
</body>
<script src="app.js"></script>
</html>

对于这种情况,我们可以分析其后台AJax接口,也可使用Selenium、Splash等库实现模拟JavaScript渲染。

2.4 回话和Cookies

2.4.1 静态网页和动态网页

&搭建最简单的网站&
我们保存一个html文件,然后把它放在某台具有固定公网IP的主机上,主机上安装Apache或Nginx等服务器,这台主机就可以作为服务器了,其他人便可以访问服务器看到这个页面。

2.4.2 无状态HTTP

HTTP的无状态是指HTTP协议对事务处理没有记忆功能的,也就是服务器不知道客户端是什么状态。这种肯定不是我们想要的。这时出现了会话和Cookies这两个保持HTTP连接状态的技术。会话在服务器端,用来保存用户的回话信息;Cookies在客户端,有了Cookies浏览器在下次访问网页时会自动附带上它发送给服务器,服务器通过识别Cookies并鉴定是哪个用户,然后判断用户是否是登录状态,然后返回对应的响应。
可以理解为Cookies里保存了登录的凭证,有了它,只需要在下次请求携带Cookies发送请求而不必重新输入用户名、密码等信息重新登录。所以在爬虫中,有时候处理需要登录才能访问的页面时,我们一般会直接将登录成功后获取的Cookies放在请求头里面直接请求,不必重新模拟登录。
1.会话
会话对象用来存储特定用户会话所需的属性及配置信息。
2.Cookies
指某些网站为了辨别用户身份、进行会话跟踪而存储在用户本地终端上的数据。

  • 会话维持
    当客户端第一次请求服务器时,服务器会返回一个请求头中带有set-Cookie字段的响应给客户端,用来标记哪一个用户,客户端浏览器会把Cookies保存起来。当浏览器下一次访问该网站时,浏览器会把此Cookies放到请求头一起提交给服务器,Cookies携带了会话ID信息,服务器检查该Cookies即可找到对应会话是什么,然后判断会话来辨认用户状态。
    Cookies和会话需要配合,才能实现登录会话控制。
  • 属性结构
    开发者工具中打开application选项卡,左侧的storage中有cookies,将其点开,每一个条目即使有个cookie。
    每个cookie有如下属性
    name:一旦创建不能更改
    value:如果值为unicode字符,需要为字符编码,如果为二进制数据,需要使用BASE64编码
    domain:可以访问该cookie的域名
    max age:该cookie失效时间,单位s,如果为负数,则关闭浏览器时,cookie就失效
    path:该cookie的使用路径
  • 会话cookie和持久cookie
    会话cookie就是把cookie放在浏览器内存里,关闭浏览器后该cookie即失效;
    持久cookie则会保存到客户端的硬盘里,下次可以继续使用 ;
    严格来说,没有会话cookie和持久cookie之分,只是由Cookie的max age或expires字段决定过期时间。

2.5 代理的基本原理

2.5.1 基本原理

代理实际就是代理服务器,它是网络信息的中转站。

2.5.2 代理的作用

  • 访问平时不能访问的站点
  • 访问一些单位或团体内部
  • 提高访问速度
  • 隐藏真实IP

2.5.3 常见代理设置

  • 使用免费代理:最好使用高匿代理
  • 使用付费代理服务
  • ADSL拨号 :拨一次换一次IP

猜你喜欢

转载自blog.csdn.net/qq_32482091/article/details/80559885
今日推荐