import requests
import sys
from bs4 import BeautifulSoup
print 'python版本信息:%s.%s.%s ' % (sys.version_info[0], sys.version_info[1], sys.version_info[2])
request = requests.get('http://python123.io/ws/demo.html')
soup = BeautifulSoup(request.text, 'html.parser')
print soup.prettify() # 打印按照标准的缩进格式的结构输出
print soup.get_text
print soup.title # 打印title标签的内容
print soup.title.name # 打印titile标签的name
# 任何存在于HTML语法中的标签都可以用soup.<tag>访问获得
# 当HTML文档中存在多个相同<tag>对应内容时,soup.<tag>返回第一个
tag = soup.p
print tag # 这里只会打印第一个p标签, 不会打印所有的
print tag['class'] # 打印第一个p标签中class
print tag.get('class') # 打印第一个p标签中class的值, 同上
print soup.a.name # <a>标签的name是a
print soup.a.string # Basic Python 打印标签里面非属性字符串
print type(soup.a.string) # <class 'bs4.element.NavigableString'> 特殊的类型
print soup.a.parent # 第一个<a>标签的父标签内容
print soup.a.parent.name # 第一个<a>标签的父标签name
# 有用的find
print soup.find_all('p') # 查找所有的p元素
print soup.find(id="link2") # 查找id为link2的标签
print soup.find(id="link3")
print soup.find(name='a', class_='py1') # 查找标签name为a, class为py1的标签
# 结果为: <a class="py1" href="http://www.icourse163.org/course/BIT-268001" id="link1">Basic Python</a>
print soup.find(name='p', attrs={'class': 'course'}) # 查找p元素, 其中class='course'
# 标签树的下行遍历 .contents .children .descendants
print '子节点的列表', soup.p.contents # 子节点的列表
for child in soup.p.children: # 遍历儿子节点,打印第一个p节点的所有子节点
print child
for desc in soup.p.descendants: # 遍历所有子孙节点, 打印第一个p节点的所有子节点和子节点的子节点等等
print desc
# 标签树的上行遍历 .parent父节点 .parents所有先辈节点
for parent in soup.p.parents:
if parent is not None:
print parent
else:
print parent.name
# 标签树的平行遍历 (同一个父节点下的节点).next_sibling .previous_sibling .next_siblings .previous_siblings
print soup.a.next_sibling
print soup.a.next_sibling.next_sibling
print soup.a.next_sibling.next_sibling.next_sibling
print soup.a.previous_sibling
print soup.a.previous_sibling.previous_sibling
print soup.a.next_siblings # 一个迭代器,a下面的所有平行节点
print soup.a.previous_siblings # 一个迭代器,a上面的所有平行节点
for n in soup.a.next_siblings:
print n
for p in soup.a.previous_siblings:
print p
参考:
https://www.crummy.com/software/BeautifulSoup/bs4/doc.zh/
https://www.jianshu.com/p/d17d4c2b79ff