BeautifulSoup4将复杂HTML文档转换成一个复杂的树形结构,每个节点都是Python对象,所有对象可以归纳为4种:

  • Tag
  • NavigableString
  • BeautifulSoup
  • Comment

测试文件:baidu.html

请将文件内容放于项目的根目录下

文件内容

<!DOCTYPE html>
<html>
<head><meta content="text/html;charset=utf-8" http-equiv="content-type" /><meta content="IE=Edge" http-equiv="X-UA-Compatible" /><meta content="always" name="referrer" /><link href="https://ss1.bdstatic.com/5eN1bjq8AAUVYm2zgY3K/r/ww/cache/bdorz/baidu.min.css" rel="stylesheet" type="text/css" /><title>百度一下,你就知道</title>
</head>
<body link="#0000cc"><div id="wrapper"><div id="head"><div class="head_wrapper"><div id="u1"><a class="mnav" href="http://news.baidu.com" name="tj_trnews"><!--新闻--></a><a class="mnav" href="http://news.baidu.com" name="tj_trnews">新闻</a><a class="mnav" href="https://www.hao123.com" name="tj_trhao123" ">hao123</a><a class="mnav" href="http://map.baidu.com" name="tj_trmap">地图</a><a class="mnav" href="http://v.baidu.com" name="tj_trvideo">视频</a><a class="mnav" href="http://tieba.baidu,com" name="tj_trtieba">贴吧</a><a class="bri" href=" //www.baidu.com/more/" name="tj_briicon" style="...">更多产品</a></div></div></div></div>
</body>
</html>

文件在浏览器中打开的截图:

化html文件为树形结构bs

1.Tag        标签及其内容:拿到它所找到的第一个内容

from bs4 import BeautifulSoupfile=open("./baidu.html","rb")   #以二进制方式打开文档
html=file.read()
bs=BeautifulSoup(html,"html.parser") #解析文档,用html的解析器print(bs.title)

<title>百度一下,你就知道</title>

from bs4 import BeautifulSoupfile=open("./baidu.html","rb")   #以二进制方式打开文档
html=file.read()
bs=BeautifulSoup(html,"html.parser") #解析文档,用html的解析器print(bs.a)

<a class="mnav" href="http://news.baidu.com" name="tj_trnews"><!--新闻--></a>

from bs4 import BeautifulSoupfile=open("./baidu.html","rb")   #以二进制方式打开文档
html=file.read()
bs=BeautifulSoup(html,"html.parser") #解析文档,用html的解析器print(bs.head)

<head>
<meta content="text/html;charset=utf-8" http-equiv="content-type"/>
<meta content="IE=Edge" http-equiv="X-UA-Compatible"/>
<meta content="always" name="referrer"/>
<link href="https://ss1.bdstatic.com/5eN1bjq8AAUVYm2zgY3K/r/ww/cache/bdorz/baidu.min.css" rel="stylesheet" type="text/css"/>
<title>百度一下,你就知道</title>
</head>

类型

from bs4 import BeautifulSoupfile=open("./baidu.html","rb")   #以二进制方式打开文档
html=file.read()
bs=BeautifulSoup(html,"html.parser") #解析文档,用html的解析器print(type(bs.head))

<class 'bs4.element.Tag'>

2.NavigableString        标签里面的内容(字符串)

from bs4 import BeautifulSoupfile=open("./baidu.html","rb")   #以二进制方式打开文档
html=file.read()
bs=BeautifulSoup(html,"html.parser") #解析文档,用html的解析器print(bs.title)print(bs.title.string)print(type(bs.title.string))

<title>百度一下,你就知道</title>
百度一下,你就知道
<class 'bs4.element.NavigableString'>

拿到一个标签里面所有的属性(字典)

from bs4 import BeautifulSoupfile=open("./baidu.html","rb")   #以二进制方式打开文档
html=file.read()
bs=BeautifulSoup(html,"html.parser") #解析文档,用html的解析器print(bs.a.attrs)

{'class': ['mnav'], 'href': 'http://news.baidu.com', 'name': 'tj_trnews'}

3.BeautifulSoup        表示整个文档

类型

