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

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

这是栖落的电影网站地址: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 返回一个可迭代对象

相关文章:

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

这是栖落的电影网站地址&#xff1a;https://xxx.xxx 进入网页&#xff0c;显示&#xff1a; 爬取目标&#xff1a;电影的名称、观影人数和评分。 易知本网站的url url "https://xxx.xxx" 本网站会识别出headers中的python请求而拒绝访问&#xff0c;所以需要更改…...

使用burpsuite抓包 + sql工具注入 dvwa靶场

使用burpsuite抓包 sql工具注入 dvwa靶场 记录一下自己重新开始学习web安全之路②。 一、准备工作 1.工具准备 sqlmap burpsuite 2.浏览器准备 火狐浏览器 设置代理。 首先&#xff0c;先设置一下火狐浏览器的代理 http代理地址为127.0.0.0.1 &#xff0c;端口为8080 …...

树与图中的dfs和bfs—— AcWing 846. 树的重心 AcWing 847. 图中点的层次

一、AcWing 846. 树的重心1.1题目1.2思路分析题意&#xff1a;什么是树的重心&#xff1f;树的重心是指&#xff0c;删除某个结点后剩下的最大连通子树的结点数目最小&#xff0c;如下图是根据样列生成的树&#xff0c;若删除结点1&#xff0c;则剩下三个子树最大的是中间那颗结…...

从零开始学数据分析之数据分析概述

当今世界对信息技术的依赖程度在不断加深&#xff0c;每天都会有大量的数据产生&#xff0c;我们经常会感到数据越来越多&#xff0c;但是要从中发现有价值的信息却越来越难。 这里所说的信息&#xff0c;可以理解为对数据集处理之后的结果&#xff0c;是从数据集中提炼出的可…...

十五载厚积薄发,电信级分布式数据库是这样炼成

所在论坛&#xff1a;数据库技术创新&云原生论坛 分享时段&#xff1a;2.18 10:00-10:30 分享主题&#xff1a;大规模并行处理&#xff1a;AntDB分布式演进之路 分享嘉宾&#xff1a;沈夺&#xff0c;亚信科技AntDB数据库内核开发工程师 由中国开源软件推进联盟Postgre…...

Centos调整分区存储大小

将/home下900G转移到/目录下 1、查看分区大小&#xff1a;df -hl 2、备份home文件&#xff1a;tar cvf /run/home.tar /home 3、终止home文件进程&#xff08;切换到非home路径下执行这个命令&#xff09;&#xff1a;fuser -km /home 3.1、如果没有fuser&#xff0c;在线安装…...

华为OD机试真题JAVA实现【单词接龙】真题+解题思路+代码(20222023)

华为OD机试真题JAVA实现【单词接龙】真题+解题思路+代码(2022&2023) 🔥系列专栏 华为OD机试(JAVA)真题目录汇总华为OD机试(Python)真题目录汇总华为OD机试(C++)真题目录汇总华为OD机试(JavaScript)真题目录汇总文章目录 🔥系列专栏题目输入输出示例一输入输…...

Mapbox Style 规范

Mapbox致力于打造全球最漂亮的个性化地图。 中文官网经常打不开所以做下记录&#xff0c;方便查阅。 Web 端 API Mapbox GL JS 的地图样式规范 Style 的各个配置项&#xff1a; &#xff08;必填项会加上 * &#xff0c;方便根据目录进行查看&#xff09; 配置项&#xff1a;1.…...

Java开发学习(五十)----MyBatisPlus快速开发之代码生成器解析

1、代码生成器原理分析 造句: 我们可以往空白内容进行填词造句&#xff0c;比如: 在比如: 观察我们之前写的代码&#xff0c;会发现其中也会有很多重复内容&#xff0c;比如: 那我们就想&#xff0c;如果我想做一个Book模块的开发&#xff0c;是不是只需要将红色部分的内容全部…...

HTML学习

文章目录基础知识什么是HTMLW3C标准在IDEA中创建一个html文件HTML的基本结构网页基本信息网页的基本标签图像标签链接标签文本链接图片链接图片格式锚链接功能性链接其他基本标签块元素和行内元素标签对照表列表HTML3种列表有序列表无序列表定义列表HTML学习中的误区表格标签基…...

Java最新学习路线

Java语言是目前流行的互联网等企业的开发语言&#xff0c;是市面上很多程序员喜欢并且在用的程序设计语言。关于学习java&#xff0c;有一部分人是为了就业或自己创业&#xff0c;而大多数人是希望使用java这个开发语言用来工作&#xff0c;开发出计算机后端系统&#xff0c;利…...

腾讯xSRC[linux+docker]搭建教程

腾讯xSRC[linuxdocker]搭建教程 1.下载镜像 docker pull xsrc/xsrc:v1.0.12.启动镜像 1️⃣启动镜像 docker run -it -d --name xsrc_web -p 60080:80 -p 63306:3306 --privilegedtrue xsrc/xsrc:v1.0.1注意将3306端口映射到8806端口&#xff0c;以便于远程连接访问容器内数…...

springcloud - 2021.0.3版本 - (一)服务注册nacos+feign

