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

Python学习---基于正则表达式的简单爬取电影下载信息案例

一、定义函数获取列表页的内容页地址 get_movie_links()

1、定义列表的地址

2、打开url地址,获取数据

3、解码获取到的数据

4、使用正则得到所有的影片内容也地址
    4.1 遍历,取出内容页地址
    4.2 拼接内容页地址
    4.3 打开内容页地址
    4.4 获取数据,并读取
    4.5 解码内容页数据,得到html内容页文本
    4.6 使用正则,获取下载地址的连接
    4.7 把影片信息和下载链接,保存到字典中
    4.8 返回字典
二、主函数 main
1、调用 get_movie_list() ,得到字典
2、遍历字典,将内容保存到本地CSV文件中

"""
一、定义函数获取列表页的内容页的地址get_movie_links()
1、定义列表地址https://www.ygdy8.net/html/gndy/dyzz/list_23_1.html
2、打开url1地址,获取数据
3、解码获取到的数据
4、使用正则得到所有影片内容页的地址二、主函数
"""
import urllib.request
import re
import csvdef get_movie_links():# 1、定义列表地址https: // www.ygdy8.net / html / gndy / dyzz / list_23_1.htmlfilm_list_url = "https://www.ygdy8.net/html/gndy/dyzz/list_23_1.html"# 2、打开url1地址,获取数据response_list = urllib.request.urlopen(film_list_url)# 通过read()读取网络资源数据response_list_data = response_list.read()# 3、解码获取到的数据response_list_text = response_list_data.decode("gbk")# 4、使用正则得到所有影片内容页的地址# 使用findall()查找影片内容对应地址url_list = re.findall(r"<a href=\"(.*)\" class=\"ulink\">(.*)</a>", response_list_text)# 定义字典保存电影信息films_dict = {}# 保存地址[('/html/gndy/dyzz/20240514/64980.html', '2024年科幻动作《哥斯拉大战金刚2:帝国崛起》BD中英双字'),……]# 定义变量记录电影条数i = 1# 循环遍历列表得到每个电影的地址for content_url, film_name in url_list:# 拼接目标电影地址content_url = "https://www.ygdy8.net/" + content_url# 打开每一部电影的内容页地址response_content = urllib.request.urlopen(content_url)# 接收内容页的html二进制信息response_content_data = response_content.read()# 解码得到内容页的文本内容response_content_text = response_content_data.decode("gbk")# 取出下载内容页地址# print(response_content_text)result = re.search(r"href=\"(.*?)\"><strong><font style=\"BACKGROUND-COLOR: #ff9966\"><font color=\"#0000ff\">[<font size=\"4\">]*(.*?)</font>",response_content_text)# 将信息保存到字典中films_dict[film_name] = result.group(1)print(f"已经获取{i}条信息")i += 1return films_dictdef main():films_dict = get_movie_links()# 定义CSV文件名csv_file_name = "films.csv"# 打开文件进行写入with open(csv_file_name, 'w', newline='', encoding='utf-8') as csvfile:# 定义CSV文件的列名fieldnames = ['film_name', 'film_link']# 创建csv writer对象writer = csv.DictWriter(csvfile, fieldnames=fieldnames)# 写入列名行writer.writeheader()# 遍历字典并写入数据行for film_name, film_link in films_dict.items():writer.writerow({'film_name': film_name, 'film_link': film_link})print(f"数据已成功保存到当前目录下的{csv_file_name}")if __name__ == '__main__':main()

注意没有涉及代理,只是对正则表达式的练习应用,可能在爬取过程中被封禁ip,建议设置延时缓慢爬取或自己开启代理 ,否则慎用……

相关文章:

Python学习---基于正则表达式的简单爬取电影下载信息案例

一、定义函数获取列表页的内容页地址 get_movie_links() 1、定义列表的地址 2、打开url地址&#xff0c;获取数据 3、解码获取到的数据 4、使用正则得到所有的影片内容也地址 4.1 遍历&#xff0c;取出内容页地址 4.2 拼接内容页地址 4.3 打开内容页地址 4.4 获…...

.DS_store文件

感觉mac里的这个.DS_store文件烦人&#xff0c;老是莫名其妙的出现&#xff0c;然后造成困扰 处理方式如下&#xff1a; import os pic_list os.listdir("./mask_pic/") print(len(pic_list)) # 从文件夹中删掉 if(".DS_Store" in pic_list):print(&quo…...

