pip install beautifulsoup4
import bs4
import requests
url = "http://www.baidu.com"
htmlFile = requests.get(url) # 获取网页内容
# apparent_encoding获取网页编码方式,自动识别网页编码
htmlFile.encoding = htmlFile.apparent_encoding
# 创建BeautifulSoup对象,使用lxml的方式解析HTML内容
objSoup = bs4.BeautifulSoup(htmlFile.text, 'lxml')
# print(objSoup)
print(type(objSoup)) #
# objSoup.tagName 返回标签首次出现的内容
# 1.获取网页标题--标签里面的内容
title = objSoup.title
print(title) # 百度一下,你就知道
# text属性获取标签文本内容
print(objSoup.title.text) # 百度一下,你就知道
# objSoup.find('tagName')
# find()函数可以查找HTML文件内第一个符合的标签内容
# 1.返回标签第一次出现的内容
first_a = objSoup.find('a')
print(first_a)
# 新闻
# 2.属性定位
# 查询class属性,需要使用class_
findById = objSoup.find('a', class_='mnav')
print(findById)
# 新闻
# 使用attrs参数
find_attrs = objSoup.find(attrs={'class': 'mnav'})
print(find_attrs)
# 新闻
# find_all():查找HTML中所有符合的标签内容,返回列表
# 1.传入单个指定标签
list_a = objSoup.find_all('a') # a标签的所有内容
print(list_a)
for a in list_a:
print(a.text)
# 新闻
# hao123
# 地图
# 视频
# 贴吧
# 登录
# 更多产品
# 关于百度
# About Baidu
# 使用百度前必读
# 意见反馈
# getText()获取元素内容
for i in range(len(list_a)):
print(list_a[i].getText)
# 2.传入多个标签
list2 = objSoup.find_all(['div', 'a'])
print(list2)
print(len(list2))
# 3.传入正则表达式
import re
list3 = objSoup.find_all(re.compile('^a')) # 查找全部以a开头的标签
print(list3)
list4 = objSoup.find_all(re.compile('^li')) # 查找全部以li开头的标签
print(list4)
标签的元素;
标签且id为name的元素
标签;
# select()
# 1.标签选择器:直接指定标签名
list5 = objSoup.select('p')
print(list5)
# 2.类(class)选择器:.
list6 = objSoup.select('.mnav')
print(list6)
# 3.id选择器:#
list7 = objSoup.select('#lh')
print(list7)
# []
# 层级选择器
list8 = objSoup.select('#lh a')
print(list8)
# [关于百度, About Baidu]
# 获取标签文本内容
# 1.text
text = objSoup.select('#lh a')[0].text
print(text) # 关于百度
# 2.string
str1 = objSoup.select('#lh a')[0].string
print(str1) # 关于百度
# 3.get_text()
text2 = objSoup.select('#lh a')[0].get_text()
print(text2) # 关于百度
# 使用get()获取标签中的属性
href = objSoup.select('#lh a')[0].get('href')
print(href) # http://home.baidu.com
first_a = objSoup.find('a')['href']
print(first_a) # http://news.baidu.com
list_a = objSoup.find_all('a')[2]
print(list_a['href']) # http://map.baidu.com