爬虫学习--9.三大数据解析方式对比

以下是XPath、BeautifulSoup4和正则表达式三种数据解析方式与各自应用场景的对比:

  1. XPath

  • 优点:XPath可以通过路径表达式指定元素的位置,也可以通过属性和文本内容等信息来筛选元素,定位精确。XPath支持多种操作符和函数,可以进行各种条件过滤、排序、分组等操作。

  • 缺点:XPath的语法相对复杂,需要学习XPath语法和节点结构;XPath不支持CSS选择器等其他选择器。

  • 应用场景:XPath适用于XML和HTML文档结构比较复杂、需要进行多种条件筛选和操作的情况,例如从XML文件中抽取特定信息。

  1. BeautifulSoup4

  • 优点:BeautifulSoup4可以将HTML和XML等文档解析成树形结构,提供了各种方法来搜索和遍历文档树,使用起来比较灵活和方便。BeautifulSoup4支持CSS选择器和正则表达式等多种选择器来定位节点,可以根据需要选择不同的方式。

  • 缺点:BeautifulSoup4对文档结构要求不高,对于复杂的文档结构可能无法处理;BeautifulSoup4的性能相对较低。

  • 应用场景:BeautifulSoup4适用于需要处理HTML文档、对文档结构要求不高的情况,例如从网页中抽取信息。

  1. 正则表达式

  • 优点:正则表达式可以进行多种文本匹配和替换操作,例如查找、替换、分割、提取等。正则表达式能够支持更复杂的模式匹配和替换操作。

  • 缺点:正则表达式的语法相对复杂,需要学习正则表达式的规则和语法;正则表达式对于复杂的文本处理可能无法处理。

  • 应用场景:正则表达式适用于需要进行高级模式匹配和替换的情况,例如从文本中提取特定的信息。

综上所述,XPath、BeautifulSoup4和正则表达式各有优缺点和适用场景,可以根据具体需求选择不同的方式。XPath适用于XML和HTML文档结构比较复杂、需要进行多种条件筛选和操作的情况;BeautifulSoup4适用于处理HTML文档、对文档结构要求不高的情况;正则表达式适用于需要进行高级模式匹配和替换的情况。

数据解析总结案例

import requests
from lxml import etree
import re  # 内置库 不用我们下载
from urllib.request import urlretrieve
for i in range(1,100):
    url = f'http://www.godoutu.com/face/hot/page/{i}.html'
    headers = {
        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36'
    }
    html = requests.get(url,headers=headers).text
    element  = etree.HTML(html)
    alldiv = element.xpath('//div[@class="ui segment imghover"]/div[@class="tagbqppdiv"]')
    print(len(alldiv))
    for i in alldiv:
        everyhref = i.xpath('./a/img/@data-original')[0]
        # print(everyhref,type(everyhref))
        # print(str(everyhref).endswith('jpg'))
        title = i.xpath('./a/img/@title')[0]
        # print(title)
        newtitle = re.sub('[\/:*?<>|]','',title)
        # print(newtitle)
        if str(everyhref).endswith('jpg'):
            urlretrieve(everyhref,f'images/{newtitle}.jpg')
            print(f'{newtitle}.jpg下载成功')
        else:
            urlretrieve(everyhref, f'images/{newtitle}.gif')
            print(f'{newtitle}.gif下载成功')

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/631866.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

DOS学习-目录与文件应用操作经典案例-dir

欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一.前言 二.使用 三.练习 一.前言 dir是"directory"&#xff08;目录&#xff09;的缩写&#xff0c;它主要用于展示某个磁盘上的全部或特定文件目录。在DOS操作系统中&#…

ES6中数组新增了哪些扩展?

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;JavaScript篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来JavaScript篇专栏内容:ES6中数组新增了哪些扩展&#xff1f; 目录 一、扩展运算符的应用 二、构造函数新…

Web3与物联网:构建智能连接的数字世界

引言 随着互联网的不断发展&#xff0c;物联网&#xff08;Internet of Things, IoT&#xff09;作为一种新兴的信息技术&#xff0c;正在逐渐渗透到我们的生活和工作中。而随着Web3的兴起&#xff0c;物联网将迎来新的发展机遇。本文将探讨Web3与物联网的结合&#xff0c;如何…

全面解析防静电措施:保障工业安全,预防静电危害

静电是一种常见的物理现象&#xff0c;由于电荷的不平衡而产生。在特定的环境中&#xff0c;静电可能会带来危害&#xff0c;如损坏电子设备、引起火灾等。因此&#xff0c;采取适当的防静电措施是非常重要的。以下是一些常见的防静电方法&#xff1a; 增加环境湿度&#xff1a…

崆峒酥饼:佳节馈赠的美味之选

崆峒酥饼&#xff1a;佳节馈赠的美味之选 在即将到来的端午节&#xff0c;人们开始忙碌地准备着走亲访友的礼物。而崆峒酥饼&#xff0c;作为一种传统的美食&#xff0c;不仅是节日里的美味享受&#xff0c;更是传递情谊的佳品。 崆峒酥饼&#xff0c;以其酥脆的口感和独特的风…

使用httpx异步获取高校招生信息:一步到位的代理配置教程

概述 随着2024年中国高考的临近&#xff0c;考生和家长对高校招生信息的需求日益增加。了解各高校的专业、课程设置和录取标准对于高考志愿填报至关重要。通过爬虫技术&#xff0c;可以高效地从各高校官网获取这些关键信息。然而&#xff0c;面对大量的请求和反爬机制的挑战&a…

【Python】语句与众所周知【自我维护版】