【webrtc】内置opus解码器的移植

m98 ,不知道是什么版本的opus,之前的交叉编译构建: 【mia】ffmpeg + opus 交叉编译 【mia】ubuntu22.04 : mingw:编译ffmpeg支持opus编解码 看起来是opus是1.3.1 只需要移植libopus和opus的webrtc解码部分即可。 linux构建的windows可运行的opus库 G:\NDDEV\aliply-0.4\C…...

Java注解:讲解Java注解(Annotations)的概念,使用,并展示如何自定义注解,甚至框架级别的使用说明

1. 注解的概念 1.1 介绍Annotation的基础概念 Java注解(Annotation)是Java 5.0及更高版本中引入的一种元数据(meta-data),即数据的数据。它以一种形式附着在代码中,但是对代码的运行不产生直接效果。注解可以用于创建文档、追踪代码依赖性、甚至执行编译期版错误检查等…...

二维矩阵乘法案例

二维矩阵相乘计算原理&#xff1a;第一个矩阵的每一行分别与第二个矩阵的每一列做向量点乘&#xff0c;将所得结果填入新矩阵相应的位置。 例如&#xff0c;给定矩阵 A [ [1, 2 ], [3, 4] ]和 B [ [5, 6 ], [7, 8] ]&#xff0c;它们的乘积AB分别为&#xff1a; AB[ 0 ] [ 0…...

selenium安装出错

selenium安装步骤&#xff08;法1&#xff09;&#xff1a; 安装失败法1 第一次实验&#xff0c;失败 又试了一次&#xff0c;失败 安装法2-失败&#xff1a; ERROR: Could not install packages due to an EnvironmentError: [WinError 5] 拒绝访问。: c:\\programdata\\a…...

前端中 dayjs 时间的插件使用(在vue 项目中)

Day.js中文网 这是dayjs的中文文档 里面包括了使用方法 下面我来详细介绍一下这个插件的使用 Day.js 可以运行在浏览器和 Node.js 中。 一般咱直接是 npm 安装 npm install dayjs 目前应该使用的是Es6 的语法 import dayjs from dayjs 当前时间 直接调用 dayjs() 将返回…...

tp5问题集记录 一

tp5问题集记录 一 前言车祸现场 前言 在写tp5接口的时候&#xff0c;发现model里面的参数查询出来之后&#xff0c;怎么改都不生效&#xff0c;也是自己不熟悉钻牛角尖了。 车祸现场 例如下面的代码使用model处理预处理 // SPUpublic function getSpuAttr($value, $data){$…...

AGI技术与原理浅析:曙光还是迷失?

前言&#xff1a;回顾以往博客文章&#xff0c;最近一次更新在2020-07&#xff0c;内容以机器学习、深度学习、CV、Slam为主&#xff0c;顺带夹杂个人感悟。笔者并非算法科班出身&#xff0c;本科学制药、研究生学金融&#xff0c;最原始的算法积累都来源于网络&#xff0c;当时…...

探秘机器学习经典:K-近邻算法(KNN)全解析

在浩瀚的机器学习宇宙中,K-近邻算法(K-Nearest Neighbors,简称KNN)如同一颗璀璨的明星,以其简洁直观的原理和广泛的应用范围,赢得了众多数据科学家的喜爱。今天,让我们一起揭开KNN的神秘面纱,深入探讨它的运作机制、优缺点、应用场景,以及如何在实际项目中灵活运用。 …...

数据可视化每周挑战——全国星巴克门店数据可视化

这是我国星巴克门店的位置&#xff0c;营业时间等数据。 1.导入需要用的库&#xff0c;同时设置绘图时用到的字体&#xff0c;同时防止绘图时负号无法正常显示的情况。 import pandas as pd from pyecharts.charts import Bar,Map,Line,Pie,Geo from pyecharts import option…...

【前端】js通过元素属性获取元素

【前端】js通过元素属性获取元素 <div for"hc_opportunity_config">aaaaa</div>//通过属性获取元素document.querySelector([for"hc_opportunity_config"]) document.querySelector([属性"属性值"])...

申请轻纺行业工程设计资乙级对企业有什么要求

