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

【Delphi 爬虫库 6】使用正则表达式提取猫眼电影排行榜top100

正则表达式库的简单介绍

正则表达式易于使用,功能强大,可用于复杂的搜索和替换以及基于模板的文本检查。这对于输入形式的用户输入验证特别有用-验证电子邮件地址等。您还可以从网页或文档中提取电话号码,邮政编码等,在日志文件中搜索复杂的模式,然后您就可以想象得到。无需重新编译程序即可更改规则(模板)。

分析猫眼电影数据

https://www.maoyan.com/board/4?offset=0
有10部电影
https://www.maoyan.com/board/4?offset=10
又有10部电影,以此类图+10

分析其中一部电影的网页源码:

<dd><i class="board-index board-index-2">2</i><a href="/films/1297" title="肖申克的救赎" class="image-link" data-act="boarditem-click" data-val="{movieId:1297}"><img src="//s3.meituan.net/static-prod01/com.sankuai.movie.fe.mywww-files/image/loading_2.e3d934bf.png" alt="" class="poster-default" /><img data-src="https://p0.pipi.cn/mmdb/fb7386020fa51b0fafcf3e2e3a0bbe694d17d.jpg?imageView2/1/w/160/h/220" alt="肖申克的救赎" class="board-img" /></a><div class="board-item-main"><div class="board-item-content"><div class="movie-item-info"><p class="name"><a href="/films/1297" title="肖申克的救赎" data-act="boarditem-click" data-val="{movieId:1297}">肖申克的救赎</a></p><p class="star">主演:蒂姆·罗宾斯,摩根·弗里曼,鲍勃·冈顿</p>
<p class="releasetime">上映时间:1994-09-10(加拿大)</p>    </div><div class="movie-item-number score-num">
<p class="score"><i class="integer">9.</i><i class="fraction">5</i></p>        </div></div></div>
</dd>

构造正则表达式:
<dd>.*?board-index.*?>(.*?)</i>.*?data-src="(.*?)".*?name.*?a.*?>(.*?)</a>.*?star.*?>(.*?)</p>.*?releasetime.*?>(.*?)</p>.*?integer.*?>(.*?)</i>.*?fraction.*?>(.*?)</i>.*?</dd>

提取数据保存

function ExtractMovies(const AInputString: string; ATemplate: string): string;
constMovieRE = '<dd>.*?board-index.*?>(.*?)</i>.*?data-src="(.*?)".*?name.*?a.*?>(.*?)</a>.*?star.*?>(.*?)</p>.*?releasetime.*?>(.*?)</p>.*?integer.*?>(.*?)</i>.*?fraction.*?>(.*?)</i>.*?</dd>';
varr           : TRegExpr;OutputString: string;
beginResult := '';r      := TRegExpr.Create;tryr.Expression := MovieRE;if r.Exec(AInputString) thenrepeatResult := Result + Format('{''image'':''%1s'',''actor'':''%2s'',''score'':''%3s'',''index'':''%4s'',''tit1e'':''%5s'',''time'':''%6s''}',[r.Match[2], Trim(r.Match[4]), r.Match[6] + r.Match[7], Trim(r.Match[1]), r.Match[3], r.Match[5]]) + sLineBreak;until not r.ExecNext;finallyr.Free;end;
end;

返回数据:
在这里插入图片描述

http://www.lryc.cn/news/346413.html

相关文章:

  • Markdown和Latex中文字上下标的方法
  • VSCode:设置顶部文件标签页滚动条的宽度
  • MySQL变量的定义与使用
  • python-pytorch seq2seq+attention笔记0.5.00
  • ansible 深入介绍之 主机清单与playbook
  • 【MySQ】9.构建高可用数据库:MySQL集群模式部署大全
  • Leedcode题目:移除链表元素
  • 1_1. Linux简介
  • Swift 函数
  • QT creator qt6.0 使用msvc2019 64bit编译报错
  • scrapy常用命令总结
  • 【Linux系列】file命令
  • 基于php+mysql+html简单图书管理系统
  • 【Python系列】Python中列表属性提取
  • 使用MATLAB/Simulink点亮STM32开发板LED灯
  • HDFS- DataNode磁盘扩缩容
  • 5.10.3 使用 Transformer 进行端到端对象检测(DETR)
  • 前端开发指导
  • 三方库的调用方法
  • 如何使用提示测试为LLMs构建单元测试?
  • 目前市面上堡垒机厂家有哪些?会帮忙部署吗?
  • 【备忘】在使用php-ffmpeg/php-ffmpeg开发时遇到Unable to load FFProbe时如何处理?
  • REFORMER: 更高效的TRANSFORMER模型
  • 视频合并有妙招:视频剪辑一键操作,批量嵌套合并的必学技巧
  • 安装SQL Server详细教程_sql server安装教程
  • Git那些事-如何撤销暂存区的文件
  • 记一次SQL和程序查询结果不一致的问题
  • Python 实战之量化交易
  • 跟我学C++中级篇——封装对象的实践
  • iOS面试题链接汇总