趣味学python(023)

百思不得其解——视频爬取

今天,小编学习了关于 百四不得其解 视频得爬取,该网站并没有采取Ajax请求或者 一些其他得 关于请求参数 加密得方法,所以是很好进行爬取得。

网址如下:
http://www.budejie.com/

在这里插入图片描述
打开 浏览器 得开发者工具,查看网页源代码,再对相应得 html进行分析,分析网址 所在。

本次,小编采用得是 正则表达式re,python中提供关于 正则 得入口。
首先,模块导入

import requests
# 正则表达式
import re
# 下载视频的工具包
import urllib.request

下面定义一个全局变量 用来存储 爬取后得 视频标题及 视频得连接。方便以后 进行索引。

'''
声明全局变量 除了视频资源后还有其他的数据,
选哟筛选数据,将筛选后的数据存储到全局变量中
'''

url_name = []

下面,获取数据:

def get_url():
    url = 'http://www.budejie.com/'

    # 利用requests请求数据
    html = requests.get(url).text
    # print(html)

    # 数据筛选
    url_content = re.compile(r'<div class="j-r-list-c">.*?</div>.*?/div>', re.S)
    url_contents = re.findall(url_content, html)
    for i in url_contents:
        # 进一步提取数据,包括 视频标题 和视频连接
        url_reg = r'data-original="(.*?)"'
        url_items = re.findall(url_reg, i)
        # print(url_items)
        # 提取视频标题
        if url_items:
            name_reg = re.compile(r'a href="/detail-\d{8}\.html">(.*?)</a>')
            name_items = re.findall(name_reg, i)

            for a, b in zip(name_items, url_items):
                url_name.append([a,b])
        else:
            pass

下面开始 进行下载 视频,并以 视频内容作为标题进行命名:
(当然也可以 用MD5加密,对视频得内容进行 定长输出)

def download():
    # 异常
    for i in url_name:
        print(i[0], end='')
        print(i[1])
        try:
            urllib.request.urlretrieve(i[1], './视频/%s.gif' % (i[0]))

        except Exception as e:
            print(e)
            print("下载异常!!!")
            pass

在这里插入图片描述
下面 是关于 MD5加密:

import hashlib

md5 = hashlib.md5()
md5.update('how to use md5 in python hashlib?')
print md5.hexdigest()
计算结果如下:

d26a53750bc40b38b65a520292f69306

对于中文格式得要进行 encode操作。

下面 是小编 修改后:

 urllib.request.urlretrieve(i[1], './视频/%s.gif' %
                                       (hashlib.md5(i[0].encode(encoding='UTF-8')).hexdigest()))

如图:
在这里插入图片描述

看上去 效果不太好😅😅😅😅😅😅😅
感觉还是 用中文命名方便

下面就是爬取得过程了:

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值