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

批量抓取某电影网站的下载链接

思路:

  1. 进入电影天堂首页,提取到主页面中的每一个电影的背后的那个urL地址
    a. 拿到“2024必看热片”那一块的HTML代码
    b. 从刚才拿到的HTML代码中提取到href的值
  2. 访问子页面,提取到电影的名称以及下载地址
    a. 拿到子页面的页面源代码
    b. 数据提取

代码实现:

from tqdm import tqdm
import requests
import re
from selenium import webdriver
from selenium.webdriver.edge.options import Optionsclass MovieScraper:"""MovieScraper类用于从网站抓取电影信息。属性----------edge_options : Options用于配置webdriver的selenium Options对象web_driver : webdriver用于与网站交互的selenium webdriverrequest_headers : dict包含请求头的字典方法-------get_response(url)向指定的URL发送GET请求并返回响应。get_movie_list_html(response)从响应中提取电影列表的HTML。get_sub_url_list(movie_list_html)从电影列表HTML中提取子URL。get_movie_info(child_response)从子URL的响应中提取电影信息。scrape(target_url)从指定的URL抓取电影信息并写入文件。"""def __init__(self):"""初始化MovieScraper,配置webdriver和请求头。"""self.edge_options = Options()self.edge_options.add_argument("headless")self.web_driver = webdriver.Edge(options=self.edge_options)self.request_headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"}def get_response(self, url):"""向指定的URL发送GET请求并返回响应。参数----------url : str要发送请求的URL。返回-------response : ResponseGET请求的响应。"""response = requests.get(url, headers=self.request_headers)response.encoding = "gbk"return responsedef get_movie_list_html(self, response):"""从响应中提取电影列表的HTML。参数----------response : Response要提取HTML的响应。返回-------movie_list_html : str电影列表的HTML。"""movie_list_pattern = re.compile(r'2024必看热片.*?<ul>(?P<html>.*?)</ul>', re.S)movie_list_result = movie_list_pattern.search(response.text)return movie_list_result.group("html")def get_sub_url_list(self, movie_list_html):"""从电影列表HTML中提取子URL。参数----------movie_list_html : str电影列表的HTML。返回-------sub_url_list : iterator子URL的迭代器。"""sub_url_pattern = re.compile(r"<li><a href='(?P<sub_url>.*?)'", re.S)return sub_url_pattern.finditer(movie_list_html)def get_movie_info(self, child_response):"""从子URL的响应中提取电影信息。参数----------child_response : Response要提取电影信息的响应。返回-------movie_info_result : Match包含电影信息的匹配对象。"""movie_info_pattern = re.compile(r'◎片  名 (?P<movie>.*?)<br.*?<td style="WORD-WRAP: break-word" bgcolor="#fdfddf"><a href="(?P<download>.*?)"', re.S)return movie_info_pattern.search(child_response.text)def scrape(self, target_url):"""从指定的URL抓取电影信息并写入文件。参数----------target_url : str要抓取电影信息的URL。"""self.web_driver.get(target_url)response = self.get_response(target_url)movie_list_html = self.get_movie_list_html(response)sub_url_list = self.get_sub_url_list(movie_list_html)with open("电影天堂.txt", "w", encoding="utf-8") as file:for sub_url in tqdm(sub_url_list, desc="处理URL中", unit="URL"):child_url = target_url + sub_url.group("sub_url")child_response = self.get_response(child_url)movie_info_result = self.get_movie_info(child_response)download_link = movie_info_result.group("download")file.write(download_link + "\n")self.web_driver.quit()print("爬取完毕")if __name__ == "__main__":scraper = MovieScraper()scraper.scrape("https://www.dy2018.com/")

效果:

在这里插入图片描述

相关文章:

批量抓取某电影网站的下载链接

思路&#xff1a; 进入电影天堂首页&#xff0c;提取到主页面中的每一个电影的背后的那个urL地址 a. 拿到“2024必看热片”那一块的HTML代码 b. 从刚才拿到的HTML代码中提取到href的值访问子页面&#xff0c;提取到电影的名称以及下载地址 a. 拿到子页面的页面源代码 b. 数据提…...

2024-05-06 问AI: 介绍一下深度学习中的LSTM网络

文心一言 当谈到深度学习中的LSTM&#xff08;Long Short-Term Memory&#xff09;网络时&#xff0c;它是一种特殊的循环神经网络&#xff08;RNN&#xff09;架构&#xff0c;旨在解决传统RNN在处理长序列时遇到的梯度消失和梯度爆炸问题。LSTM网络因其能够捕捉序列数据中的…...

二、Redis五种常用数据类型-String

1、用途 简单的K-V缓存计数器分布式锁session共享分布式ID生成(自增) 2、底层实现结构 Redis底层是c语言实现的&#xff0c;但是并没有使用c的string来表示字符串&#xff0c;而是使用自己的简单动态字符串的抽象类型(simple dynamic string,SDS)。 SDS结构&#xff1a; st…...

echarts柱状图实现左右横向对比

实现效果如上图 其实是两组数据&#xff0c;其中一组数据改为负数&#xff0c;然后 在展示的时候&#xff0c;在将负数取反 第一处修改坐标轴 xAxis: [{type: value,axisLabel: {formatter: function (value) {if (value < 0) {return -value;}else{return value;}}}}], 第…...

脸爱云一脸通智慧管理平台 SystemMng 管理用户信息泄露漏洞(XVE-2024-9382)

0x01 产品简介 脸爱云一脸通智慧管理平台是一套功能强大,运行稳定,操作简单方便,用户界面美观,轻松统计数据的一脸通系统。无需安装,只需在后台配置即可在浏览器登录。 功能包括:系统管理中心、人员信息管理中心、设备管理中心、消费管理子系统、订餐管理子系统、水控管…...

spring笔记2

一、基于xml的AOP实现 基于注解管理Bean&#xff0c;注解扫描 <context:component-scan base-package"com.zhou.spring.aop.xml"></context:component-scan><aop:config> <!-- 设置一个公共的切入点表达式--><aop:pointcut id&q…...

【挑战30天首通《谷粒商城》】-【第一天】02、简介-项目整体效果展示

文章目录 课程介绍 ( 本章了解即可&#xff0c;可以略过)一、 分布式基础 (全栈开发篇) (初中级)二、 分布式高级 (微服务架构篇) ( 高级)三、高可用集群 (架构师提升篇)( 架构 ) one more thing 课程介绍 ( 本章了解即可&#xff0c;可以略过) 1.分布式基础(全栈开发篇)2.分布…...

Kafka 生产者应用解析

目录 1、生产者消息发送流程 1.1、发送原理 2、异步发送 API 2.1、普通异步发送 2.2、带回调函数的异步发送 3、同步发送 API 4、生产者分区 4.1、分区的优势 4.2、生产者发送消息的分区策略 示例1&#xff1a;将数据发往指定 partition 示例2&#xff1a;有 key 的…...

GEE错误——image.reduceRegion is not a function

简介 image.reduceRegion is not a function 这里的主要问题是我们进行地统计分析的时候&#xff0c;我们的作用对象必须是单景影像&#xff0c;而不是影像集合 错误"image.reduceRegion is not a function" 表示你正在尝试使用reduceRegion()函数来处理图像数据&…...

rk356x 关于yocto编译linux及bitbake实用方法

Yocto 完整编译 source oe-init-build-envbitbake core-image-minimalYocto 查询包名 bitbake -s | grep XXX // 获取rockchip相关包 :~/rk3568/yocto$ bitbake -s | grep rockchip android-tools-conf-rockchip :1.0-r0 gstreamer1.0-rockchip …...

Chrome您的连接不是私密连接 |输入“thisisunsafe”命令绕过警告or添加启动参数

一、输入 thisisunsafe 在当前页面用键盘输入 thisisunsafe &#xff0c;不是在地址栏输入(切记)&#xff0c;就直接敲键盘就行了 因为Chrome不信任这些自签名ssl证书&#xff0c;为了安全起见&#xff0c;直接禁止访问了&#xff0c;thisisunsafe 这个命令&#xff0c;说明你…...

牛客面试前端1

HTML语义化 是什么 前端语义化是指在构建网页时多使用html语义化标签布局&#xff0c;多使用带有语义的标签如header&#xff0c;aside&#xff0c;footer等标签为什么 结构清晰利于开发者开发与维护 有利于seo搜索引擎优化 有利于在网络卡顿时&#xff0c;正常显示页面结构&a…...

Linux的软件包管理器-yum

文章目录 软件包的概念yum源的配置的原因yum的使用查看软件包安装软件卸载软件 软件包的概念 软件包(SoftWare Package)是指具有特定的功能&#xff0c;用来完成特定任务的一个程序或一组程序。可分为应用软件包和系统软件包两大类 在Linux系统中&#xff0c;下载安装软件的方式…...

选择排序(Selection Sort)

选择排序(Selection Sort)是一种简单直观的排序算法。它的工作原理如下: 遍历数组:从待排序的数列中,找到当前未排序部分(即整个数组或已排序部分之后的部分)中的最小(或最大,取决于排序方式)元素。 交换位置:将找到的最小元素与未排序部分的第一个元素交换位置,这…...

网络面试题目

1、BGP报文有哪些? 有5种报文,Open、 Update、 Notification、 Keepalive和 Route-refresh等5种报文类型。 2、Vxlan了解多少? VLAN作为传统的网络隔离技术,VXLAN完美地弥补了VLAN的上述不足。 VXLAN(Virtual eXtensible Local Area Network,虚拟扩展局域网),(VXL…...

Web,Sip,Rtsp,Rtmp,WebRtc,专业MCU融屏视频混流会议直播方案分析

随着万物互联&#xff0c;视频会议直播互动深入业务各方面&#xff0c;主流SFU并不适合管理&#xff0c;很多业务需要各种监控终端&#xff0c;互动SIP硬件设备&#xff0c;Web在线业务平台能相互融合&#xff0c;互联互通&#xff0c; 视频混流直播&#xff0c;录存直播推广&a…...

Unreal 编辑器工具 批量重命名资源

右键 - Editor Utilities - Editor Utility Blueprint&#xff0c;基类选择 Asset Action Utility 在类默认值内&#xff0c;可以添加筛选器&#xff0c;筛选指定的类型 然后新建一个函数&#xff0c;加上4个输入&#xff1a;ReplaceFrom&#xff0c;ReplaceTo&#xff0c;Add…...

Voice Conversion、DreamScene、X-SLAM、Panoptic-SLAM、DiffMap、TinySeg

本文首发于公众号&#xff1a;机器感知 Voice Conversion、DreamScene、X-SLAM、Panoptic-SLAM、DiffMap、TinySeg Converting Anyones Voice: End-to-End Expressive Voice Conversion with a Conditional Diffusion Model Expressive voice conversion (VC) conducts speak…...

短信群发平台分析短信群发的未来发展趋势

短信群发平台在当前的移动互联网时代已经展现出了其独特的价值和广泛的应用场景。随着技术的不断进步和市场的不断变化&#xff0c;短信群发的未来发展趋势也将呈现出一些新的特点。 首先&#xff0c;随着5G网络的推广和普及&#xff0c;短信群发的速度和稳定性将得到进一步提…...

supervisord 使用指南

supervisord 使用指南 supervisord的安装 supervisor是一系列python脚本文件&#xff0c;以python package的形式管理&#xff0c;可以用于UNIX类系统的进程管理。 安装supervisor也相当简单&#xff0c;只需要用pip安装即可。 sudo pip install supervisor但是有可能将其安…...

LyricsX:如何在macOS上实现智能歌词同步的完整解决方案

LyricsX&#xff1a;如何在macOS上实现智能歌词同步的完整解决方案 【免费下载链接】LyricsX &#x1f3b6; Ultimate lyrics app for macOS. 项目地址: https://gitcode.com/gh_mirrors/ly/LyricsX 作为macOS用户&#xff0c;你是否曾为音乐播放器缺乏歌词功能而烦恼&a…...

在C的基础上入门C++——第一个C++程序(学习笔记+个人心得)

基础程序 #include <iostream> using namespace std;int main() {cout << "hello world" << endl;return 0; }main函数 main函数是程序的入口&#xff0c;不管有多少代码都是从main函数开始的&#xff0c;main函数也被叫做主函数&#xff0c;mai…...

基于R语言与MatchIt包实战:绘制多方法对比的标准化平均差(SMD)可视化图

1. 标准化平均差&#xff08;SMD&#xff09;是什么&#xff1f;为什么需要可视化&#xff1f; 标准化平均差&#xff08;Standardized Mean Difference, SMD&#xff09;是衡量两组间协变量差异的常用指标。简单来说&#xff0c;它告诉我们两组数据在某个特征上的差距有多大&…...

Win11系统下Anaconda3-2022.10保姆级安装与避坑指南(附不勾选PATH的详细原因)

Win11系统下Anaconda3-2022.10深度安装指南与关键配置解析 在数据科学和机器学习领域&#xff0c;Anaconda已经成为Python环境管理的标准工具之一。对于Windows 11用户来说&#xff0c;正确安装和配置Anaconda是开启数据分析之旅的第一步。本文将深入探讨Anaconda3-2022.10版本…...

AI代理如何通过MCP协议安全自动化DeFi期权价差交易

1. 项目概述&#xff1a;为AI交易员打造的DeFi期权交易接口如果你正在探索如何让AI智能体&#xff08;比如OpenClaw或Bankr&#xff09;在Base链上的Callput协议进行自动化期权交易&#xff0c;那么你很可能已经发现&#xff0c;现有的工具要么过于复杂&#xff0c;要么需要大量…...

FreeMove:Windows系统磁盘空间智能优化解决方案

FreeMove&#xff1a;Windows系统磁盘空间智能优化解决方案 【免费下载链接】FreeMove Move directories without breaking shortcuts or installations 项目地址: https://gitcode.com/gh_mirrors/fr/FreeMove 当C盘空间告急时&#xff0c;大多数Windows用户面临着一个…...

嘉兴看牙哪家靠谱?2026年本地6家口腔机构实测排行榜(纯生活体验版)

问这个问题的人&#xff0c;多半是被坑过、排过队、或者被推销烦过。作为一个在嘉兴生活了快十年的普通市民&#xff0c;补牙、洗牙、带孩子看牙都经历过&#xff0c;我也踩过不少坑。这次花了两周时间&#xff0c;跑了南湖、秀洲、平湖几家口碑还行的口腔机构&#xff0c;纯从…...

从接入到稳定运行Taotoken在延迟与容灾方面的实际体验

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 从接入到稳定运行&#xff1a;Taotoken在延迟与容灾方面的实际体验 对于将大模型能力集成到生产系统的开发者而言&#xff0c;服务…...

发音人「像真人」之外还要看什么:稳定性与一致性

&#x1f3af; 发音人「像真人」之外还要看什么&#xff1a;稳定性与一致性在文字转语音领域&#xff0c;「像真人」往往是第一印象。然而&#xff0c;当您需要批量生成有声内容、长期使用同一音色时&#xff0c;真正决定体验的是稳定性与一致性。 顶伯文字转语音工具正是围绕这…...

基于MCP协议构建AI助手与外部应用桥接:以hikerapi-mcp为例的实战指南

1. 项目概述与核心价值最近在折腾一些自动化工作流&#xff0c;发现很多工具之间的数据流转是个大问题。比如&#xff0c;我想把某个文档里的关键信息提取出来&#xff0c;自动生成一个任务列表&#xff0c;再推送到另一个项目管理工具里。这个过程如果手动操作&#xff0c;不仅…...