爬虫之BeautifulSoup


BeautifuSoup4将复杂HTML文档转换成一个复杂度树形结构,每个节点都是Python对象,所有对象可以归纳为4种:
(1)Tag 标签及内容:拿到它所找到度第一个内容
(2)NavigableString 标签里度内容(字符串)
(3)BeautifulSoup 表示整个文档
(4)Comment 是一个特殊度NavigableString 输出的内容不包含注释符号
代码:
import re
from bs4 import BeautifulSoup

file = open("./baidu.html","rb")
html = file.read().decode("utf-8")
bs = BeautifulSoup(html,"html.parser")

#print(bs.title)
#print(bs.a)
#print(bs.head)
#print(bs.name) 每个tag都有自己的名字,通过 .name 来获取:
#print(bs.attrs)
#print(bs)

#文档的遍历
#print(bs.head.contents)
#print(bs.head.contents[1])

#文档的搜索,搜索当前tag的所有tag子节点,并判断是否符合过滤器的条件
#(1)find_all()查找所有的a
#字符串过滤:查找与字符串完全匹配的内容
#t_list = bs.find_all("a")

#正则表达式搜索:search()方法来匹配内容
#t_list = bs.find_all(re.compile("a"))

#方法:传入一个函数(方法),根据函数的要求来搜索(了解)
# def name_is_exists(tag):
# return tag.has_attr("name")
#
# t_list = bs.find_all(name_is_exists)
#
# for item in t_list:
# print(item)
#
# print(t_list)

#2.kwargs 参数
#t_list = bs.find_all(id="head")  
#t_list = bs.find_all(class_=True) #查看所有有class的以及包含在内的子内容
#t_list = bs.find_all(href="http://news.baidu.com")

# for item in t_list:
# print(item)

#3.text 参数

#t_list = bs.find_all(text="hao123")
#t_list = bs.find_all(text=["hao123","地图","贴吧"])

#t_list = bs.find_all(text=re.compile("\d")) #利用正则表达式来查找包含特定文本的内容(标签里的字符串)

#4.limit 参数
# t_list = bs.find_all("a",limit=4)
# for item in t_list:
# print(item)

#5.选择器
#t_list = bs.select('title') #通过标签来查找
#t_list = bs.select(".mnav") #通过类名
#t_list = bs.select("#u1") #通过id查找
#t_list = bs.select("a[class='bri']") #通过属性来查找
#t_list = bs.select("head>title") 通过子标签来查找

t_list = bs.select(".mnav ~ .bri")
print(t_list[0].get_text())
# for item in t_list:
# print(item)
posted @ 2020-06-08 17:20  Eliphaz  阅读(95)  评论(0编辑  收藏  举报