一&#xff0c;注册中心 最新版使用的是nacos&#xff0c;可替换为eureka&#xff0c;zookeeper&#xff0c;使用方式大同小异&#xff0c;这里不做扩展。 下载安装&#xff1a;&#xff08;有机会重装时再补上&#xff09; 管理页面&#xff1a;http://localhost:8848/naco…...

C++教程(初级,有基础)

C教程&#xff08;初级&#xff0c;有基础&#xff09; #include <iostream> using namespace std; int main() { /*对应printf("")*/cout << "Hello, world!" << endl;//cout << "Hello, world!" << "\n&q…...

字符编码及转换

什么是字符编码字符编码&#xff08;Character encoding&#xff09;也称字集码&#xff0c;是把字符集中的字符&#xff0c;编码为指定集合中的某一对象&#xff08;例如&#xff1a;比特模式、自然数序列、8位组或者电脉冲&#xff09;&#xff0c;以便文本在计算机中存储或者…...

redis原理

文章目录一、Redis数据结构1.1.动态字符串SDS1.2 intset1.3 Dict1.4 ZipList1.5 QuickList1.6 SkipList1.7 RedisObject二、Redis五大基本数据类型底层2.1.String2.2.List2.3.Set2.4.ZSet2.4.Hash三、Redis网络模型3.1.用户空间和内核空间3.2.阻塞IO3.3.非阻塞IO3.4.IO多路复用…...

kettle开发-Day37-SQ索引优化

前言&#xff1a;在上一个生产项目中&#xff0c;有个单表数据超249G了&#xff0c;里面存储的数据时间跨度就1年左右&#xff0c;那为啥会出现这种情况呢&#xff1f;数据来源为&#xff0c;一个生产基地所有电表的每分钟读数&#xff0c;一个基地大概500个电表左右&#xff0…...

【camera之3a】AE

文章目录sensorAEsensor 分辨率 常见分辨率的感性表述即30万、100万、200万&#xff0c;正确表述应为0.3M、1M、2M&#xff0c;其中M代表百万&#xff0c;是像素单位。sensor分辨率即指在单位面积上&#xff0c;像素的个数&#xff0c;数值越大 &#xff0c;则代表像素点越多&…...

Docker-Consul概述以及集群环境搭建

一、Docker consul概述容器服务更新与发现&#xff1a;先发现再更新&#xff0c;发现的是后端节点上容器的变化&#xff08;registrator&#xff09;&#xff0c;更新的是nginx配置文件&#xff08;agent&#xff09;egistrator&#xff1a;是consul安插在docker容器里的眼线&a…...

性能技术分享|Jmeter+InfluxDB+Grafana搭建性能平台(四)

四、Jmeter配置InfluxDB4.1 后端监听器(BackendListener)介绍1、什么是后端监听器(BackendListener)&#xff1f;源码给出的解释是&#xff1a;BackendListener是一种异步监听并获取到测试结果的实现类。也就是说发出的如http等响应请求的结果&#xff0c;都会被封装在SampleRe…...

地震勘探——干扰波识别、井中地震时距曲线特点

目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波&#xff1a;可以用来解决所提出的地质任务的波&#xff1b;干扰波&#xff1a;所有妨碍辨认、追踪有效波的其他波。 地震勘探中&#xff0c;有效波和干扰波是相对的。例如&#xff0c;在反射波…...

IGP(Interior Gateway Protocol,内部网关协议)

IGP&#xff08;Interior Gateway Protocol&#xff0c;内部网关协议&#xff09; 是一种用于在一个自治系统&#xff08;AS&#xff09;内部传递路由信息的路由协议&#xff0c;主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中&#xff0c;每个页面需要使用ref&#xff0c;onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入&#xff0c;需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

vscode(仍待补充)

写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh&#xff1f; debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验

一、多模态商品数据接口的技术架构 &#xff08;一&#xff09;多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如&#xff0c;当用户上传一张“蓝色连衣裙”的图片时&#xff0c;接口可自动提取图像中的颜色&#xff08;RGB值&…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级

在互联网的快速发展中&#xff0c;高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司&#xff0c;近期做出了一个重大技术决策&#xff1a;弃用长期使用的 Nginx&#xff0c;转而采用其内部开发…...

大学生职业发展与就业创业指导教学评价

这里是引用 作为软工2203/2204班的学生&#xff0c;我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要&#xff0c;而您认真负责的教学态度&#xff0c;让课程的每一部分都充满了实用价值。 尤其让我…...

如何在网页里填写 PDF 表格?

有时候&#xff0c;你可能希望用户能在你的网站上填写 PDF 表单。然而&#xff0c;这件事并不简单&#xff0c;因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件&#xff0c;但原生并不支持编辑或填写它们。更糟的是&#xff0c;如果你想收集表单数据&#xff…...

C#学习第29天:表达式树(Expression Trees)

目录 什么是表达式树&#xff1f; 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持&#xff1a; 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...

MySQL 部分重点知识篇

一、数据库对象 1. 主键 定义 &#xff1a;主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 &#xff1a;确保数据的完整性&#xff0c;便于数据的查询和管理。 示例 &#xff1a;在学生信息表中&#xff0c;学号可以作为主键&#xff…...