当前位置: 首页 > article >正文

Python爬虫之bs4模块用法

文章目录

  • Python爬虫之bs4模块用法
    • 一、引言
    • 二、安装与基本使用
      • 1、安装
      • 2、创建BeautifulSoup对象
    • 三、解析与提取数据
      • 1、获取标签
      • 2、获取标签内文本
      • 3、获取标签内属性
      • 4、使用CSS选择器
    • 四、高级应用
      • 1、find与find_all
      • 2、处理多值属性
      • 3、遍历文档树
    • 五、总结

Python爬虫之bs4模块用法

一、引言

在Python的爬虫开发中,bs4(BeautifulSoup)库是不可或缺的工具之一。它提供了一个简单而强大的方式来解析HTML和XML文档,从而提取出我们所需的数据。本文将详细介绍bs4模块的安装、基本用法以及一些高级应用技巧。

二、安装与基本使用

1、安装

首先,你需要安装bs4库,可以通过以下命令轻松完成安装:

pip install beautifulsoup4

2、创建BeautifulSoup对象

创建BeautifulSoup对象是使用bs4库的第一步。你需要提供要解析的HTML内容和使用的解析器:

from bs4 import BeautifulSoup

# 示例HTML内容
html_doc = "<html><head><title>The Dormouse's story</title></head><body><p class='title'><b>The Dormouse's story</b></p></body></html>"
# 创建BeautifulSoup对象,这里使用lxml作为解析器
soup = BeautifulSoup(html_doc, 'lxml')

三、解析与提取数据

1、获取标签

通过标签名获取标签:

title_tag = soup.title
print(title_tag.text)  # 输出: The Dormouse's story

2、获取标签内文本

获取标签内文本:

print(soup.p.text)  # 输出: The Dormouse's story

3、获取标签内属性

获取标签内属性:

a_tag = soup.a
print(a_tag.attrs)  # 输出: {'class': ['sister'], 'id': 'link1', 'href': 'http://example.com/elsie'}

4、使用CSS选择器

bs4支持使用CSS选择器来查找元素:

# 通过类名查找
title = soup.select_one('.title')
print(title.text)

# 通过ID查找
link = soup.select_one('#link1')
print(link['href'])

四、高级应用

1、find与find_all

find用于查找符合条件的第一个元素,而find_all用于查找所有符合条件的元素:

# 查找所有<a>标签
links = soup.find_all('a')
for link in links:
    print(link['href'])

# 查找具有特定类的<p>标签
story_paragraphs = soup.find_all('p', class_='story')
for paragraph in story_paragraphs:
    print(paragraph.text)

2、处理多值属性

在HTML中,某些属性如class可以有多个值。bs4允许你方便地处理这些属性:

p_tag = soup.find('p', class_='title')
print(p_tag['class'])  # 输出: ['title']

3、遍历文档树

你可以使用.contents.children属性遍历文档树:

for child in soup.body.children:
    print(child)

五、总结

bs4是Python爬虫开发中的强大工具,它提供了丰富的功能来解析和提取HTML文档中的数据。通过熟练掌握其基本用法和高级技巧,你可以有效地构建Python爬虫项目。


版权声明:本博客内容为原创,转载请保留原文链接及作者信息。

参考文章

  • python爬虫之bs4模块(超详细)
  • Python爬虫之bs4,非常详细

http://www.kler.cn/a/308478.html

相关文章:

  • Java学习--网络编程
  • 少儿学习Scratch编程的好处和坏处
  • Vue7种组件之间通信方式
  • LLM - 使用 LLaMA-Factory 微调大模型 Qwen2-VL SFT(LoRA) 图像数据集 教程 (2)
  • xrandr源码分析
  • Qt初识简单使用Qt
  • 如何用python做一个计算器
  • 基于AlexNet实现猫狗大战
  • 轻松上手Cursor,体验丝滑编程
  • springschedule定时任务
  • What is new in C# 7,8,9,10
  • 牛客周赛 Round 60(A,B,C,D,E,F)
  • 构建“零工市场小程序”,服务灵活就业“大民生”
  • Baumer工业相机堡盟工业相机如何通过BGAPI SDK设置相机的图像剪切(ROI)功能(C语言)
  • com.microsoft.sqlserver:sqljdbc4:jar:4.0 was not found产生原因及解决步骤
  • 电商店群模式如何利用云分账实现自动化资金管理
  • 闲云野记:24915
  • 技术上,如何复现 o1?
  • 易于理解和实现的Python代码示例
  • 数据中心服务器与存储运维的深度实践与挑战
  • 部署自己的对话大模型,使用Ollama + Qwen2 +FastGPT 实现
  • ThinkCMF框架任意内容包含漏洞的讲解
  • 简化登录流程,助力应用建立用户体系
  • 《程序猿之设计模式实战 · 池化思想》
  • MySql批量迁移数据库
  • macOS使用brew安装并配置python环境