from bs4 import BeautifulSoupfile=open("./baidu.html","rb")   #以二进制方式打开文档
html=file.read()
bs=BeautifulSoup(html,"html.parser") #解析文档,用html的解析器print(type(bs))

<class 'bs4.BeautifulSoup'>

名字

from bs4 import BeautifulSoupfile=open("./baidu.html","rb")   #以二进制方式打开文档
html=file.read()
bs=BeautifulSoup(html,"html.parser") #解析文档,用html的解析器print(bs.name)

[document]

树形文档

from bs4 import BeautifulSoupfile=open("./baidu.html","rb")   #以二进制方式打开文档
html=file.read()
bs=BeautifulSoup(html,"html.parser") #解析文档,用html的解析器print(bs)
<!DOCTYPE html><html>
<head>
<meta content="text/html;charset=utf-8" http-equiv="content-type"/>
<meta content="IE=Edge" http-equiv="X-UA-Compatible"/>
<meta content="always" name="referrer"/>
<link href="https://ss1.bdstatic.com/5eN1bjq8AAUVYm2zgY3K/r/ww/cache/bdorz/baidu.min.css" rel="stylesheet" type="text/css"/>
<title>百度一下,你就知道</title>
</head>
<body link="#0000cc">
<div id="wrapper">
<div id="head">
<div class="head_wrapper">
<div id="u1">
<a class="mnav" href="http://news.baidu.com" name="tj_trnews"><!--新闻--></a>
<a class="mnav" href="http://news.baidu.com" name="tj_trnews">新闻</a>
<a "="" class="mnav" href="https://www.hao123.com" name="tj_trhao123">hao123</a><a class="mnav" href="http://map.baidu.com" name="tj_trmap">地图</a>
<a class="mnav" href="http://v.baidu.com" name="tj_trvideo">视频</a>
<a class="mnav" href="http://tieba.baidu,com" name="tj_trtieba">贴吧</a>
<a class="bri" href=" //www.baidu.com/more/" name="tj_briicon" style="...">更多产品</a>
</div>
</div>
</div>
</div>
</body>
</html>

4.Comment        是一个特殊的NacigableString,输出的内容不包含注释符号

from bs4 import BeautifulSoupfile=open("./baidu.html","rb")   #以二进制方式打开文档
html=file.read()
bs=BeautifulSoup(html,"html.parser") #解析文档,用html的解析器print(bs.a.string)
print(type(bs.a.string))

新闻
<class 'bs4.element.Comment'>

文档的遍历

from bs4 import BeautifulSoupfile=open("./baidu.html","rb")   #以二进制方式打开文档
html=file.read().decode("utf-8")
bs=BeautifulSoup(html,"html.parser") #解析文档,用html的解析器print(bs.head.contents)

['\n', <meta content="text/html;charset=utf-8" http-equiv="content-type"/>, '\n', <meta content="IE=Edge" http-equiv="X-UA-Compatible"/>, '\n', <meta content="always" name="referrer"/>, '\n', <link href="https://ss1.bdstatic.com/5eN1bjq8AAUVYm2zgY3K/r/ww/cache/bdorz/baidu.min.css" rel="stylesheet" type="text/css"/>, '\n', <title>百度一下,你就知道</title>, '\n']

得到列表,可以用下标来访问相关的元素

from bs4 import BeautifulSoupfile=open("./baidu.html","rb")   #以二进制方式打开文档
html=file.read().decode("utf-8")
bs=BeautifulSoup(html,"html.parser") #解析文档,用html的解析器print(bs.head.contents[1])

<meta content="text/html;charset=utf-8" http-equiv="content-type"/>

遍历文档树

  • 5.1 .contents:获取Tag的所有子节点,返回一个list
# tag的.content属性可以将tag的子节点以列表的方式输出
print(bs.head.contents)
#用列表索引来获取它的某一个元素
print(bs.head.contents[1])
  • 5.2 .children:获取Tag的所有子节点,返回一个生成器