各位大佬好 &#xff0c;这里是阿川的博客 &#xff0c; 祝您变得更强 个人主页&#xff1a;在线OJ的阿川 大佬的支持和鼓励&#xff0c;将是我成长路上最大的动力 阿川水平有限&#xff0c;如有错误&#xff0c;欢迎大佬指正 本篇博客是在之前的基础上进行的维护 目录 条…

HP6V18、HP6V65电比例功率控制泵放大器

HP6V18、HP6V65电比例压力负控制&#xff0c;电比例功率控制泵通过由BEUEC比例放大器控制改变阀的输入电流&#xff0c;将泵设置为一定压力。改变负载压力&#xff0c;为使调订压力恒定&#xff0c;泵摆角会增大或减小&#xff0c;从而改变流量。因此泵只能输出执行器可以接受的…

ubuntu下gcc编译器的安装

.gcc编译器的安装 一般linux下是覆盖含有的&#xff0c;如果没有执行更新命令 sudo apt update gcc安装成功&#xff0c;可以检查一下版本 可以看出我的gcc是9.4.0版本的

地表最强ChatGPT爆了!我来告诉你,它都有什么用

OpenAI刚刚发布了全新的 "GPT-4o"&#xff0c;它不仅可以通过语音、视觉和文本进行推理&#xff0c;还在速度和价格上有了巨大的突破。它的速度提高了2倍&#xff0c;价格却降低了50%&#xff0c;而且生成速率比GPT-4 Turbo高出5倍。最令人惊喜的是&#xff0c;它将对…

Verilog基础语法——条件语句if-else与case

Verilog基础语法——条件语句case、if-else 写在前面一、if-else语句二、case语句2.1 case语句2.2 casez语句2.3 casex语句 写在后面 写在前面 在Verilog语法中&#xff0c;常用的条件语句有if-else语句和case语句&#xff0c;用于判断条件是否为真&#xff0c;并执行判断条件后…

【NLP】文本分类

n-gram 的局限性 n-gram 只能对于填空这样的通顺性问题做出推测&#xff0c;但是没有办法完全解决句子的语义问题&#xff0c;从而无法实现文本的分类 文本的分类&#xff0c;就是将文本在语义的理解下划分到特定的主题下 手工规则 如一些垃圾过滤系统&#xff0c;需要人工制…

PHP开发中的不安全反序列化

序列化是开发语言中将某个对象转换为一串字节流的过程&#xff0c;转换后的字节流可以方便存储在数据库中&#xff0c;也可以方便在网络中进行传输。而反序列化则是将数据库取出的字节流或从网络上接收到的字节流反向转换为对象的过程。概念虽如此&#xff0c;但不同的开发语言…

【JavaEE 初阶(七)】网络原理 TCP与UDP协议

❣博主主页: 33的博客❣ ▶️文章专栏分类:JavaEE◀️ &#x1f69a;我的代码仓库: 33的代码仓库&#x1f69a; &#x1faf5;&#x1faf5;&#x1faf5;关注我带你了解更多网络知识 目录 1.前言2.应用层2.1xml2.2json 3.传输层3.1UDP协议3.2TCP协议3.2.1确认响应3.2.2超时重…

【c++】map和set的封装

1.红黑树源码 我们使用上节课的红黑树源码来封装map和set. 因为map存的是&#xff08;key,value&#xff09;,set存的是&#xff08;key&#xff09;,为了我们set和map使用同一个类模板&#xff08;红黑树&#xff09;&#xff0c;所以我们先要修改红黑树结点中存的数据类型&a…

苹果永久版安装PD虚拟机:Parallels Desktop 19 一键激活版

Parallels Desktop 19是一款功能强大的虚拟机软件&#xff0c;专为Mac用户设计&#xff0c;允许用户在同一台Mac电脑上同时运行Windows、Linux等多个操作系统&#xff0c;而无需额外的硬件设备。 下载地址&#xff1a;https://www.macz.com/mac/9581.html?idOTI2NjQ5Jl8mMjcuM…

Java环境搭建(二)Notepad++和IDEA的下载

Notepad&#xff08;不推荐使用&#xff09; 高级记事本 下载地址 Notepad (juxinwk1.cn) 下载安装后一直下一步就可以了 注&#xff1a;改一下路径还有建立快捷方式&#xff08;自己选择&#xff09; IDEA 集成环境 下载地址 IntelliJ IDEA – the Leading Java and Kotl…

展馆展厅设计施工流程

1、需求分析和确定&#xff1a; 与客户沟通&#xff0c;了解客户需求&#xff0c;对展馆展厅的用途、面积、功能、展品特点等进行分析&#xff0c;并确定设计方案。 2、方案设计 根据需求确定设计方案&#xff0c;包括平面布局、展品陈列、展示方式、照明等。设计师需要提供设计…

防静电劳保鞋:工业安全中的隐形守护者

在工业生产环境中&#xff0c;静电问题常常被忽视&#xff0c;然而它却是许多安全事故的潜在隐患。静电不仅可能损坏敏感的电子设备&#xff0c;更在易燃易爆环境中构成严重威胁。因此&#xff0c;防静电措施在工业安全中显得尤为重要。在众多防静电措施中&#xff0c;防静电劳…

618有哪些好物值得推荐?收下这份618必买好物清单

随着618购物节的脚步越来越近&#xff0c;你是不是已经开始摩拳擦掌&#xff0c;准备大肆采购一番了&#xff1f;在这个购物狂欢节里&#xff0c;要说哪些宝贝最值得你入手&#xff0c;那一定少不了数码家电类&#xff01;今天就给大家整理了一些我往期自用过还不错的数码家电好…