首页 > 其他分享 >爬虫 - 网页解析库

爬虫 - 网页解析库

时间:2024-07-09 16:31:19浏览次数:11  
标签:网页 获取 url 标签 爬虫 soup 文档 解析 节点

BeautifulSoup

BeautifulSoup 是一个Python库,用于从 HTML 提取数据

它提供了简单而灵活的方式来遍历和搜索文档树,以及解析和提取所需的数据

安装

BeautifulSoup的安装涉及第三方的扩展

pip3 install beautifulsoup4

Beautiful Soup支持Python标准库中的HTML解析器,还支持一些第三方的解析器,其中一个是 lxml

pip install lxml

基本使用

from bs4 import BeautifulSoup
import requests


url = 'https://www.cnblogs.com'
header = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36'}
res = requests.get(url=url,headers=header)
soup = BeautifulSoup(res.text,'lxml')
show = soup.prettify() #处理好缩进,结构化显示
print(show)    

遍历文档树

遍历文档树:即直接通过标签名字选择,特点是选择速度快,但如果存在多个相同的标签则只返回第一个

soup为上文获取的网页解析对象

  • soup.标签名:获取标签对象

  • soup.标签名.name:获取标签的名称

  • soup.标签名.attrs获取标签的属性

  • 获取标签的内容

    • soup.标签名.string:某标签下的文本只有一个时,取到,否则为None

    • soup.标签名.strings:拿到一个生成器对象, 取到某标签下所有的文本内容

    • soup.标签名.text:取到某标签下所有的文本内容

    • soup.标签名.stripped_strings:去掉空白

  • 嵌套选择

  • 子节点、子孙节点

    • soup.标签名.contents:某标签下所有子节点

    • soup.标签名.children:得到一个迭代器,包含某标签下所有子节点

  • 父节点、祖先节点

    • soup.标签名.parent:获取父节点

    • soup.标签名.parents:获取父节点的父节点,生成器

搜索文档树

find 和 find_all

两者的唯一区别是:find_all() 方法的返回结果是值包含一个元素的列表,而 find() 方法直接返回结果

  • name:搜索name参数的值可以使任一类型的 过滤器

  • keyword:key=value的形式,value可以是过滤器:字符串 , 正则表达式,列表, True

    注意class是关键字,所以要加_

  • 按照类名查找
    查找class = post-meta-item 的span标签

  • limit:find_all限制条数
    查找class = post-meta-item 的span标签,输出两条结果

五种过滤器
  • 字符串:即标签名

  • 正则表达式

  • 列表
    如果传入列表参数,Beautiful Soup会将与列表中任一元素匹配的内容返回.下面代码找到文档中所有<a>标签和<p>标签:

  • True
    可以匹配任何值,下面代码查找到所有的tag,但是不会返回字符串节点

CSS选择器

暂不赘述

Xpath

from lxml import etree

XPath 是一门在 XML 文档中查找信息的语言

import requests
from lxml import etree

header = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36'}
url = 'https://www.cnblogs.com'
res = requests.get(url=url,headers=header)
html = etree.HTML(res.text)

节点

  • 所有节点

  • 指定节点(结果为列表)

  • 子节点,子孙节点

  • 父节点

属性匹配

  • 文本获取

  • 属性获取

表达式 含义
nodename 选取此层级节点下的所有子节点
/ 代表从根节点进行选取
// 可以理解为匹配,就是在所有节点中选取此节点,直到匹配为止
. 选取当前节点
选取当前节点上一层(上一级目录)
@ 选取属性(也是匹配)

标签:网页,获取,url,标签,爬虫,soup,文档,解析,节点
From: https://www.cnblogs.com/yigehulu/p/18284221

相关文章

  • C#解析DL/T645电力数据
    DL/T645协议详细解析DL/T645是我国电力行业的标准,主要适用于电表与计算机之间的通讯。帧格式帧起始符68H标识一帧信息的开始,其值为68H=01101000B地址域A0~A5地址域由6个字节构成,每字节2位BCD码,地址长度可达12位十进制数。每块表具有唯一的通信地址,且与物理层信......
  • 地址解析成 省+市+区+详细地址的形式
    收件地址解析成省+市+区+详细地址的形式原文链接将地址格式化成省市区,很多API有提供这样的功能,但是基本是收费的。在网上找了个帖子改造了一下功能代码packagecom.ruoyi.iot.common.utils;importcn.hutool.core.io.IoUtil;importcom.alibaba.fastjson.JSON;importcom......
  • 【一步步开发AI运动小程序】十九、运动识别中如何解析RGBA帧图片?
    引言最近有不少开发者向我们咨询,像体测、赛事等应用场景中,需要保存运动过程的图像,如何将相机抽取的RGBA帧图像解析成.jpg或.png格式的图像?今天我们就为您介绍相应的解决方案。一、RGBA图像结构。RGBA图像为一维数组,每四个元素描写一个图像像素,前三元素为颜色值,第四个元素为透......
  • 掌握《卧龙:苍天陨落》风灵月影修改器:全面解析与使用技巧
    《卧龙:苍天陨落》作为一款由TeamNINJA倾力打造的动作角色扮演游戏,以其独特的暗黑三国风格和深度的战斗系统吸引了众多玩家。然而,对于一些追求极致体验的玩家来说,使用修改器可以极大地丰富游戏的乐趣。其中,风灵月影修改器因其稳定性和功能多样性而备受推崇。本文旨在详细介绍如......
  • C#中的并发工具:Task Parallel Library(TPL)深度解析
    ......
  • 基于SpringBoot的酒店订房系统+82159(免费领源码)可做计算机毕业设计JAVA、PHP、爬虫、A
    springboot酒店订房系统摘 要随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,酒店订房系统当然也不能排除在外。酒店订房系统是以实际运用为开发背景,运用软件工程开发方法,采用springboot技术构建的一个管理系统......
  • C# Equals 和 GetHashCode 方法认知及Distinct方法解析
    参照:生成C#Equals和GetHashCode方法重写-VisualStudio(Windows)|MicrosoftLearn如何修改字符串内容-C#|MicrosoftLearn在C#中,Equals 和 GetHashCode 方法用于对象的比较和哈希值计算。它们在值类型和值类型的行为上有所不同。值类型(ValueTypes)Equals......
  • PostgreSQL的AutoVacuum原理及autovacuum不工作问题解析
    1、AutoVacuum概述PostgreSQL数据库是有数据清理的,有人工执行清理,也有自动清理,但是这2种的清理方式对性能是有不同的影响,特别是OLTP环境中,每次不管是人工清理还是自动清理deadtuple,都会对数据库的IO有明显的影响,基于PostgreSQL的原理每个表中的行会存在多个版本的数据,为了完成......
  • SV/UVM 类的多态和虚方法解析
            类具有三大特性:封装/继承/多态,多态是面对对象编程中最神奇的特征,也是最抽象和难以理解的特征。对于初学者来说,最好对sv有了一定了解,在掌握了封装和继承之后再学习多态会更容易理解。1.类的继承    首先复习一下继承的概念:继承是利用共性构建一个基类......
  • ScreenAI ——能理解从信息图表到用户界面的图像和文本算法解析
    概述论文地址:https://arxiv.org/pdf/2402.04615.pdf信息图表(图表、示意图、插图、地图、表格、文档布局等)能够将复杂的数据和想法转化为简单的视觉效果,因此一直以来都被视为传播的重要元素。这种能力来自于通过布局和视觉线索使信息直观易懂。在当今日益数字化的世界中,移......