热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

末尾_python解析网站BeautifulSoup

篇首语:本文由编程笔记#小编为大家整理,主要介绍了python解析网站BeautifulSoup相关的知识,希望对你有一定的参考价值。首先了解一下正则表达式解析

篇首语:本文由编程笔记#小编为大家整理,主要介绍了python解析网站BeautifulSoup相关的知识,希望对你有一定的参考价值。



首先了解一下正则表达式解析网站

正则表达式是解析网站时必须要了解的,我们在提取网页中的数据时,可以先将源代码变成字符串,然后用正则表达式匹配想要的数据


模式描述
.匹配任意字符,除了换行符
*匹配前一个字符0次或多次
+匹配前一个字符1次或多次
?匹配前一个字符0次或1次
^匹配字符串开头
$匹配字符串末尾
()匹配括号内的表达式,也表示一个组
\\s匹配空白字符
\\S匹配任何非空白字符
\\d匹配数字,等价于[0-9]
\\D匹配任何非数字,等价于[^0-9]
\\w匹配字母数字,等价于[A-Za-z0-9_]
\\W匹配非字母数字,等价于[^A-Za-z0-9_]
[]用来表示一组字符

re.match()方法

re.match的意思是从字符串起始位置匹配一个模式,如果从起始位置匹配不了,match()就返回none

re.match的语法为re.match(pattern,string,flags=0),其中pattern是正则表达式,包含一些特殊的字符,string为要匹配的字符串,flags用来控制正则表达式的匹配方式,如是否区分大小写、多行匹配等


re.search方法

re.search扫描整个字符串并返回第一个成功的匹配,其余与re.match一样


re.findall方法

由于re.match和re.search方法中,我们只能找到一个匹配所写的模式,而findall可以找到所有的匹配
findall与match、search不同的是,findall能够找到所有匹配的结果,并且以列表的形式返回


BeautifulSoup解析网站

BeautifulSoup可以从HTML或XML文件中提取数据


BeautifulSoup的安装

在cmd中输入:pip install bs4


BeautifulSoup的其他功能

BeautifulSoup对象是一个复杂的树形结构,它的每个节点都是python对象,获取网页的内容就是一个提取对象内容的过程


  1. 遍历文档树
  2. 搜索文档树
  3. CSS选择器

1.遍历文档树

要获取

标签,只需要输入:

soup.header.h1

对于某个标签的所有子节点,我们可以用contents把它的子节点以列表的方式输出:

soup.header.div.contents

我们也可以使用children方法获得所有子标签:

for child in soup.header.div.children:
print (child)

上述方法只能获取该节点下一级的节点,如果要获得所有子子孙孙的节点,就要用.descendants方法。其代码如下:

for child in soup.header.div.descendants:
print(child)

除了获取子节点外,还可以使用.parent方法获得父节点的内容:

a_tag = soup.header.div.a
a_tag.parent

2.搜索文档树

在搜索文档树时,常用的是find()和find_all()
find()和find_all()方法可以和re正则结合起来使用

for tag in soup.find_all(re.compile("^h")):
print(tag.name)

输出:

html
header
h3

3.CSS选择器

CSS选择器方法既可以作为遍历文档树的方法数据提取,也可以作为搜索文档树的方法提取数据


推荐阅读
  • 解决Anaconda安装TensorFlow时遇到的TensorBoard版本问题
    本文介绍了在使用Anaconda安装TensorFlow时遇到的“Could not find a version that satisfies the requirement tensorboard”错误,并提供详细的解决方案,包括创建虚拟环境和配置PyCharm项目。 ... [详细]
  • 阿里云ecs怎么配置php环境,阿里云ecs配置选择 ... [详细]
  • 查找最小值的操作是很简单的,只需要从根节点递归的遍历到左子树节点即可。当遍历到节点的左孩子为NULL时,则这个节点就是树的最小值。上面的树中,从根节点20开始,递归遍历左子 ... [详细]
  • 深入理解Lucene搜索机制
    本文旨在帮助读者全面掌握Lucene搜索的编写步骤、核心API及其应用。通过详细解析Lucene的基本查询和查询解析器的使用方法,结合架构图和代码示例,带领读者深入了解Lucene搜索的工作流程。 ... [详细]
  • Python处理Word文档的高效技巧
    本文详细介绍了如何使用Python处理Word文档,涵盖从基础操作到高级功能的各种技巧。我们将探讨如何生成文档、定义样式、提取表格数据以及处理超链接和图片等内容。 ... [详细]
  • Python 内存管理机制详解
    本文深入探讨了Python的内存管理机制,涵盖了垃圾回收、引用计数和内存池机制。通过具体示例和专业解释,帮助读者理解Python如何高效地管理和释放内存资源。 ... [详细]
  • 本文详细介绍了如何在不同操作系统和设备上设置和配置网络连接的IP地址,涵盖静态和动态IP地址的设置方法。同时,提供了关于路由器和机顶盒等设备的IP配置指南。 ... [详细]
  • ABBYY FineReader:高效PDF转换、精准OCR识别与文档对比工具
    在处理PDF转换和OCR识别时,您是否遇到过格式混乱、识别率低或图表无法正常识别的问题?ABBYY FineReader以其强大的功能和高精度的识别技术,完美解决这些问题,帮助您轻松找到最终版文档。 ... [详细]
  • Spring Boot 中静态资源映射详解
    本文深入探讨了 Spring Boot 如何简化 Web 应用中的静态资源管理,包括默认的静态资源映射规则、WebJars 的使用以及静态首页的处理方法。通过本文,您将了解如何高效地管理和引用静态资源。 ... [详细]
  • ListView简单使用
    先上效果:主要实现了Listview的绑定和点击事件。项目资源结构如下:先创建一个动物类,用来装载数据:Animal类如下:packagecom.example.simplelis ... [详细]
  • 本文详细介绍了Java中实现异步调用的多种方式,包括线程创建、Future接口、CompletableFuture类以及Spring框架的@Async注解。通过代码示例和深入解析,帮助读者理解并掌握这些技术。 ... [详细]
  • 云计算的优势与应用场景
    本文详细探讨了云计算为企业和个人带来的多种优势,包括成本节约、安全性提升、灵活性增强等。同时介绍了云计算的五大核心特点,并结合实际案例进行分析。 ... [详细]
  • 简化报表生成:EasyReport工具的全面解析
    本文详细介绍了EasyReport,一个易于使用的开源Web报表工具。该工具支持Hadoop、HBase及多种关系型数据库,能够将SQL查询结果转换为HTML表格,并提供Excel导出、图表显示和表头冻结等功能。 ... [详细]
  • 本文探讨了如何在Classic ASP中实现与PHP的hash_hmac('SHA256', $message, pack('H*', $secret))函数等效的哈希生成方法。通过分析不同实现方式及其产生的差异,提供了一种使用Microsoft .NET Framework的解决方案。 ... [详细]
  • 配置PHPStudy环境并使用DVWA进行Web安全测试
    本文详细介绍了如何在PHPStudy环境下配置DVWA( Damn Vulnerable Web Application ),并利用该平台进行SQL注入和XSS攻击的练习。通过此过程,读者可以熟悉常见的Web漏洞及其利用方法。 ... [详细]
author-avatar
建霖怡旭家其
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有