for child in bs.body.children:print(child)
  • 5.3、.descendants:获取Tag的所有子孙节点
  • 5.4、.strings:如果Tag包含多个字符串,即在子孙节点中有内容,可以用此获取,而后进行遍历
  • 5.5、.stripped_strings: 与strings用法一致,只不过可以去除掉那些多余的空白内容
  • 5.6、.parent:获取Tag的父节点
  • 5.7、.parents:递归得到父辈元素的所有节点,返回一个生成器
  • 5.8、.previous_sibling: 获取当前Tag的上一T个节点,属性通常是字符串或空白,真实结果是当前标签与上一个标签之间的顿号和换行符
  • 5.9、.next_sibling: 获取当前Tag的下一个节点,属性通常是字符串或空白,真是结果是当前标签与下一个标签之间的顿号与换行符
  • 5.10、.previous_siblings:获取当前Tag的上面所有的兄弟节点,返回一个生成器
  • 5.11、.next_siblings:获取当前Tag的下面所有的兄弟节点,返回一个生成器
  • 5.12、.previous_element:获取解析过程中上一个被解析的对象(字符串或tag),可能与previous_sibling相同,但通常是不一样的
  • 5.13、.next_element:获取解析过程中下一个被解析的对象(字符串或tag),可能与next_sibling相同,但通常是不一样的
  • 5.14、.previous_elements:返回一个生成器,可以向前访问文档的解析内容
  • 5.15、.next_elements:返回一个生成器,可以向后访问文档的解析内容
  • 5.16、.has_attr:判断Tag是否包含属性

文档的搜索

(1)find_all()        字符串过滤:会查找与字符串完全匹配的内容

from bs4 import BeautifulSoupfile=open("./baidu.html","rb")   #以二进制方式打开文档
html=file.read().decode("utf-8")    #读取一个文档做为一个对象
bs=BeautifulSoup(html,"html.parser") #解析文档,用html的解析器#文档的搜索
#找到所有a标签的链接,放到一个列表里面
t_list=bs.find_all("a")
print(t_list)

