基于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的re模块应用实例
Sep 26 Python
python3批量删除豆瓣分组下的好友的实现代码
Jun 07 Python
Python引用传值概念与用法实例小结
Oct 07 Python
python lambda表达式在sort函数中的使用详解
Aug 28 Python
Python3.7基于hashlib和Crypto实现加签验签功能(实例代码)
Dec 04 Python
Pandas-Cookbook 时间戳处理方式
Dec 07 Python
python对文件的操作方法汇总
Feb 28 Python
Python安装OpenCV的示例代码
Mar 05 Python
jupyter notebook 多行输出实例
Apr 09 Python
在Ubuntu 20.04中安装Pycharm 2020.1的图文教程
Apr 30 Python
python 元组的使用方法
Jun 09 Python
Python实现学生管理系统(面向对象版)
Jun 24 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多线程批量采集下载美女图片的实现代码(续)
2013/06/03 PHP
php实现字符串翻转的方法
2015/03/27 PHP
form中限制文本字节数js代码
2007/06/10 Javascript
javascript 进度条 实现代码
2009/07/30 Javascript
javascript showModalDialog 多层模态窗口实现页面提交及刷新的代码
2009/11/28 Javascript
WEB 浏览器兼容 推荐收藏
2010/05/14 Javascript
jquery.map()方法的使用详解
2015/07/09 Javascript
AngularJS内建服务$location及其功能详解
2016/07/01 Javascript
AngularJS基础 ng-submit 指令简单示例
2016/08/03 Javascript
JavaScript实现简单的日历效果
2016/09/25 Javascript
js中数组插入、删除元素操作的方法
2017/02/15 Javascript
Angular.js中$resource高大上的数据交互详解
2017/07/30 Javascript
Vue实现带进度条的文件拖动上传功能
2018/02/23 Javascript
vue中实现高德定位功能
2019/12/03 Javascript
[54:47]Liquid vs VP Supermajor决赛 BO 第五场 6.10
2018/07/05 DOTA
tornado框架blog模块分析与使用
2013/11/21 Python
Python ORM框架SQLAlchemy学习笔记之关系映射实例
2014/06/10 Python
CentOS安装pillow报错的解决方法
2016/01/27 Python
Python 爬虫学习笔记之单线程爬虫
2016/09/21 Python
Python 判断文件或目录是否存在的实例代码
2018/07/19 Python
Python使用爬虫抓取美女图片并保存到本地的方法【测试可用】
2018/08/30 Python
Win10下python 2.7.13 安装配置方法图文教程
2018/09/18 Python
python读取并写入mat文件的方法
2019/07/12 Python
手机使用python操作图片文件(pydroid3)过程详解
2019/09/25 Python
python使用rsa非对称加密过程解析
2019/12/28 Python
Python龙贝格法求积分实例
2020/02/29 Python
Python编程快速上手——strip()函数的正则表达式实现方法分析
2020/02/29 Python
django 链接多个数据库 并使用原生sql实现
2020/03/28 Python
jupyter notebook tensorflow打印device信息实例
2020/04/20 Python
Python函数参数分类原理详解
2020/05/28 Python
Python Request类源码实现方法及原理解析
2020/08/17 Python
大三在校生电子商务求职信
2013/10/29 职场文书
大学自荐信
2013/12/12 职场文书
财政专业求职信范文
2014/02/19 职场文书
教师校本培训方案
2014/02/26 职场文书
2015年世界急救日宣传活动方案
2015/05/06 职场文书