python爬虫之BeautifulSoup库程序笔记

# from bs4 import BeautifulSoup
# html = ''
# soup = BeautifulSoup(html,'lxml')   #使用lxml解析器
# print(soup.prettify())  #格式化网页代码,将页面代码补全
# print(soup.title.string) # 输出title的字符型


# 标签选择器
# # 选择元素:
# from bs4 import BeautifulSoup
# html = '<html><head><title>我是谁</title></head><body><p>我来自哪里</p></body></html>'
# soup = BeautifulSoup(html,'lxml')
# print(soup.prettify())
# print(soup.title)  # 打印出title的内容,注意打印出的同时包含title标签
# print(type(soup.title))   # 打印title的类型
# print(soup.head)  # 打印soup的内容
#

# 获取内容
# from bs4 import BeautifulSoup
# html = '<html><head><title>我是谁</title></head><body><p>我来自哪里</p></body></html>'
# soup = BeautifulSoup(html,'lxml')
# print(soup.title.name)  #获取较近的标签的名称


# 获取属性
# from bs4 import BeautifulSoup
# html = '<html><head><title>我是谁</title></head><body><p class="where" name="who" >我来自哪里</p></body></html>'
# soup = BeautifulSoup(html,'lxml')
# print(soup.p.attrs['name'])   # 方法1:获取属性name的方法
# print(soup.p['name'])   #方法2:获取属性name,直接用.标签加中括号的方式

# 获取内容
# print(soup.p.string)


# 嵌套选择
from bs4 import BeautifulSoup
# html = '<html><head><title>我是谁</title></head><body><p class="where" name="who" >我来自哪里</p></body></html>'
# soup = BeautifulSoup(html,'lxml')
# print(soup.head.title.string)  # head中嵌套title


# 子节点和子孙节点
# from bs4 import BeautifulSoup
# html = '<html><head><title>我是谁</title></head><body><p class="where" name="who" >我来自哪里</p></body></html>'
# soup = BeautifulSoup(html,'lxml')
# print(soup.p.contents)   # .contents表示子节点的内容,本质是p中的所有子节点的内容
# # print(soup.p.children)
# for i,child in enumerate(soup.p.children):
#     print(i,child)
#   # 本质是一个迭代器,不断遍历,使用enumerate方法返回节点内容和索引
# 与之相对应获取子孙节点
# print(soup.p.descendants)
# for i,child in enumerate(soup.p.descendants)
#     print(i,child)
#    使用descendants方法将子孙节点获取出来


# # 父节点和祖先节点
# from bs4 import BeautifulSoup
# html = '<html><head><title>我是谁</title></head><body><p class="where" name="who" >我来自哪里</p></body></html>'
# soup = BeautifulSoup(html,'lxml')
# print(soup.p.parent)  # 获取父节点
# print(soup.p.parent.string)
# print(list(enumerate(soup.p.parents)))
#


# 获取兄弟节点
# from bs4 import BeautifulSoup
# html = '<html><head><title>我是谁</title></head><body><h2>我也不知道</h2><p class="where" name="who" >我来自哪里</p><h3>你好</h3></body></html>'
# soup = BeautifulSoup(html,'lxml')
# print(list(enumerate(soup.p.next_siblingsstring)))   # p标签的后一个兄弟标签
# print(list(enumerate(soup.p.previous_siblings)))  # p 标签前一个兄弟标签


# 标准选择器
# find_all(name,attrs,recurslve,text)
# 可以根据标签名属性内容查找文档
# from bs4 import BeautifulSoup
# html = '<html><head><title>我是谁</title></head><body><h2 id="hello" ><li>hello</li><li>world</li></h2><p class="where" name="who" >我来自哪里</p><h2 id="world"><li>你好</li><li>世界</li></h2></body></html>'
# soup = BeautifulSoup(html,'lxml')
# print(soup.find_all('h2'))   #  返回所有的h2标签
# print(type(soup.find_all('h2')[0]))
# print(soup.find_all('h2')[0])   # 打印出第一个h2标签的内容
# 对标签进行遍历
# for h in soup.find_all('h2'):
#     print(h.find_all('li'))
# print(soup.find_all(attrs={'class':'where'}))  # 利用attrs传入字典形式的属性和属性值
# # 对于id和class等特殊类型的查找


# print(soup.find_all(id='hello'))   # 直接利用id查找
# print(soup.find_all(class_='where'))  # 利用class_查找


# # 根据文本内容进行选择
# print(soup.find_all(text='hello'))
# print(soup.find_all(text='你好'))  # 返回的是内容,根据text的内容返回内容

# find()
# 与find_all方法类似,只不过返回的是匹配结果的第一个元素


# css选择器
# 通过select()直接传入css选择器
# 类似于web中的class用点表示class,用#表示id,也可以直接将标签直接传入
# print(soup.select('.where'))  # 用.表示class,#表示id,可以嵌套,即.where.hello
# print(soup.select('#hello'))
# from bs4 import BeautifulSoup
# html = '<html><head><title>我是谁</title></head><body><div id="hello" ><li>hello</li><li>world</li></div><p class="where" name="who" >我来自哪里</p><div id="world"><li>你好</li><li>世界</li></div></body></html>'
# soup = BeautifulSoup(html, 'lxml')
# # for d in soup.select('div'):
#     print(d.select('li'))
# 也可以使用ul标签来进行迭代,输出li的标签


# 获取属性值
# for d in soup.select('div'):
#     print(d['id'])

# 获取内容
# from bs4 import BeautifulSoup
# html = '<html><head><title>我是谁</title></head><body><div id="hello" ><li>hello</li><li>world</li></div><p class="where" name="who" >我来自哪里</p><div id="world"><li>你好</li><li>世界</li></div></body></html>'
# soup = BeautifulSoup(html,'lxml')
# for d in soup.select('div'):
#     print(d.get_text())   # 使用get_text()方法获得div中的内容
#     

猜你喜欢

转载自blog.csdn.net/qq_40605167/article/details/81292265
今日推荐