Python爬取糗事百科视频

一、题目要求:爬取糗事百科上的视频并下载到本地磁盘

二、代码

1、使用正则表达式清洗数据

 

import requests
import re

headers = headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36'}#伪装成浏览器正常访问浏览器,创建头部信息
def mes(page):
    list1=[]
    for i in range(1,page+1):
        url = 'https://www.qiushibaike.com/video/page/{}/'.format(i)  # 爬取多页。
        #print(url)
        resp = requests.get(url,headers=headers)
        #print( resp )得到一个响应状态吗。200表示成功然后418表示反爬
        #print( resp.request.headers )这里就是为神魔需要伪装成浏览器
        #print(resp.text)返回内容
        info = re.findall(r'<source src="(.*)" type=\'video/mp4\' />',resp.text)#参数:查找的规则,数据
        list1.append(info)
        #print(type(info))提取出来的数据是一个列表
    lst=[]  #用于存储拼接后的url
    for item in list1:
        mes=item
        #print(mes)
        for i in mes:
            lst.append('https:'+i)
    dan(lst)
    #print(lst)#进行输出查看
def dan(lst):
    print(lst)
    count=0
    for item in lst:
        resp=requests.get(item,headers=headers)
        count+=1
        #上下文管理(视频保存到哪里)第一个参数为位置第二个参数为打开方式,str的作用是类型转换
        with open('video/'+str(count)+'.mp4','wb') as file:
            #写入到本地磁盘
            file.write(resp.content) #content说明的是二进制的而text是文本

if __name__ == '__main__':
    if mes(2):
        print("视频下载完毕")
video.py

 

2、使用BeautifulSoup清洗数据

import requests
from bs4 import BeautifulSoup #用于解析和提取网页数据的

headers = headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36'}#伪装成浏览器正常访问浏览器,创建头部信息
def mes(page):
    list1=[]
    for i in range(1,page+1):
        url = 'https://www.qiushibaike.com/video/page/{}/'.format(i)  # 爬取多页。
        #print(url)
        resp = requests.get(url,headers=headers)
        bs = BeautifulSoup(resp.text, 'html.parser')  # 得到Bea--的对象了
        info = bs.find_all('div', class_='article block untagged mb15 typs_recent')
        info1 = bs.find_all('div', class_='article block untagged mb15 typs_hot')
        for i in info:
            m = i.find('source')['src']
            #print(m)
            list1.append(m)
        for i in info1:
            m = i.find('source')['src']
            list1.append(m)
    #print(list1)
    lst=[]  #用于存储拼接后的url
    for item in list1:
        lst.append('https:'+item)
    dan(lst)
    #print(lst)#进行输出查看
def dan(lst):
    print(lst)
    count=0
    for item in lst:
        resp=requests.get(item,headers=headers)
        count+=1
        #上下文管理(视频保存到哪里)第一个参数为位置第二个参数为打开方式,str的作用是类型转换
        with open('video/'+str(count)+'.mp4','wb') as file:
            #写入到本地磁盘
            file.write(resp.content) #content说明的是二进制的而text是文本

if __name__ == '__main__':
    if mes(2):
        print("视频下载完毕")
video.py

 

 

三、结果

 

posted @ 2020-08-07 11:54  MoooJL  阅读(258)  评论(0编辑  收藏  举报