Python爬取爱奇艺非VIP视频实战:URL解析与数据抓取

Evan
Evan
发布时间:2026-10-13| 4人浏览过
原创

本文详解如何利用Python爬取爱奇艺非VIP视频。通过构造搜索URL并分析分页规律,使用requests获取页面源码,结合BS4库解析HTML标签提取视频链接、标题及描述信息。针对作者信息位置不固定的问题,采用try-except机制进行容错处理,确保数据抓取的完整性与稳定性。

爱奇艺非VIP视频爬取背景与目标

当前主流视频平台如爱奇艺,通常要求用户下载专用客户端才能观看或下载视频。本文将探讨一种无需安装客户端即可直接获取非VIP视频资源的技术方案。

首先,明确需要爬取的目标内容范围。

环境配置与URL规律分析

确保开发环境已正确安装所需程序及运行库,完成基础配置。

以下代码展示了在爱奇艺搜索特定“英文名”关键词后的处理流程。搜索结果共20页,我们从第一页开始,对网页进行解析并深入分析其结构。

通过逐一分析每一页的网址构成,发现其链接存在固定规律,利用这一规律可以直接拼接生成所有页面的访问地址。

接着,针对每个视频详情页的URL,利用HTML标签特征(如class、div、href等属性),借助bs4库执行具体的数据爬取操作。

对于其他附加信息,则通过遍历已获取的URL列表,在每个页面中再次利用标签定位来提取所需数据。

核心代码实现:URL与基础信息抓取


import requests
import pandas as pd
from bs4 import BeautifulSoup

#爬取URL 
headers={'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Safari/537.36'}
b=[]
for i in range(1,2):
  url="https://so.iqiyi.com/so/q_英文名_ctg_t_0_page_"+str(i)+"_p_1_qc_0_rd__site__m_1_bitrate_"  #共20页,根据每页的网址变换规律进行拼接
  r=requests.get(url,headers=headers)  
  soup=BeautifulSoup(r.text,"html.parser")
  a=soup.findAll('a',{'class':'main-tit'}) 
  for i in a:
    if 'http://www.'in i.get('href')and 'html'in i.get('href'):
      b.append(i.get('href'))
print(b)


#爬取标题
e=[]
for k in b:
  res=requests.get(k,headers=headers)
  Soup=BeautifulSoup(res.text,'html.parser')
  c=Soup.findAll('div',{'class':'feed-title-box'})
  for d in c:
    e.append(d.find('h1').text) 
print(e)

#爬取标题下方描述
f=[]
for j in b:
  res=requests.get(j,headers=headers)
  Soup=BeautifulSoup(res.text,'html.parser')
  c=Soup.findAll('div',{'class':'qy-play-intro-feed'})
  for d in c:
    f.append(d.find('p',{'class':"intro-iterm__block"}).text)
print(f)


#爬取发布时间
h=[]
for j in b:
  res=requests.get(j,headers=headers)
  Soup=BeautifulSoup(res.text,'html.parser')
  c=Soup.findAll('div',{'class':'intro-iterm'})
  for d in c:
    ff=(d.find('span',{'class':"intro-iterm__txt"}))
    if ff==None:
      continue
  h.append(ff.text)
print(h)

# 爬取上传作者
m=[]
for k in b:
  res=requests.get(k,headers=headers)
  Soup=BeautifulSoup(res.text,'html.parser')
  c=Soup.find('div',{'id':'block-P'})
  d=Soup.find('div',{'class':'qy-player-maker'})
  try:
    name=c.get(':uploader').split(',')[1].split(':')[1].replace('"','')#输出是字符串的格式,所以用split切割。replace替换
  except:
    try:
      name=d.get(':uploader').split(',')[1].split(':')[1].replace('"','')
    except:
      m.append("匿名用户")
  m.append(name)
print(m)

上述代码执行后的输出结果,包含了该“英文名”相关的所有视频网址及其附带的基本信息。

异常处理:作者信息的多位置容错解析

需要特别说明的是,在爬取视频作者信息的模块中,我使用了try-except异常处理机制。这是因为在爬取过程中发现,视频上传者的显示位置并不固定:有的位于视频左下方,有的位于右下方,甚至部分视频根本没有显示上传作者信息。

方法扩展与总结

同理,若需爬取其他类型的内容,也可采用类似的URL获取与标签解析方法来提取相关信息。

以上就是本文的全部内容,希望能为各位的学习提供有益参考,也欢迎大家继续支持本站。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。