python bs4

import re
from bs4 import BeautifulSoup

py_str_html = """
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <p class="title1" name="pythonjieshao"><b>python爬虫介绍</b></p>
    <p class="jianjie">python是一种非常好用的语言,很多人都用它
        <a href="https://www.zhihu.com/question/20799742" class="jieshao1" id="pylink1">知乎python</a>
        <a href="https://www.jingyan.baidu.com/article/48a42057310a64a92425041b.html" class="jieshao2" id="pylink2">百度python</a>
        <a href="https://www.jianshu.com/p/c380f4d3e6cd" class="jieshao3" id="pylink3">简书python</a>
        <p class="py_jieshao"></p>
    </p>
</body>
</html>
"""
#案例1:解析字符串形式html
#soup = BeautifulSoup(py_str_html, "lxml")
#print(soup)
#案例2:解析本地html,需要说明是utf-8,这是国际标准,gbk是国家标准
soup = BeautifulSoup(open("测试html.html", encoding='UTF-8'))
#print(soup)
#格式化输出html对象
print(soup.prettify())
#1.根据标签名获取标签对象
print(soup.title)
#1.1 如何获取标签的值
print(soup.title.string)
#1.2 如何获取标签的名字
print(soup.title.name)
#1.3 如何获取第1个标签的属性:获取第一个标签中的所有属性
print(soup.title.attrs)
#2.1 默认获取body下的第1个子标签(子标签对象)
print(soup.body.p)
#2.1.2 获取body下的第1个子标签(子标签对象),结果是生成器,需遍历显示
print("------------------------------")
for i in soup.body.p.descendants:
    print(i)
print("====================")
#1. find_all()根据标签名搜索一类标签
#返回的类型:bs4.element.Tag,bs4包下特有的结果集,里面装的是标签对象
data_tags = soup.find_all("p")
for tag in data_tags:
    print(tag.string)
"""
重要总结:<标签名 属性>值</标签名>,标签是由3部分构成:
标签值、标签名、标签属性组成
1.标签对象调用string:表示获取标签中的值
2.标签对象调用name:表示获取标签名
3.标签对象调用attrs:表示获取标签属性
我们可以通过标签树获取标签的全部
"""
print("=-=-=-=-=-=-=-=-=-=-=-=-=-")
#2. 根据正则表达式,搜索符合要求的标签
data_tags = soup.find_all(re.compile("^b")) #表示以b字母开头的标签
print(data_tags)
print("======================")
#3. 根据属性查找标签:id属性(是唯一的)、class属性(需要加下划线)等,返回的也是标签对象
#data_tags = soup.find_all(class_ = "title1")
#根据属性,查找某一类标签
data_tags = soup.find_all(name="p",attrs={"class" :"title1"})
print(data_tags)
print("=-=-=-=-=-=-=-=-=-=-=-=-=-")
#4. 根据内容查找对应标签值
#字符串含有python的,都会获取到。这个用处比较大
data_tags = soup.find_all(text=re.compile("python"))
print(data_tags)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值