注册资金&#xff1a;企业的注册资金应至少达到三百万&#xff0c;这是衡量企业经济实力和承担风险能力的重要指标。独立法人资格&#xff1a;企业应具备独立的法人资格&#xff0c;能够独立承担民事责任&#xff0c;并具备相应的经营自主权。专业技术人员配备&#xff1a;企业…...

基于单片机电梯控制系统设计与实现

摘 要: 介绍了电梯控制系统架构 &#xff0c; 指出了该系统的硬件设计和控制系统的软件设计以及系统调试 &#xff0c; 使系统可根据按键 要求完成载客任务&#xff0c;为电梯控制系统的优化提供了参考 。 关键词 : 电梯控制 ; 单片机 ; 系统设计 0 引言 在高层建筑中发挥…...

嵌入式单片机笔试题

DC-DC 和 LDO两者有何区别&#xff1f; DC-DC转换器&#xff08;直流-直流转换器&#xff09;和LDO&#xff08;低压差线性稳压器&#xff09;都是用于电源管理的设备&#xff0c;但它们在原理和特性上有一些显著的区别&#xff1a; 原理&#xff1a; DC-DC转换器通过改变输…...

生活小区火灾预警新篇章:泵吸式可燃气体报警器的检定与运用

在现代化的生活小区中&#xff0c;燃气设备广泛应用于居民的日常生活之中&#xff0c;但同时也带来了潜在的火灾风险。 可燃气体报警器作为一种安全监测设备&#xff0c;能够及时检测到燃气泄漏等安全隐患&#xff0c;并在达到预设的阈值时发出警报&#xff0c;提醒居民采取相…...

263 基于matlab得到的频分复用(FDM,Frequency Division Multiplexing)实现

基于matlab得到的频分复用(FDM&#xff0c;Frequency Division Multiplexing)实现&#xff0c;仿真时录入三路声音信号进行处理&#xff0c;将用于传输信道的总带宽划分成三个子频带&#xff0c;经过复用以后再将录入的声音信号恢复出来。程序已调通&#xff0c;可直接运行。 2…...

使用v-model完成数据的双向绑定

创作灵感 面试问道了&#xff0c;没答出来&#xff0c;呜呜呜~ v-model实现双向绑定的原理 首先我们要知道&#xff0c;v-model实现的双向绑定其实只是props与emit的简化版本。其中&#xff0c;props负责父组件向子组件传递值&#xff0c;emit负责子组件向父组件传递值。 在…...

如何使用Android NDK将头像变成“遗像”

看完本文的标题&#xff0c;可能有人要打我。你说黑白的老照片不好吗&#xff1f;非要说什么遗像&#xff0c;我现在就把你变成遗像&#xff01;好了&#xff0c;言归正传。我想大部分人都用过美颜相机或者剪映等软件吧&#xff0c;它们的滤镜功能是如何实现的&#xff0c;有人…...

python判断字符串是否为回文串的详细解析与实现

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言&#xff1a;回文串的定义与背景 二、判断回文串的基本思路 示例解析 三、代码实…...

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

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

synchronized 学习

学习源&#xff1a; https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖&#xff0c;也要考虑性能问题&#xff08;场景&#xff09; 2.常见面试问题&#xff1a; sync出…...

linux之kylin系统nginx的安装

一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源&#xff08;HTML/CSS/图片等&#xff09;&#xff0c;响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址&#xff0c;提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

K8S认证|CKS题库+答案| 11. AppArmor

目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作&#xff1a; 1&#xff09;、切换集群 2&#xff09;、切换节点 3&#xff09;、切换到 apparmor 的目录 4&#xff09;、执行 apparmor 策略模块 5&#xff09;、修改 pod 文件 6&#xff09;、…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包&#xff1a;import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序&#xff08;自然排序和定制排序&#xff09;Arrays.binarySearch()通过二分搜索法进行查找&#xff08;前提&#xff1a;数组是…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂

蛋白质结合剂&#xff08;如抗体、抑制肽&#xff09;在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上&#xff0c;高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术&#xff0c;但这类方法普遍面临资源消耗巨大、研发周期冗长…...

Go 语言接口详解

Go 语言接口详解 核心概念 接口定义 在 Go 语言中&#xff0c;接口是一种抽象类型&#xff0c;它定义了一组方法的集合&#xff1a; // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的&#xff1a; // 矩形结构体…...

相机从app启动流程

一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

MySQL用户和授权

开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务&#xff1a; test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...