【Web信息处理】Web数据获取-ws01课-爬虫基本架构

Web数据获取01

Anaconda
Installing on Windows
https://docs.anaconda.com/anaconda/install/windows/

网络数据获取原理

HTTP协议

HTTP,Hypertext Transfer Protocol,超文本传输协议

HTTP是一个基于“请求与响应”模式的、无状态的应用层协议
HTTP协议采用URL作为定位网络资源的标识,URL格式如下:
http://host[:port][path]
host: 合法的Internet主机域名或IP地址
port: 端口号,缺省端口为80
path: 请求资源的路径

HTTP协议对资源操作

GET 请求获取URL位置的资源
POST 请求向URL位置的资源后附加新的数据

HTTP URL的理解:

URL是通过HTTP协议存取资源的Internet路径,一个URL对应一个数据资源

HTTP协议对资源的操作

通过URL和命令管理资源,操作独立无状态,网络通道及服务器成为了黑盒子
在这里插入图片描述

爬虫需要解决哪些问题:

HTTP请求怎么构造并向服务器发送获取数据?
如何大量从网络中获取数据?
获取到的数据如何解析为结构化数据?
如何高效的获取数据?
在这里插入图片描述

问题:
同步和异步,阻塞和非阻塞调用是?

在这里插入图片描述

网页为节点
网页中的HyperLink为有向边
Crawl == 图遍历, right?

检查某个URL是否已经被抓过了

在将一个新的URL (规格化后的)放到工作池之前

  • 要很快,不要在这里形成性能瓶颈(检查将要访问磁盘)

符合条件(即未被访问过)的URLs放到crawler的任务中
优化方法
URL用fingerprint (如MD5)来记录,减少内存开销
利用访问的时空局部性 – Cache
海量数据的高效率查找表

  • B-tree
  • Bloom filter
Bloom filter

Bloom Filter就会告诉你,w在集合
之中,实际上这里是误报,w并不在集合之中
在这里插入图片描述

A high level view of a web crawler

在这里插入图片描述

  • Fetcher:Fetch a page 取一个界面
  • Extractor:get all urls in the former page 寻找其他url引用
  • Writer:add the urls into the database
  • PostProcessor:Read/Write URL’s

HTML通过预定义的<>…</>标签形式组织不同类型的信息

信息标记与提取方法

在这里插入图片描述

信息的标记
信息标记的作用
  • 标记后的信息可形成信息组织结构,增加了信息维度
  • 标记的结构与信息一样具有重要价值
  • 标记后的信息可用于通信、存储或展示
  • 标记后的信息更利于程序理解和运用
信息标记的三种形式
XML(Extensible Markup Language)

Extensible Markup Language
标签 Tag
空元素的缩写形式:

<img src=“china.jpg” size=“10” />

注释书写形式:

<!-- This is a comment, very useful -->
<name></name>
<name />
<!-- -->
JSON(JavsScript Object Notation)

JavsScript Object Notation
有类型的键值对 key:value
在这里插入图片描述
多值用[,]组织:
在这里插入图片描述
键值对嵌套用{,}:
在这里插入图片描述
在这里插入图片描述

YAML(YAML Ain’t Markup Language)

无类型键值对 key:value
在这里插入图片描述
缩进表达所属关系:
在这里插入图片描述
- 表达并列关系:
在这里插入图片描述
| 表达整块数据, # 表示注释

text: | # 学 校 介 绍
哈尔滨工业大学,简称哈工大,创建于1920年,隶属中华人民共和国工业和信息化部,是一所以理工为主,理、工、文、管、生命相结合,多学科、开放式的研究型高校,为中国C9联盟成员之一,是首批中国“211工程”、首批九所985工程重点建设的院校之一。拥有哈尔滨、威海和深圳三大校区,已建成一校三区的“大哈工大”格局。

在这里插入图片描述

三种信息形式的比较
XML最早的通用信息标记语言,可扩展性好,但繁琐Internet上的信息交互与传递
JSON信息有类型,适合程序处理(js)较XML简洁移动应用云端和节点的信息通信,无注释
YAML信息无类型,文本信息比例最高,可读性好各类系统的配置文件,有注释易读
XML实例
<person>
	<firstName>Tian</firstName>
	<lastName>Song</lastName>
	<address>
		<streetAddr>中关村南大街5号</streetAddr>
		<city>北京市</city>
		<zipcode>100081</zipcode>
	</address>
	<prof>Computer System</prof><prof>Security</prof>
</person>
JSON实例
{
	“firstName” : “Tian” ,
	“lastName” : “Song” ,
	“address” : {
				“streetAddr” : “中关村南大街5号” , 
				“city”: “北京市” , 
				“zipcode” :100081},
	“prof” : [ “Computer System” , “Security” ] 
}
YAML实例
firstName : Tian
lastName : Song
address :
	streetAddr : 中关村南大街5号 
	city : 北京市
	zipcode : 100081
prof : 
-Computer System 
-Security
信息提取的一般方法

从标记后的信息中提取所关注的内容
XML JSON YAML
(标记, 信息)

方法一:完整解析信息的标记形式,再提取关键信息

XML JSON YAML
需要标记解析器,例如:bs4库的标签树遍历

  • 优点:信息解析准确
  • 缺点:提取过程繁琐,速度慢
方法二:无视标记形式,直接搜索关键信息

搜索
对信息的文本查找函数即可

  • 优点:提取过程简洁,速度较快
  • 缺点:提取结果准确性与信息内容相关\
融合方法:结合形式解析与搜索方法,提取关键信息

XML JSON YAML 搜 索
需要标记解析器文本查找函数
在这里插入图片描述

网络爬虫的限制

• 来源审查:判断User-Agent进行限制
检查来访HTTP协议头的User-Agent域,只响应浏览器或友好爬虫的访问

• 发布公告:Robots协议
Robots Exclusion Standard,网络爬虫排除标准
告知所有爬虫网站的爬取策略,要求爬虫遵守

• 网络爬虫:
自动或人工识别robots.txt,再进行

• 内容爬取 约束性:
Robots协议是建议但非约束性,网络爬虫可以不遵守,但存在法律风险

在这里插入图片描述
原则:类人行为可不参考Robots协议

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值