文章目录
- 一、数据的类型
- 二、HTML与XML的区别
- 三、json文件
- 四、提取网页中的信息
- 五、爬虫的实现
一、数据的类型
1、结构化数据
可以用统一的结构加以表示的数据。可以使用关系型数据库表示和存储,表现为二维形式的数据。特点是:数据以行为单位,一行数据表示一个实体的信息,每一行数据的属性是相同的。比如MySQL数据表中是数据。
2、半结构化数据
是结构化数据的一种形式,并不符合关系型数据库或其他数据表的形式关联起来的数据模型结构,但包含相关标记,用来分隔语义元素以及对记录和字段进行分层。因此,它也被称为自描述的结构。常见的半结构数据有HTML,XML和JSON等,实际上是以树或者图的结构来存储的。
3、非结构化数据
就是没有固定结构的数据,各种文档、图片、视频/音频等都属于非结构化数据。对于这类数据,我们一般直接整体进行存储,而且一般存储为二进制的数据格式。除了结构化和半结构数据之外的数据都是非结构化数据。
4、总结
简单来说,结构化数据要求严格,数据类型和大小都是提前规定好了的;而半结构化数据没有那么严格,可以适当扩充;非结构化数据,可以任意修改。
二、HTML与XML的区别
- 1、在HTML中不区分大恽,在XML中严格区分。
- 2.在HTML中,有时不严格,如果上下文清楚地显示出段落或者列表键在何处结尾,那么你可以省略或者之类的结束标记。在XML中,是严格的树状结构,绝对不能省略掉结束标记。
- 3、在XML中,拥有单个标记而没有匹配的结束标记的元素必须用一个/字符作为结尾。这样分析器就知道不用查找结束标记了。
- 4、在XML中,属性值必须分装在引号中。在HTML中,引号是可用可不用的。
- 5、在HTML中,可以拥有不带值的属性名。在XML中,所有的属性都必须带有相应的值。
- 6、HTML使用固有的标记;而XML没有固有的标记;HTML标签是预定义的:XML标签是免费的、自定义的、可扩展的。
- 7、HTML是用来显示数据并将内容与数据结合的,偏重前端;而XML是用来描述数据、存放数据的。HTML的设计目标是现实数据并集中与数据外观,而XML的设计目标是描述数据并集中与数据的内容。
总的来说就是,XML的语法要求比HTML的要严格;但他们的作用和设计目标不同,因此各有好处,就看我们是否用得恰当。
三、json文件
1、json文件的认识
JSON(JavaScript Object Notation, JS对象标记)是一种轻量级的数据交换格式。它基于ECMAScript (w3c制定的JS规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,铕效地提升网络传输效率。
2、JSON的语法规则
在JS语言中,一切都是对象。因此,任何支持的类型都可以通过JSON来表
示,例如字符串、数字、对象、数组等。但是对象和数组是比较特殊且常用的两种类型。
- 对象表示为键值对。
- 数据由逗号分隔。
- 花括号保存对象。
- 方括号保存数组。
3、JSON与JS对象的关系
实际上可以这么理解, JSON是JS对象的字符串表示法,它使用文本表示一个JS对象的信息,本质是一个字符串。
四、提取网页中的信息
1、XPath与Ixml的关系
XPath是一门在XML、HTML文档中查找信息的语言,对XPath的理解是很多高级XML、HTML应用的基础,XPath 在XML中通过元素和属性进行导航。Ixml是一个用来处理XMLr的第三方Python库,它在底层封装了用C语言编写的libxm12 和libxslt,并以简单强大的Python API, 兼容并加强了著名的Element TreeAPI。
安装: pip install Ixml
使用: from lxml import etree
from xml.etree import cElementTree
xmlStr = """<bookstore>
<book>
<title lang="en">Python爬虫</title>
<author>Za·huw</author>
<year>2020</year>
<price>99,79</price>
</book>
<book>
<title lang="en">Python数据分析</title>
<author>Zo·ro</author>
<year>2018</year>
<price>49.9</price>
</book>
</bookstore>
"""
root = cElementTree.fromstring(xmlStr)
elements = root.find("book/title")
print(elements)
2、Beautiful Soup的使用
Beautiful Soup是用Python写的一个HTML/XML的解析器,它可以很好的处理不规范标记并生成剖析树(parse tree)。它提 供简单又常用的导航(navigating) ,搜索以及修改剖析树的操作。它可以大大节省你的编程时间。
安装: pip install beautifuilsoup4。
from bs4 import BeautifulSoup
doc = ['<html><head><title>Hello</title></head>',
'<body><pid="firstpara" align="center">Hello world!></body></html>']
soup = BeautifulSoup(''.join(doc),"html")
print(soup.prettify())
print(type(soup.contents[0]))
soup.findAll('p',align="center")
五、爬虫的实现
1、urllib来实现
from urllib import request
print(request.urlopen(request.Request("http://www.sina.com.cn")).read().decode())
2、request来实现
import requests
res = requests.get("http://www.sina.com.cn")
res.decoding = "utf-8"
print(res.text)
3、修改headers请求头信息
from urllib import request
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.106 Safari/537.36"}
request.urlopen(request.Request("http://www.sina.com.cn/",headers=headers)).read().decode('utf-8')
4、正则匹配复习
import re
rec = "i=d%0A&from=AUTO&to=AUTO&%smartresult=dict&"
pi = "(.*?)=(.*?)&"
vv = re.findall(pi,rec)
print(vv)
5、url encode编码
实例:输入关键词,获取百度搜索网页
import urllib
from urllib import request
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.106 Safari/537.36"}
url = "https://www.baidu.com/s?"
keyword = input("请输入你要查询的信息:")
wd = {"wd":keyword}
wd = urllib.parse.urlencode(wd)
fullUrl = url + wd
print(fullUrl)
req = request.Request(fullUrl,headers=headers)
response = request.urlopen(req)
with open("baiduSearch.html","wb") as f:
f.write(response.read())
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)