四种发布、提取、存储网页信息的方法

AutomatedDataCollectionwithR这本书的第一章,introduction。

Disseminating

HTML、XML、JSON等

4tech.jpg

HTML是我们在浏览网页时,用来组织网页结构的轻量型标记语言,比如texts, tables, lists, links等都可以被提取出来:

#read_html和htmlParse功能一样
library(rvest) # the new package, version 0.3.0
 # read_html() from the rvest package is the new htmlParse() from the XML package
#get table
tables <- html_table(heritage_parsed, fill = TRUE) # html_table() from the rvest package, which replaces readHTMLTable() from the XML package
#举个栗子,提取上一个网页的table:
jianshu<- read_html("https://www.jianshu.com/p/8a898b204285", encoding = "UTF-8")
tables <- html_table(jianshu,fill = TRUE)

Chiptable <- tables[[1]]

XML和HTML比较像,用于网络数据传输,但html主要是展示网页,而xml主要是存储数据。html是为了展示出document,而xml相当于是一些包裹在tag(tag就是html里面对应结构组分的标签,比如table, title, links)里面的data。而且xml的tag更多样,相比html存储网页数据更灵活:

Thus, HTML documents are interpreted and transformed into pretty-looking output by browsers, whereas XML is “just” data wrapped in user-defined tags. The user-defined tags
make XML much more flexible for storing data than HTML.

另一个常见的数据存储和交换的格式是JavaScript Object Notation,简称JSON。

Like XML, JSON is used by many web applications to provide data for web developers. Imagine both XML and JSON as standards that define containers for plain text data.

比如开发者想分析Twitter上的数据,就从Twitter构建的界面上获取必要的数据,这些数据被Twitter以JSON的格式存储,从而可被开发者利用。XML和JSON都是应用非常广泛的数据传输格式,因为他们对广大编程语言包括R都兼容。

AJAX比较复杂,是创建动态网页必须的,现代网页应用中广泛,和经典的html以及xml的逻辑都不太一样,对于爬虫来说是个麻烦的东西

AJAX = 异步 JavaScript 和 XML。

AJAX 是一种用于创建快速动态网页的技术。

通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

传统的网页(不使用 AJAX)如果需要更新内容,必需重载整个网页面。

有很多使用 AJAX 的应用程序案例:新浪微博、Google 地图、开心网等等。

Plain text大家都知道,普通的文本文件,无结构的,只能被机器当成相同的每一行,一行一行读取。但在各种html, xml, json格式里都十分常见。

Extraction

XPath query language,从标记语言中提取特定信息的一门语言,实现对数据的初步过滤,只留下我们想要的信息。

JSON documents一般存储更小,更容易被parse。不需要特定的query language,只需R的函数即可。

Selenium:可以通过R的命令行实现对浏览器窗口的操作,比如鼠标点击,键盘输入等

正则表达式,在XPath不太好用时,可以用于寻找一些离散的,隐藏的信息

Text mining:对text进行分类,包括明显的和隐藏的语义,前者就是直接可见的信息,后者是读者可以根据文档内容划分成不同的主题,比如政治,经济等,类似主题模型,不带明显的label。

Storage

谈数据库的重要性:

一方面是高效的数据管理,和数据结构组织

一方面是如果你需要对大量的,分散的数据进行重复操作和处理,搭建数据库也是节约时间更快速的方法。

可以参考SQL

第二章介绍HTML

你可能感兴趣的:(四种发布、提取、存储网页信息的方法)