Python BeautifulSoup库 常用方法

匹配文件 fofa.html

# -*- coding: utf-8 -*-
# @Time : 2021/9/5 18:10
# @Author : HUGBOY
# @File : test.py
# @Software: PyCharm

import re
from bs4 import BeautifulSoup

with open('./fofa.html', 'rb') as f:
    html = f.read()

# 把html解析为树形结构
rel = BeautifulSoup(html, "html.parser")

#标签 只匹配第一个
print(rel.title)
# 标签内容
print(rel.title.string)
# 属性
print(rel.a.attrs)

# 注释
print(type(rel.a.string))
if str(type(rel.a.string)) == "<class 'bs4.element.Comment'>":
    print(rel.a.string)


# 全部标签(遍历)
tag_list = rel.head.contents
print(tag_list)

# 搜索标签 完全匹配
tag_list = rel.find_all("div")
print(tag_list)

# 搜索含a标签 结合正则表达式
tag_list = rel.find_all(re.compile("d"))


# 搜索含某属性标签
def href_get(tag):
    return tag.has_attr("href")

tag_list = rel.find_all(href_get)

# 搜索有特殊值的标签
tag_list1 = rel.find_all(id="__nuxt")
tag_list2 = rel.find_all(class_=True)
tag_list3 = rel.find_all(href="/_nuxt/css/9eec2be.css")
print(tag_list1)
print(tag_list2)
print(tag_list3)

# 搜索text 完全匹配
text_list1 = rel.find_all(text="美国")
text_list2 = rel.find_all(text=["国", "TCP/UDP"])
print(text_list1, text_list2)

# 搜索text 含某特殊字符 结合正则表达式
text_list = rel.find_all(text=re.compile("\d"))
for t in text_list:
    print(t)

# 限定个数
text_list = rel.find_all(text=re.compile("\d"), limit=5)
for t in text_list:
    print(t)

#CSS 选择器

# 通过标签选择
print(rel.select("title"))

# 通过类名选择 '.' + 'class_value'
print(rel.select(".listSpans"))

# 通过序号id选择 '#' + 'id_value'
print(rel.select("#u1"))

# 通过标签属性选择
print(rel.select("a[href='http://52.67.233.77:4848']"))

# 通过子标签选择
print(rel.select("head>title"))

# 通过兄弟标签(同级标签)选择  只返回后一个标签包含区域
print(rel.select(".relatedSearch ~ .mainContainer"))

# 获取选择区域所有标签的文本内容
class_area = rel.select(".relatedSearch ~ .mainContainer")
print(class_area[0].get_text())
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JFLEARN

CSDN这么拉会有人打赏?

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值