python2 之BeautifulSoup用法

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值