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

本文详述了使用Python爬虫从多个网站抓取电影资源,并利用Django构建一个简单的Web检索系统的过程。包括选定目标、数据采集、数据库准备、Django工程创建、视图和URL配置等步骤。强调了版权意识和不要过度采集的原则。
摘要由CSDN通过智能技术生成

提醒: 本文所涉及的资源均采集自互联网,只作为学习使用,切勿用于盈利,支持正版,如有侵权,即刻删除。由于过长的篇幅影响观感,文中完整代码和涉及到的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 {} DEFAULT
                                CHARACTER 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):
  		pass
  
   def select(self,table,data_list):
  		pass

采集链接准备

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

class MovieSpider(SpiderBase):
	
    def __init__(self):
        super().__init__()
        #关键字url
        self.search_url = "https://xx.com/?s={}"
        #此网站域名
        self.base_url = "https://xx.com/"
        #cookie
        self.cookie = "PHPSESSID=xxx; wp_xh_session_xxx=a0174a03b718aea56c2e4e3979022b82%7C%7C1592400715%7C%7C1592397115%7C%7Cfb11ea82c76cfb9d5fa390xxa"
        #第几页url
        self.dy_url = "https://xx.com/dy/page/{
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值