[<a class="mnav" href="http://news.baidu.com" name="tj_trnews"><!--新闻--></a>, <a class="mnav" href="http://news.baidu.com" name="tj_trnews">新闻</a>, <a "="" class="mnav" href="https://www.hao123.com" name="tj_trhao123">hao123</a>, <a class="mnav" href="http://map.baidu.com" name="tj_trmap">地图</a>, <a class="mnav" href="http://v.baidu.com" name="tj_trvideo">视频</a>, <a class="mnav" href="http://tieba.baidu,com" name="tj_trtieba">贴吧</a>, <a class="bri" href=" //www.baidu.com/more/" name="tj_briicon" style="...">更多产品</a>]

正则表达式搜索:使用search()方法来匹配内容

from bs4 import BeautifulSoupfile=open("./baidu.html","rb")   #以二进制方式打开文档
html=file.read().decode("utf-8")    #读取一个文档做为一个对象
bs=BeautifulSoup(html,"html.parser") #解析文档,用html的解析器#文档的搜索
import re
t_list=bs.find_all(re.compile("a"))    #包含a的所有内容
print(t_list)

[<head>
<meta content="text/html;charset=utf-8" http-equiv="content-type"/>
<meta content="IE=Edge" http-equiv="X-UA-Compatible"/>
<meta content="always" name="referrer"/>
<link href="https://ss1.bdstatic.com/5eN1bjq8AAUVYm2zgY3K/r/ww/cache/bdorz/baidu.min.css" rel="stylesheet" type="text/css"/>
<title>百度一下,你就知道</title>
</head>, <meta content="text/html;charset=utf-8" http-equiv="content-type"/>, <meta content="IE=Edge" http-equiv="X-UA-Compatible"/>, <meta content="always" name="referrer"/>, <a class="mnav" href="http://news.baidu.com" name="tj_trnews"><!--新闻--></a>, <a class="mnav" href="http://news.baidu.com" name="tj_trnews">新闻</a>, <a "="" class="mnav" href="https://www.hao123.com" name="tj_trhao123">hao123</a>, <a class="mnav" href="http://map.baidu.com" name="tj_trmap">地图</a>, <a class="mnav" href="http://v.baidu.com" name="tj_trvideo">视频</a>, <a class="mnav" href="http://tieba.baidu,com" name="tj_trtieba">贴吧</a>, <a class="bri" href=" //www.baidu.com/more/" name="tj_briicon" style="...">更多产品</a>]

方法:传入一个函数(方法),根据函数的要求来搜索(了解)

from bs4 import BeautifulSoupfile=open("./baidu.html","rb")   #以二进制方式打开文档
html=file.read().decode("utf-8")    #读取一个文档做为一个对象
bs=BeautifulSoup(html,"html.parser") #解析文档,用html的解析器#文档的搜索
def name_is_exists(tag):return tag.has_attr("name")    #需要有name的标签的
t_list=bs.find_all(name_is_exists)print(t_list)

[<meta content="always" name="referrer"/>, <a class="mnav" href="http://news.baidu.com" name="tj_trnews"><!--新闻--></a>, <a class="mnav" href="http://news.baidu.com" name="tj_trnews">新闻</a>, <a "="" class="mnav" href="https://www.hao123.com" name="tj_trhao123">hao123</a>, <a class="mnav" href="http://map.baidu.com" name="tj_trmap">地图</a>, <a class="mnav" href="http://v.baidu.com" name="tj_trvideo">视频</a>, <a class="mnav" href="http://tieba.baidu,com" name="tj_trtieba">贴吧</a>, <a class="bri" href=" //www.baidu.com/more/" name="tj_briicon" style="...">更多产品</a>]

打印列表的方式

from bs4 import BeautifulSoupfile=open("./baidu.html","rb")   #以二进制方式打开文档
html=file.read().decode("utf-8")    #读取一个文档做为一个对象
bs=BeautifulSoup(html,"html.parser") #解析文档,用html的解析器#文档的搜索
def name_is_exists(tag):return tag.has_attr("name")
t_list=bs.find_all(name_is_exists)#print(t_list)
for item in t_list:print(item)

<meta content="always" name="referrer"/>
<a class="mnav" href="http://news.baidu.com" name="tj_trnews"><!--新闻--></a>
<a class="mnav" href="http://news.baidu.com" name="tj_trnews">新闻</a>
<a "="" class="mnav" href="https://www.hao123.com" name="tj_trhao123">hao123</a>
<a class="mnav" href="http://map.baidu.com" name="tj_trmap">地图</a>
<a class="mnav" href="http://v.baidu.com" name="tj_trvideo">视频</a>
<a class="mnav" href="http://tieba.baidu,com" name="tj_trtieba">贴吧</a>
<a class="bri" href=" //www.baidu.com/more/" name="tj_briicon" style="...">更多产品</a>

(2)kwargs 参数

我想找到id="head"的内容

from bs4 import BeautifulSoupfile=open("./baidu.html","rb")   #以二进制方式打开文档
html=file.read().decode("utf-8")    #读取一个文档做为一个对象
bs=BeautifulSoup(html,"html.parser") #解析文档,用html的解析器#文档的搜索
t_list=bs.find_all(id="head")for item in t_list:print(item)

<div id="head">
<div class="head_wrapper">
<div id="u1">
<a class="mnav" href="http://news.baidu.com" name="tj_trnews"><!--新闻--></a>
<a class="mnav" href="http://news.baidu.com" name="tj_trnews">新闻</a>
<a "="" class="mnav" href="https://www.hao123.com" name="tj_trhao123">hao123</a><a class="mnav" href="http://map.baidu.com" name="tj_trmap">地图</a>
<a class="mnav" href="http://v.baidu.com" name="tj_trvideo">视频</a>
<a class="mnav" href="http://tieba.baidu,com" name="tj_trtieba">贴吧</a>
<a class="bri" href=" //www.baidu.com/more/" name="tj_briicon" style="...">更多产品</a>
</div>
</div>
</div>

我想找到含有class类的内容

from bs4 import BeautifulSoupfile=open("./baidu.html","rb")   #以二进制方式打开文档
html=file.read().decode("utf-8")    #读取一个文档做为一个对象
bs=BeautifulSoup(html,"html.parser") #解析文档,用html的解析器#文档的搜索
t_list=bs.find_all(class_=True)for item in t_list:print(item)

<div class="head_wrapper">
<div id="u1">
<a class="mnav" href="http://news.baidu.com" name="tj_trnews"><!--新闻--></a>
<a class="mnav" href="http://news.baidu.com" name="tj_trnews">新闻</a>
<a "="" class="mnav" href="https://www.hao123.com" name="tj_trhao123">hao123</a><a class="mnav" href="http://map.baidu.com" name="tj_trmap">地图</a>
<a class="mnav" href="http://v.baidu.com" name="tj_trvideo">视频</a>
<a class="mnav" href="http://tieba.baidu,com" name="tj_trtieba">贴吧</a>
<a class="bri" href=" //www.baidu.com/more/" name="tj_briicon" style="...">更多产品</a>
</div>
</div>
<a class="mnav" href="http://news.baidu.com" name="tj_trnews"><!--新闻--></a>
<a class="mnav" href="http://news.baidu.com" name="tj_trnews">新闻</a>
<a "="" class="mnav" href="https://www.hao123.com" name="tj_trhao123">hao123</a>
<a class="mnav" href="http://map.baidu.com" name="tj_trmap">地图</a>
<a class="mnav" href="http://v.baidu.com" name="tj_trvideo">视频</a>
<a class="mnav" href="http://tieba.baidu,com" name="tj_trtieba">贴吧</a>
<a class="bri" href=" //www.baidu.com/more/" name="tj_briicon" style="...">更多产品</a>

我想找到含有href="http://news.baidu.com"的内容

from bs4 import BeautifulSoupfile=open("./baidu.html","rb")   #以二进制方式打开文档
html=file.read().decode("utf-8")    #读取一个文档做为一个对象
bs=BeautifulSoup(html,"html.parser") #解析文档,用html的解析器#文档的搜索
t_list=bs.find_all(href="http://news.baidu.com")for item in t_list:print(item)

<a class="mnav" href="http://news.baidu.com" name="tj_trnews"><!--新闻--></a>
<a class="mnav" href="http://news.baidu.com" name="tj_trnews">新闻</a>

(3)text参数(文本参数)

from bs4 import BeautifulSoupfile=open("./baidu.html","rb")   #以二进制方式打开文档
html=file.read().decode("utf-8")    #读取一个文档做为一个对象
bs=BeautifulSoup(html,"html.parser") #解析文档,用html的解析器#文档的搜索
t_list=bs.find_all(text="hao123")for item in t_list:print(item)

hao123

from bs4 import BeautifulSoupfile=open("./baidu.html","rb")   #以二进制方式打开文档
html=file.read().decode("utf-8")    #读取一个文档做为一个对象
bs=BeautifulSoup(html,"html.parser") #解析文档,用html的解析器t_list=bs.find_all(text=["hao123","地图","贴吧"])for item in t_list:print(item)

hao123
地图
贴吧

应用正则表达式来查找包含特定文本的内容(标签里的字符串)

from bs4 import BeautifulSoupfile=open("./baidu.html","rb")   #以二进制方式打开文档
html=file.read().decode("utf-8")    #读取一个文档做为一个对象
bs=BeautifulSoup(html,"html.parser") #解析文档,用html的解析器import re
#应用正则表达式来查找包含特定文本的内容(标签里的字符串)
t_list=bs.find_all(text=re.compile("\d"))   #\d表示数字for item in t_list:print(item)

hao123

限制查找个数

from bs4 import BeautifulSoupfile=open("./baidu.html","rb")   #以二进制方式打开文档
html=file.read().decode("utf-8")    #读取一个文档做为一个对象
bs=BeautifulSoup(html,"html.parser") #解析文档,用html的解析器t_list=bs.find_all("a",limit=3)for item in t_list:print(item)

<a class="mnav" href="http://news.baidu.com" name="tj_trnews"><!--新闻--></a>
<a class="mnav" href="http://news.baidu.com" name="tj_trnews">新闻</a>
<a "="" class="mnav" href="https://www.hao123.com" name="tj_trhao123">hao123</a>

css选择器

通过标签来查找

from bs4 import BeautifulSoupfile=open("./baidu.html","rb")   #以二进制方式打开文档
html=file.read().decode("utf-8")    #读取一个文档做为一个对象
bs=BeautifulSoup(html,"html.parser") #解析文档,用html的解析器t_list=bs.select('title')   #通过标签来查找for item in t_list:print(item)

<title>百度一下,你就知道</title>

通过类名来查找

from bs4 import BeautifulSoupfile=open("./baidu.html","rb")   #以二进制方式打开文档
html=file.read().decode("utf-8")    #读取一个文档做为一个对象
bs=BeautifulSoup(html,"html.parser") #解析文档,用html的解析器t_list=bs.select(".mnav")   #通过标签来查找for item in t_list:print(item)

<a class="mnav" href="http://news.baidu.com" name="tj_trnews"><!--新闻--></a>
<a class="mnav" href="http://news.baidu.com" name="tj_trnews">新闻</a>
<a "="" class="mnav" href="https://www.hao123.com" name="tj_trhao123">hao123</a>
<a class="mnav" href="http://map.baidu.com" name="tj_trmap">地图</a>
<a class="mnav" href="http://v.baidu.com" name="tj_trvideo">视频</a>
<a class="mnav" href="http://tieba.baidu,com" name="tj_trtieba">贴吧</a>

通过id来查找

from bs4 import BeautifulSoupfile=open("./baidu.html","rb")   #以二进制方式打开文档
html=file.read().decode("utf-8")    #读取一个文档做为一个对象
bs=BeautifulSoup(html,"html.parser") #解析文档,用html的解析器t_list=bs.select("#u1")   #通过id来查找for item in t_list:print(item)

<div id="u1">
<a class="mnav" href="http://news.baidu.com" name="tj_trnews"><!--新闻--></a>
<a class="mnav" href="http://news.baidu.com" name="tj_trnews">新闻</a>
<a "="" class="mnav" href="https://www.hao123.com" name="tj_trhao123">hao123</a><a class="mnav" href="http://map.baidu.com" name="tj_trmap">地图</a>
<a class="mnav" href="http://v.baidu.com" name="tj_trvideo">视频</a>
<a class="mnav" href="http://tieba.baidu,com" name="tj_trtieba">贴吧</a>
<a class="bri" href=" //www.baidu.com/more/" name="tj_briicon" style="...">更多产品</a>
</div>

通过属性来查找

from bs4 import BeautifulSoupfile=open("./baidu.html","rb")   #以二进制方式打开文档
html=file.read().decode("utf-8")    #读取一个文档做为一个对象
bs=BeautifulSoup(html,"html.parser") #解析文档,用html的解析器t_list=bs.select("a[class='bri']")   #通过属性来查找for item in t_list:print(item)

<a class="bri" href=" //www.baidu.com/more/" name="tj_briicon" style="...">更多产品</a>

通过子标签来查找

from bs4 import BeautifulSoupfile=open("./baidu.html","rb")   #以二进制方式打开文档
html=file.read().decode("utf-8")    #读取一个文档做为一个对象
bs=BeautifulSoup(html,"html.parser") #解析文档,用html的解析器t_list=bs.select("head>title")   #通过子标签来查找for item in t_list:print(item)

<title>百度一下,你就知道</title>

通过兄弟标签来查找

from bs4 import BeautifulSoupfile=open("./baidu.html","rb")   #以二进制方式打开文档
html=file.read().decode("utf-8")    #读取一个文档做为一个对象
bs=BeautifulSoup(html,"html.parser") #解析文档,用html的解析器t_list=bs.select(".mnav ~ .bri")   #通过兄弟标签来查找print(t_list[0].get_text())

更多产品

BeautifulSoup用于html文件解析相关推荐

  1. dxf文件解析,g代码解析,图片解析C#工程文件 可用于激光切割机,打印机,打码机,巡边机,点胶机等运动控制系统

    dxf文件解析,g代码解析,图片解析C#工程文件 1.解析完成的图形坐标自动保存,通过通信接口直接下发即可 2.可用于激光切割机,打印机,打码机,巡边机,点胶机等运动控制系统 ID:483000659 ...

  2. python 数据分析之 HTML文件解析

    python 数据分析之 HTML文件解析 一 :Html 1. Html 理解 2. Html 介绍 3. Html 构成 4. HTML结构 介绍 1> HTML文件结构 A: 文档类型声明 ...

  3. Json文件解析(下

    Json文件解析(下) 代码地址:https://github.com/nlohmann/json 从STL容器转换 任何序列容器(std::array,std::vector,std::deque, ...

  4. Json文件解析(上)

    Json文件解析(上) 代码地址:https://github.com/nlohmann/json 自述文件 alt=GitHub赞助商 data-canonical-src="https: ...

  5. OpenCV读写视频文件解析(二)

    OpenCV读写视频文件解析(二) VideoCapture::set 设置视频捕获中的属性. C++: bool VideoCapture::set(int propId, double value ...

  6. 文件解析库doctotext源码分析

    doctotext中没有make install选项,make后生成可执行文件 在buile目录下面有.so动态库和头文件,需要的可以从这里面拷贝 build/doctotext就是可执行程序. do ...

  7. Android init.rc文件解析过程详解(三)

    Android init.rc文件解析过程详解(三) 三.相关结构体 1.listnode listnode结构体用于建立双向链表,这种结构广泛用于kernel代码中, android源代码中定义了l ...

  8. MyBatis 源码分析 - 映射文件解析过程

    1.简介 在上一篇文章中,我详细分析了 MyBatis 配置文件的解析过程.由于上一篇文章的篇幅比较大,加之映射文件解析过程也比较复杂的原因.所以我将映射文件解析过程的分析内容从上一篇文章中抽取出来, ...

  9. 2020-10-27(dex文件解析)

    一张图搞懂dex 大图这里 当然也可以通过下面的图12 DexFile的文件格式,了解更清楚. DEX文件详解 什么是dex文件? 如何生成一个dex文件 dex文件的作用 dex文件格式详解 什么是 ...

最新文章

  1. 水稻微生物组时间序列分析精讲1-模式图与主坐标轴分析
  2. 的安装配置_JDK安装与配置
  3. HMM 前向 后向 Viterbi算法讲解通透的
  4. python编程入门书籍推荐-给刚入门python的朋友推荐几本书
  5. java jfreechart下载_jfreechart下载-JFreeChart下载安装[java图表插件]-PC下载网
  6. java swing 弹出登录框_用JavaSwing制作一个简单的登录框
  7. 腾讯二面挂了,就因为这个...
  8. java面试题31:结构型模式中最体现扩展性的模式是()
  9. PyTorch之实现LeNet-5卷积神经网络对mnist手写数字图片进行分类
  10. JS中SetTimeOut和SetInterval方法的区别?
  11. C#判断文字是否为汉字
  12. oracle pl/sql发送邮件多个收件人问题
  13. Java坦克大战Summary
  14. 深入游戏变速底层原理以及内核变速的实现
  15. 实现socket监听所有网络命名空间
  16. 安卓一键清理内存_雨点清理安卓版下载-雨点清理官方版下载v1.0
  17. 【Lintcode】1413. Tree
  18. 万能手机usb内窥镜软件下载_万能证件生成器手机版-万能证件生成器手机版下载 v1.0 免费版...
  19. 国产CI/CD工具Commander
  20. Android.mk编译java动态库

热门文章

  1. onDestroy 延时10s调用
  2. 【华为OD机试真题2023B卷 JAVAJS】评论转换输出
  3. python读取tiff文件_python+tifffile之tiff文件读写方式
  4. 注解@OneToMany@ManyToOne和@ManyToMany的使用总结
  5. python算法之组合总和
  6. 27什么样的图片是好图片
  7. p10 android 9,一大波华为手机开启Android 9.0测试 包括Mate 9和P10系
  8. 使用 Docker 制作一个盒装部落格
  9. 毕业入行测试5年,从“懵懂少年”到“甩锅老油条”,我的经验值得你的借鉴~
  10. matlab y2=sin(3t)exp(-t/3);,Matlab工程应用基础_3_3_西安交通大学:Matlab工程应用基础(姜歌东)_ppt_大学课件预览_高等教育资讯网...