爬虫:栖落的电影网站,利用requests和re模块

news2024/12/24 9:05:54

这是栖落的电影网站地址:https://xxx.xxx

进入网页,显示:

 爬取目标:电影的名称、观影人数和评分。

易知本网站的url

url = "https://xxx.xxx"

本网站会识别出headers中的python请求而拒绝访问,所以需要更改headers当中的信息

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 Edg/11.0.1587.41

对应的代码为:

headers = {
    "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 Edg/11.0.1587.41"

选中目标

 利用正则表达式匹配相应的信息。

obj = re.compile(r'<li>.*?标志1.*?标志2.*?标志1.*?标志2.*?标志1.*?标志2.*?</li>',re.S)

红色的.*?匹配需要的信息,其余的过滤掉多余的信息,各个标志为.*?的左右端的关键信息,r为requests模块返回的text文本。 

并且我们需要为匹配的信息赋予相应的意义,即名、观影人数和评分。

利用(?<别名>)

obj = re.compile(r'<li>.*?标志1(?P<name>.*?)标志2.*?标志1(?P<num>.*?)标志2.*?标志1<?P<score>.*?)标志2.*?</li>',re.S)

把匹配的对象放入list中以便遍历。

result = obj.finditer(r)

遍历且以一定格式输出。

 for it in result:
    print("{:<10s}{:<5s{<5s}".format(it.group("name"),it.group("num"),it.group("score")))

参考代码: 

import requests
import re

#获取页面信息
url = "https://xxx.xxx"
headers = {
   "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 Edg/11.0.1587.41"
}
r = requests.get(url,headers=headers)
r = r.text
#print(r)
#解析页面
obj = re.compile(r'<li>.*?<span class="title">(?P<name>.*?)</span>.*?<br>(?P<num>.*?)&nbsp.*?<span class="rating_num" property="v:average">(?P<score>.*?)</li>',re.S)
#匹配
result = obj.finditer(r)
#输出
for it in result:
    print("{:<10s}{:<5s{<5s}".format(it.group("name"),it.group("num"),it.group("score")))






输出结果: 

小结: 

如何爬取本站?

  1. 确定url
  2. 更改headers
  3. 请求页面信息
  4. 正则匹配
  5. 输出

提问 :

re.compile是啥?

compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象。

语法格式如下:re.compile(pattern,[flags])

参数:

pattern : 一个字符串形式的正则表达式

flags : 可选,表示匹配模式,比如忽略大小写,多行模式等,具体参数为:

  • re.I :忽略大小写
  • re.L :表示特殊字符集 \w, \W, \b, \B, \s, \S 依赖于当前环境
  • re.M :多行模式
  • re.S :即为 . 并且包括换行符在内的任意字符(. 不包括换行符)
  • re.U :表示特殊字符集 \w, \W, \b, \B, \d, \D, \s, \S 依赖于 Unicode 字符属性数据库
  • re.X :为了增加可读性,忽略空格和 # 后面的注释

 finditer是啥?

finditer 返回一个可迭代对象

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

企业管理者不得不看!现在的大企业都是怎么做文档管理的?

最近有一位朋友问我&#xff1a;“如果是大型企业&#xff0c;文档该怎么管理&#xff1f;” 说实话&#xff0c;很多内部的CIO、CTO对这个问题都是束手无策。信息文件散乱、难以和内部的组织构架关联起来、查找困难、不同版本更新进度不一&#xff0c;确实存在一些管理上的难题…

【DSP视频教程】第11期:插补算法,曲线拟合丝滑顺畅,统计函数和基础函数加速实现,汇集SIMD,饱和和MAC乘累加应用实战(2023-02-12)

视频教程汇总帖&#xff1a;https://www.armbbs.cn/forum.php?modviewthread&tid110519 DSP视频教程有段时间没有更新了。 当前DSP库从CMSIS软件包里面独立出来&#xff0c;并且更新非常频繁&#xff0c;所以本期视频教程优先给大家简单介绍下新版DSP&#xff0c; 然后为…

物流运输管理系统源码:实现物流公司全链条管理

一套适用于物流公司的物流运输管理系统&#xff0c;涵盖物流公司内部从订单->提货->运单->配车->点到->预约->签收->回单->代收货款的全链条管理系统。 运行环境&#xff1a;Windows.NET4.0SQLSERVER2008R2 私信了解更多&#xff01; 菜单功能&#…

灰色关联分析法详解及python实践

1. 关于灰色关联分析 1.1. 什么是灰色关联分析 灰色关联分析是指对一个系统发展变化态势的定量描述和比较的方法&#xff0c;其基本思想是通过确定参考数据列和若干个比较数据列的几何形状相似程度来判断其联系是否紧密&#xff0c;它反映了曲线间的关联程度。 在系统发展过…

亚马逊云科技携手滴普科技,打造数据智能新标杆

随着企业数字化转型的不断深入&#xff0c;数据对于业务的价值和重要性也逐渐凸显。越来越多企业意识到&#xff0c;只有不断提升底层数据基础平台的性能和能力&#xff0c;才能构建数据驱动的业务&#xff0c;增强企业核心竞争力。作为湖仓一体数据智能基础软件独角兽企业&…

python基础之变量

Python 中的变量不需要声明。每个变量在使用前都必须赋值&#xff0c;变量赋值以后该变量才会被创建。 在 Python 中&#xff0c;变量就是变量&#xff0c;它没有类型&#xff0c;我们所说的"类型"是变量所指的内存中对象的类型。 1&#xff1a;什么是变量 变量指的…

纽扣电池上架亚马逊UL4200A检测项目流程

纽扣电池&#xff08;button cell &#xff09;也称扣式电池&#xff0c;是指外形尺寸象一颗小纽扣的电池&#xff0c;一般来说直径较大&#xff0c;厚度较薄。纽扣电池因体形较小&#xff0c;故在各种微型电子产品中得到了广泛的应用&#xff0c;直径从4.8mm至30mm&#xff0c…

腾讯云轻量应用服务器和云服务器CVM区别

腾讯云轻量级服务器和云服务器有什么区别&#xff1f;轻量级应用服务器和云服务器CVM哪个更好&#xff1f;无论成本和使用门槛如何&#xff0c;云服务器CVM都更好&#xff1b;从性价比和易用性的角度来看&#xff0c;轻量级应用服务器的成本更低。来详细谈谈腾讯云轻量级应用服…

LabVIEW项目或库文件已损坏

LabVIEW项目或库文件已损坏尝试打开项目文件&#xff08;*.lvproj&#xff09;时&#xff0c;不断收到错误&#xff1a;项目或库文件已损坏。当尝试在新计算机上打开类库时&#xff0c;看到错误内存或数据结构损坏。无法加载文件&#xff0c;但库在另一台计算机上打开正常。如何…

如何学习PMP?

★基础要打牢 方法&#xff1a;“基础不牢&#xff0c;地动山摇”&#xff0c;如果基础不牢那么就很难拿高分&#xff0c;因为连最基础的题目分都不一定能拿到。 可以在针对基础知识&#xff0c;把PMBOK看一两遍&#xff0c;再次加深印象&#xff0c;再把平时做章节练习、每日5…

Java导出自定义Excel表格,一套组合拳解决

&#x1f535; (一) 功能现状 &#x1f36d;目前大部分SpringBoot框架中自带了Excel导出功能&#xff0c;但其中并不支持自定义导出效果的可能性很大。比如很多框架中都能直接支持自动生成关于单表的增删改查操作的前后端代码&#xff0c;但是复杂的多表操作就无法做到&#xf…

c# winform错误大全

c# winform 错误大全为了实现安装包安装完成后&#xff0c;启动程序。System.BadImageFormatException: 未能加载文件或程序集“file:///C:\xxxxxxxxx\xxxxxxx.exe”或它的某一个依赖项。生成此程序集的运行时比当前加载的运行时新&#xff0c;无法加载此程The version of the …

软件功能测试包含了哪些测试项目?功能测试报告收费标准

一、软件功能测试是什么? 软件功能测试是测试人员通过执行功能测试用例逐步验证软件产品各项功能是否达到预期需求的测试过程。也是俗称的“点点点测试”&#xff0c;这是基础性的测试类型&#xff0c;软件产品的功能直接影响到用户体验&#xff0c;所以软件功能测试意义重大…

UDP的详细解析

UDP的详细解析 文章目录UDP的详细解析UDP 概述UDP的首部格式检验和的计算抓包测试参考TCP/IP运输层的两个主要协议都是互联网的正式标准&#xff0c;即&#xff1a;用户数据报协议UDP (User Datagram Protocol)传输控制协议TCP (Transmission Control Protocol) 按照OSI的术语…

【汽车电子】什么是ADAS?

文章目录ADAS——先进驾驶辅助系统ADAS——商用车安全性能提升的利器总结ADAS——先进驾驶辅助系统 ADAS&#xff0c;全称Advanced Driver Assistance Systems &#xff0c;“先进驾驶辅助系统”&#xff0c;adas是汽车上面的一种系统&#xff0c;中文名叫做高级驾驶辅助系统&…

Java集合框架常见面试题

1. 剖析面试最常见问题之 Java 集合框架 1.1. 集合概述 1.1.1. Java 集合概览1.1.2. 说说 List,Set,Map 三者的区别&#xff1f;1.1.3. 集合框架底层数据结构总结 1.1.3.1. List1.1.3.2. Set1.1.3.3. Map 1.1.4. 如何选用集合?1.1.5. 为什么要使用集合&#xff1f; 1.2. Colle…

促进关键软件高层次人才培养:平凯星辰与华东师范大学签订联合博士培养合作协议

2022 年年初&#xff0c;平凯星辰入选首批工信部教育部支持联合培养国家关键软件高层次人才计划。该计划旨在探索关键软件产教融合育人模式&#xff0c;超常规加快培养一批急需高层次人才&#xff0c;以及探索关键软件联合技术攻关新模式。2022 年年底&#xff0c;在该计划下 平…

算法 ——世界 一

个人简介&#xff1a;云计算网络运维专业人员&#xff0c;了解运维知识&#xff0c;掌握TCP/IP协议&#xff0c;每天分享网络运维知识与技能。个人爱好: 编程&#xff0c;打篮球&#xff0c;计算机知识个人名言&#xff1a;海不辞水&#xff0c;故能成其大&#xff1b;山不辞石…

微服务实战--高级篇:RabbitMQ高级

服务异步通信-高级篇 消息队列在使用过程中&#xff0c;面临着很多实际问题需要思考&#xff1a; 1.消息可靠性 消息从发送&#xff0c;到消费者接收&#xff0c;会经理多个过程&#xff1a; 其中的每一步都可能导致消息丢失&#xff0c;常见的丢失原因包括&#xff1a; 发送…

2月14,情人节双语送祝福!

2月14日是圣瓦伦丁节&#xff0c;也叫情人节&#xff0c;是西方传统节日 Ebruary 14th is Saint Valentines Day, a traditional holiday in the west.在基督教传统中&#xff0c;有数个名叫Valentine或是Valentinus的殉难圣徒。根据传说&#xff0c;这些Valentine中其中一名是…