Python爬虫-视频爬取示例

本文介绍了一款使用Python编写的爆米花搞笑视频下载器。该程序通过selenium模拟浏览器行为并配合多线程技术实现高效下载。针对视频资源URL动态加载的问题,通过等待广告播放结束后获取视频链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

爆米花视屏下载

代码

python
import requests
import re
import time
from selenium import webdriver
import threading
import os
import pyqt5


def getUrl():
    url = "https://www.baomihua.com/funny"

    payload = ""
    headers = {
        'cache-control': "no-cache",
        'Postman-Token': "d004742c-c7a1-48c4-b770-74d6dc7bab79"
    }

    response = requests.request("GET", url, data=payload, headers=headers)
    urs=re.findall(r"//video.*?\d\d\d\d\d\d\d\d",str(response.content))
    urls=[]
    for ur in urs:
        if "http:"+ur not in urls:
            urls.append("http:"+ur)
    return urls

def moreThreadDownload(urls):
    ts=[]
    for url,i in zip(urls,range(len(urls))):
        while i%5==0 and i!=0:
            n=0
            for m in range(5):
                n=m
                if ts[m].isAlive():
                    n-=1
                    break
            if n==4:
                ts=[]
                break
        t=threading.Thread(target=download,args=[url,i+1])
        t.start()
        ts.append(t)



def download(url,i):

    option = webdriver.ChromeOptions()
    option.add_argument("headless")
    browser = webdriver.Chrome(chrome_options=option)

    browser.get(url)
    browser.implicitly_wait(50)
    time.sleep(10)
    print("正在下载。。。。。{0}".format(str(i)))
    mp4_urls=re.findall(r"aliyun.*?mp4",browser.page_source)
    browser.quit()
    mp4=[]
    for mp4_url in mp4_urls:
        if "http://"+mp4_url not in mp4:
            mp4.append("http://"+mp4_url)
    try:

        file_path="baomihua"
        if os.path.exists(file_path) is not True:
            os.makedirs(file_path)
        file=open(file_path+"/"+str(i)+".mp4","wb")
        file.write(requests.get(mp4[0]).content)
        print("下载完成。。。。。{0}".format(str(i)))
    except:
        print("下载出错。。。。。{0}".format(str(i)))


if __name__=="__main__":
    urls=getUrl()
    moreThreadDownload(urls)

程序思路

分析网页

爆米花搞笑视频

下载爆米花搞笑类别的视屏,看见有一些视频被列出,然后想办法获得这些视屏跳转链接,获得这些跳转链接后,分别获取其中的视屏资源地址。

坑:

  • 视频资源url是js动态加载的,并不能直接获取
    • pip install selenium
    • 下载一个 浏览器引擎(chromedriver)
    • 将chromedriver放在与.py文件同一目录下(若编译,则需将其与编译后的.exe文件放在同一目录下)
  • 利用chromedriver访问网页依旧无视频url
    • 因为网页中的视屏播放是要放广告的只有广告放完才执行js,视屏url才会被加载,所以需要等待广告结束(大约十秒钟)
  • 爬取速度过慢
    • 因为用到浏览器引擎,需要对网页进行渲染,然后爬取渲染后的页面,所以所需要的时间自然较长,所以采用多线程下载
好的,我可以为您介绍一下如何使用 Python 爬虫爬取房产数据并保存到本地。 首先,您需要选择一个合适的网站来进行爬取。例如,可以选择链家网、安居客等房产网站。然后,您需要分析该网站的页面结构和数据请求方式,确定需要爬取哪些数据,以及如何获取这些数据。 接着,您可以使用 Python 的 requests 库来发送 HTTP 请求,获取网页内容。然后,可以使用 BeautifulSoup 库来解析网页内容,提取需要的数据。 最后,您可以使用 Python 的 Pandas 库将数据保存到本地的 Excel 或 CSV 文件中。以下是一个示例代码: ```python import requests from bs4 import BeautifulSoup import pandas as pd # 发送 HTTP 请求获取网页内容 url = 'https://bj.lianjia.com/ershoufang/' headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} response = requests.get(url, headers=headers) soup = BeautifulSoup(response.content, 'html.parser') # 解析网页内容,提取需要的数据 house_list = soup.find_all('div', {'class': 'info'}) data = [] for house in house_list: name = house.find('div', {'class': 'title'}).text.strip() price = house.find('div', {'class': 'price'}).text.strip() area = house.find('div', {'class': 'houseInfo'}).text.strip() data.append([name, price, area]) # 将数据保存到本地文件 df = pd.DataFrame(data, columns=['名称', '价格', '面积']) df.to_excel('house_data.xlsx', index=False) ``` 这是一个简单的示例代码,您可以根据您需要爬取的数据和网站的不同来进行修改和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值