里面的open()文件里的web.html文件是自己简单制作的html,也可以自己用get()进行连接其他网址获取相应的信息。
from bs4 import BeautifulSoup
import requests
"""
#请求页面获取html
r = requests.get('http://www.baidu.com').content.decode('UTF-8')
soup = BeautifulSoup(r,'html.parser') #lxml
# print(type(soup)) #解析html文档对象
html = soup.prettify() #使得html标准化
print(html)
"""
soup = BeautifulSoup(open('web.html','a+',encoding='utf-8'),'html.parser')
# print(type(soup))
"""
四大对象
"""
#TAG
print(soup.html.head.meta) #通过标签获取
print(soup.div.input) #默认获取bs对象中的第一个div
#标签的属性 name attrs
print(soup.div.input.name) #返回标签名
print(soup.div.input.attrs) #返回标签里面的属性 字典格式
print(soup.div.input.attrs['type']) #返回标签里面的属性值
#navigablestring
print(type(soup.div.span.string))
"""
遍历文档树
"""
#直接子节点
print(soup.div.contents)
print(soup.div.contents[0])
print(soup.div.contents[1])
print(soup.div.contents[2].attrs['type'])
print(soup.div.children)
print(soup.div.descentants)
#节点内容
print(soup.div.contens[1].string)
print(soup.div.contents[1].text)
#父节点
print(soup.div.contents[1].parent)
print(soup.div.contents[1].parents) #所有父节点
#兄弟节点
print(soup.div)
print(soup.div.next_sibling.next_sibling.next_sibling.next_sibling.next_sibling)
menu = soup.div.next_sibling.next_sibling.next_sibling.next_sibling
print(menu.previous_sibling.previous_sibling.previous_sibling)
#查找文档树
print(soup.find_all('a')) #查找所有的div 返回列表
result = soup.find_all('a')
for i in result:
print(i.text) #获取文本
print(i.attrs['href']) #获取链接
#正则表达
print(soup.find_all(href=re.compile('^http:.*\.com$'))) #查找所有的div 返回列表
#传列表
print(soup.find_all(['a','span']))
#标签名
print(soup.find_all(id='menu'))
print(soup.find_all(class_='one'))
#关键值
print(soup.find_all(class_='one',attrs={'name':'aa'}))
#text
print(soup.find_all('a',limit=2)) #限定查找个数
#find
print(soup.find(id='menu').find_all('a',limit=2))