数据采集之爬虫

【内容简介】

  1. 什么是爬虫?
  2. 静态网页与静态网页的区别
  3. python爬取技术学习

【知识点讲解】

1.什么是爬虫?

网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成。爬虫(又称为网页蜘蛛,网络机器人,在 FOAF 社区中间,更经常的称为网页追逐者);它是一种按照一定的规则,自动地抓取网络信息的程序或者脚本。

(1)爬虫步骤

在这里插入图片描述

(2)爬虫三要素

 网页抓取

 页面内容抓取工具 : 正则、lxml、bs4(BeautifulSoup)
 使用http库向目标站点发起请求(常见的请求方式:GET/POST),即发送一个Request,Request包含:请求头、请求体等
 Request模块缺陷:不能执行JS 和CSS 代码

 网页解析

解析 html 数据:解析 html 数据方法有使用正则表达式、第三方解析库如 Beautifulsoup,pyquery 等
解析 json 数据:解析 json数据可使用 json 模块
解析二进制数据:以 b 的方式写入文件

 数据存储

存储库:文件,MySQL,Mongodb,Redis

(3) 爬虫注意事项

1.遵守 Robots 协议,但有没有 Robots 都不代表可以随便爬;
2.限制你的爬虫行为,禁止近乎 DDOS 的请求频率,一旦造成服务器瘫痪,约等于网络攻击;
3.对于明显反爬,或者正常情况不能到达的页面不能强行突破,否则是 Hacker 行为;
4.最后,审视清楚自己爬的内容,遵守国家相关法律法规,以下是绝不能碰的红线(包括但不限于):
•爬取用户个人数据非法牟利,包括模拟登录他人账号。
•爬取商业数据造成不正当竞争。
•爬取大量带有知识产权的数据用于商业目的, 获取盈利行为。
5、不得违反相应法律法规。

2. 静态网页和动态网页的区分

在静态web程序中,客户端使用web浏览器(IE.FireFox等)经过网络(Network)连接到数据服务器上,使用HTTP协议发起一个请求(Requests),告诉服务器我现在需要得到哪个页面,所有的请求交给web服务器,之后Web服务器根据用户的需求,从文件系统(存放了所有静态页面的磁盘)取出内容。之后通过web服务器返回给客户端,客户端接收到内容之后经过浏览器渲染解析,得到显示的效果。
静态网页是相对于动态网页而言,是指没有后台数据库、不含程序和不可交互的网页。编的是什么它显示的就是什么、不会有任何改变
*如果客户端请求的是动态资源(*.jsp. .asp/.aspx. .php),则先将请求交给WEB container中连接数据库,从数据库中取出数据等一系列操作后动态拼凑页面展示内容,拼凑页面的展示内容后,把所有的展示内容交给WEB服务器,之后通过WEB服务器将内容发送回客户端浏览器进行解析执行。

在这里插入图片描述

对于网络爬虫来说,静态网页的内容都写在源代码中,比较容易抓取;动态网页的内容不一写在网页源代码中,可能需要用户登录后才能显示完整,这增加了抓取难度。

3. python爬取技术学习

(1) 网页抓取库Urllib

urllib库是Python内置的HTTP请求库,它可以看做是处理URL的组件集合。urllib库包含了四大模块,具体如下:
 urllib.request:请求模块
 urllib.error:异常处理模块
 urllib.parse:URL解析模块
 urllib.robotparser:robots.txt解析模块
使用方法:

urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)

url:url 地址。
data:发送到服务器的其他数据对象,默认为 None。
timeout:设置访问超时时间。
cafile 和 capath:cafile 为 CA 证书, capath 为 CA 证书的路径,使用 HTTPS 需要用到。
cadefault:已经被弃用。
context:ssl.SSLContext类型,用来指定 SSL 设置。

(2) 网页解析库Beautifulsoup

 BeautifulSoup 安装

pip install BeautifulSoup4

 BeautifulSoup 使用
首先是导入BeautifulSoup库(from bs4 import BeautifulSoup),然后将html源码解析为BeautifulSoup对象,最后提取数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值