python3_BeautifulSoup

BeautifulSoup 类型的基本元素

Tag     			标签,最基本的信息组织单元,分别用<></>标明开头和结尾
Name    			标签的名字,<p>...</p>的名字就是p,格式<tag>.name如:soup.p.name
Attributes  		标签的属性,字典形式组织,格式:<tag>.attrs
NavigableString     标签内非属性字符串,<>...</>中字符串,格式<tag>.string
Comment     		标签内字符串的注释部分,一种特殊的Comment类型

HTML基本格式

下行遍历,上行遍历,平行遍历

标签树的下行遍历

.contents 		子节点的列表,将<tag>所有儿子节点存入列表
.childern   	子节点的迭代类型,与.contents类似,用于循环遍历儿子节点
.decendants 	子孙节点的迭代类型,包含所有的子孙节点,用于循环遍历

标签树的上行遍历

.parent     节点的父标签
.parents    节点的先辈标签的迭代类型,用于循环遍历先辈节点

标签树的平行遍历,在同一父节点下

.next_sibling   	返回按照HTML文本顺序的下一个平行节点标签
.previous_sibling   返回按照HTML文本顺序的上一个平行节点标签
.next_siblings 		迭代类型,返回按照HTML文本顺序的后续所有平行节点标签
.previons_siblings  迭代类型,返回按照HTML文本顺序的前续所有平行节点标签

soup查找的方法

.find_all(name,attrs,recursive,string,**kwargs)
name:		对标签名称的检索字符串
attrs:		对标签属性的检索字符串,可标注属性检索
recursive:	是否对子孙全部检索,默认True
string:
soup.find_all(['a','b'],recursive=Faile)

扩展方法:

.find()     		搜索且只返回一个结果,字符串类型,同find_all()参数
.find_parents() 	在先辈节点中搜索,返回列表类型,内find_all()参数
.find_parent()   	在先辈节点中返回一个结果,字符串类型
.find_next_siblings()    在后续平行节点中搜索,返回列表类型
.find_next_sibling()     在后续平行节点中返回一个结果,字符型
.find.previons_siblings()   在前序平行节点地返回列表类型
.find.previons_sibling()    在前序平行节点中返回一个结果,字符串类型

获得网页

import requests
from bs4 import BeautifulSoup
import re

url='https://python123.io/ws/demo.html'
try:
    r=requests.get(url)
    r.raise_for_status()
    r.encoding=r.apparent_encoding
    demo=r.text
except:
    print('urlget error')

BeautifulSoup 对象生成
BeautifulSoup类型的基本元素,类,名称,标签属性,字符串

soup=BeautifulSoup(demo,'html.parser')
soup.a
soup.a.parent.name
soup.a.name
soup.a.attrs
soup.a.string
type(soup.a)
type(soup.a.parent.attrs)

beautifulSoup遍历信息下行遍历
soup.body.contents 儿子节点的
len(soup.body.contents) 获取子节点数量

soup.body.contents[1]
i=0
for item in soup.body.contents:
    i=i+1
    print(i,item)
for child in soup.body.children:
    print(child)

上行遍历 .
soup.title.parent
soup.html.parent

for parent in soup.a.parents:
    if parent is None:
        print(parent)
    else:
        print(parent.name)

平行标签

soup.a.next_sibling
soup.a.next_sibling.next_sibling
soup.a.previous_sibling
for sibling in soup.a.next_siblings: #遍历后续节点
    print(sibling)
for sibling in soup.a.previous_siblings:  #遍历前续节点
    print(sibling)

取出soup及标签的perttify()----美化展示方式

soup.prettify()
print(soup.prettify())
print(soup.a.prettify())

信息获取

for link in soup.find_all('a'):
    print(link.get('href'))

所有标签信息

for tag in soup.find_all(True):
    print(tag.name)
print('查找b类型的标签')
for tag in soup.find_all(re.compile('b')):
    print(tag.name)

soup.find_all('p','course')

你可能感兴趣的:(python库)