爬虫学习(3):搭建自己的电影资源网(保姆式教学)

2023-11-22 23:31

本文主要是介绍爬虫学习(3):搭建自己的电影资源网(保姆式教学),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

提醒: 本文所涉及的资源均采集自互联网,只作为学习使用,切勿用于盈利,支持正版,如有侵权,即刻删除。由于过长的篇幅影响观感,文中完整代码和涉及到的url可在从今天开始种树个人博客中查看,同时建议采集过程不要影响网站正常运行。

背景

随着版权意识的增强,以前在网上“广为流传”的资源版权均已被几大视频网站购买,有些时候不得不去开所有网站的会员才得以一睹芳容,甚至有些冷门和年代较老的电影还没有。想看还得靠双手来采。由于某些原因(自己体会),本文中不会出现这些网站的网址,如想完整了解学习,请移步从今天开始种树(都是小网站,估计只有一台服务器,尽量不要使用多线程采集,大家都是学习用途,多睡眠一会,不要影响网站正常运行,这是基本素养)。

最终效果

实现了简单的web与查询功能:
在这里插入图片描述
在这里插入图片描述

思路与流程

流程如图
总体流程与涉及技术如上所示,选定的几个网站采集都很简单,属于baby级,主要还是找到这些网站。

选定目标

经过四处搜索,发现有几个网站资源均已某度网盘形式保存,故选定了这几家网站。有一个网站是以公众号回复方式跳转的,需要安装Fiddler来获取请求链接。

网站1

首页
布局为一页16部电影,跳转下一页方式也很简单:

https://XX.com/dy/page/2 #第2页
https://XX.com/dy/page/3 #第3页

元素审查中也能看到每部电影的链接,链接规律,只需使用正则表达式即可把12个链接提取出来,直接跳转相应页面:
在这里插入图片描述
到电影页面网盘链接与提取码也一目了然,直接正则获取:在这里插入图片描述
网站1框架大致如此,所需信息提取都极为简单。

网站2

网站2难度稍微比网站1大了一点点,通过公众号回复获取链接:
在这里插入图片描述
跳转后:
在这里插入图片描述
通过Fiddler查看返回的请求,发现每部电影跳转链接都很规律,获取a标签href的值加上域名即可跳转,与上个网站一样,正则表达式提取:

在这里插入图片描述

域名/bdy/1414.html #生化危机的跳转链接

跳转后也可用正则表达式直接提取盘url和提取码:
在这里插入图片描述

采集

两个网站采集工作都相对简单,不过为了扩展性,在编写代码时两个网站都继承自一个父类,有些通用的方法可先定义好,这样在后续可以减少重复代码,本文已网站1为例。

准备数据库

为了便于后续存储操作,这里定义了一个类用于数据库操作(篇幅有限,就不贴所有代码了,无关紧要的均已pass代替)

class MySql(BaseABC):def __init__(self, **kwargs):#数据库连接信息pass#链接数据库def connect(self,**kwargs):if kwargs:self.conn = pymysql.connect(**kwargs)self.cursor = self.conn.cursor()else:self.conn = pymysql.connect(**self.setting.MYSQL)self.cursor = self.conn.cursor()#创建表与库def create(self, sql):try:with self.cursor as cursor:cursor.execute(sql)finally:self.close()def create_db(self, db):try:create_database = """CREATE DATABASE IF NOT EXISTS {} DEFAULTCHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci""".format(db)self.cursor.execute(create_database)print("数据库创建完成!")except Exception as e:print("创建数据库时出现错误!",e)#创建表,一共计划提取9个字段,根据字段名字可以大概知道代表的意思def create_table(self):create_table = """CREATE TABLE IF NOT EXISTS movie (movie_name varchar(30) NOT NULL,     release_date varchar(30) NOT NULL,     movie_type varchar(30) NOT NULL,     movie_country varchar(30) NOT NULL,     movie_url varchar(200),movie_info varchar(900),pan_url varchar(200),pan_code varchar(30),crawl_time DATETIME NOT NULL,PRIMARY KEY (movie_name)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4"""self.create(create_table)print("表创建完成!")def insert(self,table,data_list):passdef select(self,table,data_list):pass

采集链接准备

接下来进入采集环节,首先准备url(url均可在从今天开始种树个人博客中查看复制):

class MovieSpider(SpiderBase):def __init__(self):super().__init__()#关键字urlself.search_url = "https://xx.com/?s={}"#此网站域名self.base_url = "https://xx.com/"#cookieself.cookie = "PHPSESSID=xxx; wp_xh_session_xxx=a0174a03b718aea56c2e4e397

这篇关于爬虫学习(3):搭建自己的电影资源网(保姆式教学)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/413717

相关文章

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

MySQL双主搭建+keepalived高可用的实现

《MySQL双主搭建+keepalived高可用的实现》本文主要介绍了MySQL双主搭建+keepalived高可用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、测试环境准备二、主从搭建1.创建复制用户2.创建复制关系3.开启复制,确认复制是否成功4.同

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

使用DeepSeek搭建个人知识库(在笔记本电脑上)

《使用DeepSeek搭建个人知识库(在笔记本电脑上)》本文介绍了如何在笔记本电脑上使用DeepSeek和开源工具搭建个人知识库,通过安装DeepSeek和RAGFlow,并使用CherryStudi... 目录部署环境软件清单安装DeepSeek安装Cherry Studio安装RAGFlow设置知识库总

Linux搭建Mysql主从同步的教程

《Linux搭建Mysql主从同步的教程》:本文主要介绍Linux搭建Mysql主从同步的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux搭建mysql主从同步1.启动mysql服务2.修改Mysql主库配置文件/etc/my.cnf3.重启主库my

国内环境搭建私有知识问答库踩坑记录(ollama+deepseek+ragflow)

《国内环境搭建私有知识问答库踩坑记录(ollama+deepseek+ragflow)》本文给大家利用deepseek模型搭建私有知识问答库的详细步骤和遇到的问题及解决办法,感兴趣的朋友一起看看吧... 目录1. 第1步大家在安装完ollama后,需要到系统环境变量中添加两个变量2. 第3步 “在cmd中

Python爬虫selenium验证之中文识别点选+图片验证码案例(最新推荐)

《Python爬虫selenium验证之中文识别点选+图片验证码案例(最新推荐)》本文介绍了如何使用Python和Selenium结合ddddocr库实现图片验证码的识别和点击功能,感兴趣的朋友一起看... 目录1.获取图片2.目标识别3.背景坐标识别3.1 ddddocr3.2 打码平台4.坐标点击5.图

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

本地搭建DeepSeek-R1、WebUI的完整过程及访问

《本地搭建DeepSeek-R1、WebUI的完整过程及访问》:本文主要介绍本地搭建DeepSeek-R1、WebUI的完整过程及访问的相关资料,DeepSeek-R1是一个开源的人工智能平台,主... 目录背景       搭建准备基础概念搭建过程访问对话测试总结背景       最近几年,人工智能技术

5分钟获取deepseek api并搭建简易问答应用

《5分钟获取deepseekapi并搭建简易问答应用》本文主要介绍了5分钟获取deepseekapi并搭建简易问答应用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需... 目录1、获取api2、获取base_url和chat_model3、配置模型参数方法一:终端中临时将加