【Web信息处理】Web数据获取

  • Web数据获取01
    • 网络数据获取原理
      • HTTP协议
      • 爬虫需要解决哪些问题:
        • 检查某个URL是否已经被抓过了
          • Bloom filter
        • A high level view of a web crawler
    • 信息标记与提取方法
      • 信息的标记
        • 信息标记的作用
        • 信息标记的三种形式
          • XML(Extensible Markup Language)
          • JSON(JavsScript Object Notation)
          • YAML(YAML Ain’t Markup Language)
        • 三种信息形式的比较
        • XML实例
          • JSON实例
          • YAML实例
      • 信息提取的一般方法
        • 方法一:完整解析信息的标记形式,再提取关键信息
        • 方法二:无视标记形式,直接搜索关键信息
        • 融合方法:结合形式解析与搜索方法,提取关键信息
      • 网络爬虫的限制

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

空元素的缩写形式:

<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协议

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

  1. Asp.Net Web API 2第七课——Web API异常处理

    Asp.Net Web API 2第七课--Web API异常处理 原文:Asp.Net Web API 2第七课--Web API异常处理 前言 阅读本文之前,您也可以到Asp.Net Web AP ...

  2. “阿一web标准学堂”第1课:web标准概述(附视频、课件、代码下载)

    阿一web标准学堂 前言 大家好,我是阿一,杨正祎.今天<阿一web标准学堂>就要开讲了,欢迎大家来学习讨论哦. <阿一web标准学堂>是一套面向web标准初学者的视频系列.虽 ...

  3. Asp.Net Web API 2第十七课——Creating an OData Endpoint in ASP.NET Web API 2(OData终结点)...

    原文:Asp.Net Web API 2第十七课--Creating an OData Endpoint in ASP.NET Web API 2(OData终结点) 前言 很久没更新博客了,加上刚过 ...

  4. asp.net MVC3 无法打开项目文件“E:\我们的项目\Project\HeatingMIS.Web\HeatingMIS.Web.csproj”。此安装不支持该项目类型。...

    在vs中打开mvc3项目,虽然装了mvc3,但是还是会遇到莫名其妙的错误,这是我在做开发的时候遇到的一个问题,附带解决方案,和大家分享一下 问题描述:无法打开项目文件"E:\我们的项目\Pr ...

  5. jsp到java xml配置,JSP中web配置:web.xml

    # re: JSP中web配置:web.xml 2007-07-02 12:24 和田雨 - http://java.sun.com/xml/ns/j2ee" xmlns:j2ee=&quo ...

  6. 网页从web服务器受到的威胁,[多选] Web从web服务器方面和浏览器方面受到的威胁主要来自()。...

    [多选] Web从web服务器方面和浏览器方面受到的威胁主要来自(). 更多相关问题 [多选] 多天线技术中,主要的增益包括:() [多选] 关于LTETDD帧结构,哪些说法是正确的() [多选] 参 ...

  7. 从Adobe Photoshop CC 2018的“新建Web”看Web网页常见分辨率

    从Adobe Photoshop CC 2018的"新建Web"看Web网页常见分辨率 试用了Adobo Photoshop CC 2018,看一下Web页面分辨了大小默认设计. ...

  8. 黑马数据库html阶段考试,黑马web阶段web试题学生版.docx

    Web 阶段 Web 试题 1. 动态网站的开发技术有 (A) JSP HTML CSS JavaScript 下面哪个请求头信息可以实现防盗链 (C) Location Refresh Refere ...

  9. Java web之web.xml配置详解

    什么是web.xml web.xml是web项目的配置文件,一般的web工程都会用到web.xml来配置,方便大型开发.web.xml主要用来配置Filter,Listener,Servlet等.但是 ...

最新文章

  1. Android 常用的地球经纬度转换公里(km)计算工具类
  2. 数据结构与算法 / 队列(queue)
  3. SpringMVC使用AOP
  4. 锅巴H264播放器地址和说明
  5. pca图解读_干货!手把手一步一步解读PCA分析,逃学博士尽力了!
  6. 男子拒绝春节带电脑回家工作被开除,最后结果十分舒适...
  7. VR技术给我们的生活带来哪些影响
  8. python爬取代理IP并进行有效的IP测试
  9. 使用table标签制作常用的html表格
  10. JNI详解---从不懂到理解
  11. 沪漂5年,工作这点事儿
  12. 工作遇坑-Cannot allocate memory问题解决方法
  13. Java——七种垃圾收集器+JDK11最新ZGC
  14. EC-PCA: 利润中心记账流程
  15. Linux Socket编程入门——浅显易懂
  16. 动物克隆技术应用价值_动物克隆技术论文
  17. Web 报错 状态码302
  18. Windows下Pycharm使用pyhive
  19. Java 服务器与客户端的简单连接
  20. php基于BS模式的物业管理系统设计与实现毕业设计源码290918

热门文章

  1. jSignature 签名时手写不出现笔迹,就是写不上字
  2. C++学生信息和考试成绩管理系统(一)
  3. int最小值为何是-2147483648,而不是-2147483647
  4. Java中对URL解码
  5. 石墨烯已经运用到线路板上,您知道吗?
  6. 在vue中使用antV-G2展示折线图
  7. 论青年的不朽之感 赫兹里特
  8. ps怎么给图层(批量)重命名的方法
  9. 中国科学技术大学计算机学院保研,中国科学技术大学2021年推免生名单公示
  10. Sql Server 存储过程实例讲解