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地址,获取数据 3、解码获取到的数据 4、使用正则得到所有的影片内容也地址 4.1 遍历,取出内容页地址 4.2 拼接内容页地址 4.3 打开内容页地址 4.4 获…...
.DS_store文件
感觉mac里的这个.DS_store文件烦人,老是莫名其妙的出现,然后造成困扰 处理方式如下: 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),即数据的数据。它以一种形式附着在代码中,但是对代码的运行不产生直接效果。注解可以用于创建文档、追踪代码依赖性、甚至执行编译期版错误检查等…...
二维矩阵乘法案例
二维矩阵相乘计算原理:第一个矩阵的每一行分别与第二个矩阵的每一列做向量点乘,将所得结果填入新矩阵相应的位置。 例如,给定矩阵 A [ [1, 2 ], [3, 4] ]和 B [ [5, 6 ], [7, 8] ],它们的乘积AB分别为: AB[ 0 ] [ 0…...
selenium安装出错
selenium安装步骤(法1): 安装失败法1 第一次实验,失败 又试了一次,失败 安装法2-失败: 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接口的时候,发现model里面的参数查询出来之后,怎么改都不生效,也是自己不熟悉钻牛角尖了。 车祸现场 例如下面的代码使用model处理预处理 // SPUpublic function getSpuAttr($value, $data){$…...
AGI技术与原理浅析:曙光还是迷失?
前言:回顾以往博客文章,最近一次更新在2020-07,内容以机器学习、深度学习、CV、Slam为主,顺带夹杂个人感悟。笔者并非算法科班出身,本科学制药、研究生学金融,最原始的算法积累都来源于网络,当时…...
探秘机器学习经典:K-近邻算法(KNN)全解析
在浩瀚的机器学习宇宙中,K-近邻算法(K-Nearest Neighbors,简称KNN)如同一颗璀璨的明星,以其简洁直观的原理和广泛的应用范围,赢得了众多数据科学家的喜爱。今天,让我们一起揭开KNN的神秘面纱,深入探讨它的运作机制、优缺点、应用场景,以及如何在实际项目中灵活运用。 …...
数据可视化每周挑战——全国星巴克门店数据可视化
这是我国星巴克门店的位置,营业时间等数据。 1.导入需要用的库,同时设置绘图时用到的字体,同时防止绘图时负号无法正常显示的情况。 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([属性"属性值"])...
申请轻纺行业工程设计资乙级对企业有什么要求
注册资金:企业的注册资金应至少达到三百万,这是衡量企业经济实力和承担风险能力的重要指标。独立法人资格:企业应具备独立的法人资格,能够独立承担民事责任,并具备相应的经营自主权。专业技术人员配备:企业…...
基于单片机电梯控制系统设计与实现
摘 要: 介绍了电梯控制系统架构 , 指出了该系统的硬件设计和控制系统的软件设计以及系统调试 , 使系统可根据按键 要求完成载客任务,为电梯控制系统的优化提供了参考 。 关键词 : 电梯控制 ; 单片机 ; 系统设计 0 引言 在高层建筑中发挥…...
嵌入式单片机笔试题
DC-DC 和 LDO两者有何区别? DC-DC转换器(直流-直流转换器)和LDO(低压差线性稳压器)都是用于电源管理的设备,但它们在原理和特性上有一些显著的区别: 原理: DC-DC转换器通过改变输…...
生活小区火灾预警新篇章:泵吸式可燃气体报警器的检定与运用
在现代化的生活小区中,燃气设备广泛应用于居民的日常生活之中,但同时也带来了潜在的火灾风险。 可燃气体报警器作为一种安全监测设备,能够及时检测到燃气泄漏等安全隐患,并在达到预设的阈值时发出警报,提醒居民采取相…...
263 基于matlab得到的频分复用(FDM,Frequency Division Multiplexing)实现
基于matlab得到的频分复用(FDM,Frequency Division Multiplexing)实现,仿真时录入三路声音信号进行处理,将用于传输信道的总带宽划分成三个子频带,经过复用以后再将录入的声音信号恢复出来。程序已调通,可直接运行。 2…...
使用v-model完成数据的双向绑定
创作灵感 面试问道了,没答出来,呜呜呜~ v-model实现双向绑定的原理 首先我们要知道,v-model实现的双向绑定其实只是props与emit的简化版本。其中,props负责父组件向子组件传递值,emit负责子组件向父组件传递值。 在…...
如何使用Android NDK将头像变成“遗像”
看完本文的标题,可能有人要打我。你说黑白的老照片不好吗?非要说什么遗像,我现在就把你变成遗像!好了,言归正传。我想大部分人都用过美颜相机或者剪映等软件吧,它们的滤镜功能是如何实现的,有人…...
python判断字符串是否为回文串的详细解析与实现
新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、引言:回文串的定义与背景 二、判断回文串的基本思路 示例解析 三、代码实…...
阿里云ACP云计算备考笔记 (5)——弹性伸缩
目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...
Java 8 Stream API 入门到实践详解
一、告别 for 循环! 传统痛点: Java 8 之前,集合操作离不开冗长的 for 循环和匿名类。例如,过滤列表中的偶数: List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...
Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...
视频字幕质量评估的大规模细粒度基准
大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...
IT供电系统绝缘监测及故障定位解决方案
随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...
无人机侦测与反制技术的进展与应用
国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机(无人驾驶飞行器,UAV)技术的快速发展,其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统,无人机的“黑飞”&…...
探索Selenium:自动化测试的神奇钥匙
目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...
前端开发者常用网站
Can I use网站:一个查询网页技术兼容性的网站 一个查询网页技术兼容性的网站Can I use:Can I use... Support tables for HTML5, CSS3, etc (查询浏览器对HTML5的支持情况) 权威网站:MDN JavaScript权威网站:JavaScript | MDN...
深入理解 C++ 左值右值、std::move 与函数重载中的参数传递
在 C 编程中,左值和右值的概念以及std::move的使用,常常让开发者感到困惑。特别是在函数重载场景下,如何合理利用这些特性来优化代码性能、确保语义正确,更是一个值得深入探讨的话题。 在开始之前,先提出几个问题&…...
【Linux】使用1Panel 面板让服务器定时自动执行任务
服务器就是一台24小时开机的主机,相比自己家中不定时开关机的主机更适合完成定时任务,例如下载资源、备份上传,或者登录某个网站执行一些操作,只需要编写 脚本,然后让服务器定时来执行这个脚本就可以。 有很多方法实现…...
