Python爬虫学习纪要(一):BeautifulSoup相关知识点
来源:互联网 发布:网络高清解码器 编辑:程序博客网 时间:2024/06/04 19:24
一、BeautifulSoup对象:
1)Tag:Tag就是html文件中的标签以及标签之间的内容(注:如果得到的是'bs4.element.Tag'类型的对象可以继续进行后续的);
2)NavigableString:由.String方法得到(注:类型为bs4.element.NavigableString);
3)BeautifulSoup:一个文档的全部内容(注:一个特殊的Tag);
4)Comment:它是NavigableString类型的一个子类。
1.Tag介绍:
1.1 .name:Tag对象的.name方法得到该Tag的标签本身名称。
# print(soup.title.name)
1.2 .attrs:Tag对象的.attrs将得到标签中所有属性的字典。
# print(soup.p.attrs)
1.3 其它操作:如修改、删除、读取等。
# print(soup.p['class'])
# print(soup.p.get('class'))
# soup.p['class'] = 'newClass'
# del soup.p['class']
2、NavigableString介绍:
# print(soup.p.string)
# print(type(soup.p.string))
3、BeautifulSoup介绍:
# print(type(soup.name))
# print(soup.name)
# print(soup.attrs)
4、Comment介绍:和CData,ProcessingInstruction,Declaration,Doctype一样,它是NavigableString类型的一个子类。
二、树的遍历:
子孙节点、父亲节点、兄弟节点、前后节点、节点内容。
2.1、子孙节点:
1).content:
# print(soup.head.contents)
# print(soup.head.content[0])
2).children:
可得到一个子节点的迭代器,可以遍历其中的元素。
# for child in soup.body.children:
print(child)
3).descendants:
与.content和.children只得到直接子节点不同,.descendants能对所有子孙节点迭代循环,将标签层层剥离得到所有子节点,同样通过遍历的方法得到每个子孙节点。
# for child in soup.descendants:
print(child)
2.2、父亲节点:
1).parent:得到其直接父节点
2).parents:得到元素的所有父节点
# contnet = soup.head.title.string
for parent in content.parents:
print(parent.name)
2.3、兄弟节点:
1).next_sibling和.next_siblings:
前者得到Tag对象平级的下一个节点,如果不存在则返回None;后者得到Tag对象平级的下面所有兄弟节点。
2).previous_sibling和.previous_siblings:
前者到Tag对象平级的上一个节点,如果不存在则返回None;后者得到Tag对象平级的上面所有兄弟节点。(注:由于在HTML文档中的空白和换行也被视作是一个节点,所以可能得到的兄弟节点(或者子节点父节点)会是空白类型或者字符串类型而不是Tag。)
2.4、前后节点:
1).next_element和.next_elements:
与 .next_sibling和.next_siblings 不同,它并不是针对于兄弟节点,而是在所有节点,不分层次得到下一个节点和所有的后续节点。.next_elements的结果通过遍历访问。
2).previous_element和.previous_elements:
这两个方法将不分层次得到上一个节点和所有之前的节点。.previous_elements的结果通过遍历访问。
2.5、节点内容:
1).string:(注:如果Tag包含了多个子节点,Tag就无法确定.string 方法应该调用哪个子节点的内容,输出结果是 None)
# print(soup.head.string)
2).strings和.stripped_strings:当一个Tag对象有多个子节点时,可以用.strings方法再通过遍历获得所有子节点的内容。
# for string in soup.strings:
print(repr(string))
3).get_text():如果你仅仅想要得到文档或者标签的文本部分,可以使用.get_text()方法
1)Tag:Tag就是html文件中的标签以及标签之间的内容(注:如果得到的是'bs4.element.Tag'类型的对象可以继续进行后续的);
2)NavigableString:由.String方法得到(注:类型为bs4.element.NavigableString);
3)BeautifulSoup:一个文档的全部内容(注:一个特殊的Tag);
4)Comment:它是NavigableString类型的一个子类。
1.Tag介绍:
1.1 .name:Tag对象的.name方法得到该Tag的标签本身名称。
# print(soup.title.name)
1.2 .attrs:Tag对象的.attrs将得到标签中所有属性的字典。
# print(soup.p.attrs)
1.3 其它操作:如修改、删除、读取等。
# print(soup.p['class'])
# print(soup.p.get('class'))
# soup.p['class'] = 'newClass'
# del soup.p['class']
2、NavigableString介绍:
# print(soup.p.string)
# print(type(soup.p.string))
3、BeautifulSoup介绍:
# print(type(soup.name))
# print(soup.name)
# print(soup.attrs)
4、Comment介绍:和CData,ProcessingInstruction,Declaration,Doctype一样,它是NavigableString类型的一个子类。
二、树的遍历:
子孙节点、父亲节点、兄弟节点、前后节点、节点内容。
2.1、子孙节点:
1).content:
# print(soup.head.contents)
# print(soup.head.content[0])
2).children:
可得到一个子节点的迭代器,可以遍历其中的元素。
# for child in soup.body.children:
print(child)
3).descendants:
与.content和.children只得到直接子节点不同,.descendants能对所有子孙节点迭代循环,将标签层层剥离得到所有子节点,同样通过遍历的方法得到每个子孙节点。
# for child in soup.descendants:
print(child)
2.2、父亲节点:
1).parent:得到其直接父节点
2).parents:得到元素的所有父节点
# contnet = soup.head.title.string
for parent in content.parents:
print(parent.name)
2.3、兄弟节点:
1).next_sibling和.next_siblings:
前者得到Tag对象平级的下一个节点,如果不存在则返回None;后者得到Tag对象平级的下面所有兄弟节点。
2).previous_sibling和.previous_siblings:
前者到Tag对象平级的上一个节点,如果不存在则返回None;后者得到Tag对象平级的上面所有兄弟节点。(注:由于在HTML文档中的空白和换行也被视作是一个节点,所以可能得到的兄弟节点(或者子节点父节点)会是空白类型或者字符串类型而不是Tag。)
2.4、前后节点:
1).next_element和.next_elements:
与 .next_sibling和.next_siblings 不同,它并不是针对于兄弟节点,而是在所有节点,不分层次得到下一个节点和所有的后续节点。.next_elements的结果通过遍历访问。
2).previous_element和.previous_elements:
这两个方法将不分层次得到上一个节点和所有之前的节点。.previous_elements的结果通过遍历访问。
2.5、节点内容:
1).string:(注:如果Tag包含了多个子节点,Tag就无法确定.string 方法应该调用哪个子节点的内容,输出结果是 None)
# print(soup.head.string)
2).strings和.stripped_strings:当一个Tag对象有多个子节点时,可以用.strings方法再通过遍历获得所有子节点的内容。
# for string in soup.strings:
print(repr(string))
3).get_text():如果你仅仅想要得到文档或者标签的文本部分,可以使用.get_text()方法
阅读全文
0 0
- Python爬虫学习纪要(一):BeautifulSoup相关知识点
- Python爬虫学习纪要(二):BeautifulSoup相关知识点2
- Python爬虫学习纪要(十一):BeautifulSoup相关知识点3
- Python爬虫学习纪要(十二):BeautifulSoup相关知识点4
- Python爬虫包 BeautifulSoup 学习(一) 简介与安装
- python beautifulsoup 爬虫学习
- python爬虫(一)BeautifulSoup简介
- Python爬虫学习纪要(三):正则表达式
- Python爬虫学习纪要(四):正则表达式1
- Python爬虫学习纪要(五):正则表达式2
- Python 爬虫实战(一):使用 requests 和 BeautifulSoup
- Python爬虫知识点一
- Python爬虫包 BeautifulSoup 学习(二) 异常处理
- Python爬虫包 BeautifulSoup 学习(三) 实例
- Python爬虫包 BeautifulSoup 学习(五) 实例
- Python爬虫包 BeautifulSoup 学习(六) 递归抓取
- Python爬虫包 BeautifulSoup 学习(七) children等应用
- Python爬虫包 BeautifulSoup 学习(八) parent等应用
- 线段树,区间开方(Rikka with Sequence,HDU 5828)
- 10129
- [GNU/Linux] Linux系统调用-线程相关(二):线程同步
- 1068. Find More Coins (30)
- [POJ]2406Power Strings KMP
- Python爬虫学习纪要(一):BeautifulSoup相关知识点
- 浅谈C++STL中的优先队列
- 两阶段提交2PC
- 搜索专题: HDU1016Prime Ring Problem
- JS判断一个对象是否为document.Element
- (2) 数据结构的起源--每天五分钟学习数据结构
- LeetCode 283 Move Zeroes
- MySQL 排序
- PYTHON自学手册--用户登陆接口