基于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 相关文章推荐
用Python代码来绘制彭罗斯点阵的教程
Apr 03 Python
Python NumPy库安装使用笔记
May 18 Python
Python 数值区间处理_对interval 库的快速入门详解
Nov 16 Python
Pycharm以root权限运行脚本的方法
Jan 19 Python
详解PyTorch中Tensor的高阶操作
Aug 18 Python
Java文件与类动手动脑实例详解
Nov 10 Python
Python学习笔记之函数的参数和返回值的使用
Nov 20 Python
python 解决tqdm模块不能单行显示的问题
Feb 19 Python
Python性能分析工具py-spy原理用法解析
Jul 27 Python
django使用graphql的实例
Sep 02 Python
SpringBoot首页设置解析(推荐)
Feb 11 Python
Python time库的时间时钟处理
May 02 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下载文件,添加响应头的简单实例
2016/09/22 PHP
js中将多个语句写成一个语句的两种方法小结
2007/12/08 Javascript
关于hashchangebroker和statehashable的补充文档
2011/08/08 Javascript
jquery入门—编写一个导航条(可伸缩)
2013/01/07 Javascript
Extjs4 Treegrid 使用心得分享(经验篇)
2013/07/01 Javascript
JQuery中基础过滤选择器用法实例分析
2015/05/18 Javascript
javascript单例模式的简单实现方法
2015/07/25 Javascript
理解JavaScript中Promise的使用
2016/01/18 Javascript
vue2.0实现分页组件的实例代码
2017/06/22 Javascript
Nodejs进阶之服务端字符编解码和乱码处理
2017/09/04 NodeJs
vue 解决路由只变化参数页面组件不更新问题
2019/11/05 Javascript
在 Vue 中编写 SVG 图标组件的方法
2020/02/24 Javascript
jQuery开发仿QQ版音乐播放器
2020/07/10 jQuery
微信小程序实现上传照片代码实例解析
2020/08/04 Javascript
pyqt4教程之widget使用示例分享
2014/03/07 Python
python输出指定月份日历的方法
2015/04/23 Python
深入解析Python中的urllib2模块
2015/11/13 Python
Python切换pip安装源的方法详解
2016/11/18 Python
python3下载抖音视频的完整代码
2019/06/05 Python
Python+OpenCV实现实时眼动追踪的示例代码
2019/11/11 Python
Python 使用 PyQt5 开发的关机小工具分享
2020/07/16 Python
python小技巧——将变量保存在本地及读取
2020/11/13 Python
localStorage的过期时间设置的方法详解
2018/11/26 HTML / CSS
TripAdvisor土耳其网站:全球知名旅行社区,真实旅客评论
2017/04/17 全球购物
Yahoo-PHP面试题4
2012/05/05 面试题
怎样在程序里获得一个空指针
2015/01/24 面试题
电钳专业个人求职信
2014/01/04 职场文书
培训主管岗位职责
2014/02/01 职场文书
《难忘的泼水节》教学反思
2014/02/27 职场文书
信访维稳承诺书
2015/05/04 职场文书
七年级作文之游记
2019/12/11 职场文书
在Python中如何使用yield
2021/06/07 Python
spring boot项目application.properties文件存放及使用介绍
2021/06/30 Java/Android
C站最全Python标准库总结,你想要的都在这里
2021/07/03 Python
聊聊redis-dump工具安装问题
2022/01/18 Redis
Centos系统通过Docker安装并搭建MongoDB数据库
2022/04/12 MongoDB