基于Python爬取爱奇艺资源过程解析


Posted in Python onMarch 02, 2020

像iqiyi这种视频网站,现在下载视频都需要下载相应的客户端。那么如何不用下载客户端,直接下载非vip视频?

选择你想要爬取的内容

该安装的程序以及运行环境都配置好

下面这段代码就是我在爱奇艺里搜素“英文名”,然后出来的视频,共有20页,那么我们便从第一页开始,解析网页,然后分析

分析每一页网址,找出规律就可以直接得到所有页面

然后根据每一个视频的URL的标签,如'class' 'div' 'href'......通过bs4库进行爬取

而其他的信息则是直接循环所爬取到的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的方法,因为在我爬取的过程中我发现,有的视频的上传作者在视频左下方,有的在视频的右下方,有的视频干脆没有上传作者。

同样的,你想要爬取其他内容也可以用这种方法获取URL和他的其他信息

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Flask框架学习笔记(一)安装篇(windows安装与centos安装)
Jun 25 Python
小结Python用fork来创建子进程注意事项
Jul 03 Python
Python插件virtualenv搭建虚拟环境
Nov 20 Python
对python numpy.array插入一行或一列的方法详解
Jan 29 Python
Python read函数按字节(字符)读取文件的实现
Jul 03 Python
python下PyGame的下载与安装过程及遇到问题
Aug 04 Python
Python队列、进程间通信、线程案例
Oct 25 Python
python实现指定ip端口扫描方式
Dec 17 Python
Python安装第三方库攻略(pip和Anaconda)
Oct 15 Python
python3.9实现pyinstaller打包python文件成exe
Dec 13 Python
python实现过滤敏感词
May 08 Python
PYTHON基于Pyecharts绘制常见的直角坐标系图表
Apr 28 Python
python GUI库图形界面开发之PyQt5树形结构控件QTreeWidget详细使用方法与实例
Mar 02 #Python
Python处理mysql特殊字符的问题
Mar 02 #Python
新手入门学习python Numpy基础操作
Mar 02 #Python
python中数据库like模糊查询方式
Mar 02 #Python
python读取文件指定行内容实例讲解
Mar 02 #Python
python GUI库图形界面开发之PyQt5选项卡控件QTabWidget详细使用方法与实例
Mar 01 #Python
python判断两个序列的成员是否一样的实例代码
Mar 01 #Python
You might like
让PHP支持页面回退的两种方法[转]
2007/02/14 PHP
php用正则表达式匹配URL的简单方法
2013/11/12 PHP
PHP下载远程文件到本地存储的方法
2015/03/24 PHP
php的常量和变量实例详解
2017/06/27 PHP
JavaScript CSS修改学习第六章 拖拽
2010/02/19 Javascript
javascript 判断数组是否已包含了某个元素的函数
2010/05/30 Javascript
js showModalDialog 弹出对话框的简单实例(子窗体)
2014/01/07 Javascript
jQuery DOM操作实例
2014/03/05 Javascript
javascript中的nextSibling使用陷(da)阱(keng)
2014/05/05 Javascript
AngularJS实现表单验证
2015/01/28 Javascript
javascript跑马灯抽奖实例讲解
2020/04/17 Javascript
JavaScript函数基础详解
2017/02/03 Javascript
前端页面文件拖拽上传模块js代码示例
2017/05/19 Javascript
js随机生成一个验证码
2017/06/01 Javascript
深入理解ES7的async/await的用法
2017/09/09 Javascript
vue项目刷新当前页面的三种方法
2018/12/04 Javascript
使用webpack搭建vue环境的教程详解
2019/12/31 Javascript
在Python中使用AOP实现Redis缓存示例
2017/07/11 Python
Python SQLite3简介
2018/02/22 Python
python 获取文件下所有文件或目录os.walk()的实例
2018/04/23 Python
python调用函数、类和文件操作简单实例总结
2019/11/29 Python
使用PyTorch将文件夹下的图片分为训练集和验证集实例
2020/01/08 Python
使用HTML5在网页中嵌入音频和视频播放的基本方法
2016/02/22 HTML / CSS
BrandAlley英国:法国折扣奢侈品网上零售商
2017/07/03 全球购物
到底Java是如何传递参数的?是by value或by reference?
2012/07/13 面试题
联强国际笔试题面试题
2013/07/10 面试题
TCP/IP中的TCP和IP分别承担什么责任
2012/04/21 面试题
甜品店的创业计划书范文
2014/01/02 职场文书
个人简历中自我评价
2014/02/11 职场文书
领导干部贪图享乐整改措施
2014/09/21 职场文书
简单的辞职信范文(2016最新版)
2015/05/12 职场文书
幼儿园小班开学寄语
2015/05/27 职场文书
职场新人知识:如何制定一份合理的工作计划?
2019/09/11 职场文书
C站最全Python标准库总结,你想要的都在这里
2021/07/03 Python
SQL Server实现分页方法介绍
2022/03/16 SQL Server
Apache自带的ab压力测试工具的实现
2022/07/23 Servers