BeautifulSoup

Beautiful Soup 是用Python写的一个HTML/XML的解析器,它可以很好的处理不规范标记并生成剖析树(parse tree)。 它提供简单又常用的导航(navigating),搜索以及修改剖析树的操作。它可以大大节省你的编程时间。

可以查看中文文档beautifullsoup学习!!!

里面的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))

 

你可能感兴趣的:(python从入门到实践)