基于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的SimpleHTTPServer源码来解析socket通信
Jun 27 Python
Python基于递归实现电话号码映射功能示例
Apr 13 Python
Python读写及备份oracle数据库操作示例
May 17 Python
为何人工智能(AI)首选Python?读完这篇文章你就知道了(推荐)
Apr 06 Python
Python运行DLL文件的方法
Jan 17 Python
windows10环境下用anaconda和VScode配置的图文教程
Mar 30 Python
Python判断字符串是否为空和null方法实例
Apr 26 Python
Django自关联实现多级联动查询实例
May 19 Python
pycharm 配置svn的图文教程(手把手教你)
Jan 15 Python
python中K-means算法基础知识点
Jan 25 Python
端午节将至,用Python爬取粽子数据并可视化,看看网友喜欢哪种粽子吧!
Jun 11 Python
Python利用FlashText算法实现替换字符串
Mar 31 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启用zlib压缩文件的配置方法
2013/06/12 PHP
Ubuntu12下编译安装PHP5.3开发环境
2015/03/27 PHP
Yii操作数据库实现动态获取表名的方法
2016/03/29 PHP
基于ThinkPHP5.0实现图片上传插件
2017/09/25 PHP
PHP 进程池与轮询调度算法实现多任务的示例代码
2019/11/26 PHP
JavaScript 申明函数的三种方法 每个函数就是一个对象(一)
2009/12/04 Javascript
中止javascript执行的方法
2014/02/14 Javascript
node.js中的emitter.on方法使用说明
2014/12/10 Javascript
js获取json元素数量的方法
2015/01/27 Javascript
jQuery实现新消息在网页标题闪烁提示
2015/06/23 Javascript
jQuery使用$.ajax进行即时验证的方法
2015/12/08 Javascript
jquery插件treegrid树状表格的使用方法详解(.Net平台)
2017/01/03 Javascript
详解闭包解决jQuery中AJAX的外部变量问题
2017/02/22 Javascript
详解JavaScript数组过滤相同元素的5种方法
2017/05/23 Javascript
seaJs使用心得之exports与module.exports的区别实例分析
2017/10/13 Javascript
在vue项目中集成graphql(vue-ApolloClient)
2018/09/08 Javascript
手把手教你如何使用nodejs编写cli命令行
2018/11/05 NodeJs
CKEditor 4.4.1 添加代码高亮显示插件功能教程【使用官方推荐Code Snippet插件】
2019/06/14 Javascript
element中Steps步骤条和Tabs标签页关联的解决
2020/12/08 Javascript
[51:15]2014 DOTA2国际邀请赛中国区预选赛 Orenda VS LGD-GAMING
2014/05/22 DOTA
[04:10]2018年度CS GO玩家最喜爱的主播-完美盛典
2018/12/16 DOTA
python Flask 装饰器顺序问题解决
2018/08/08 Python
Python subprocess库的使用详解
2018/10/26 Python
Python函数的参数常见分类与用法实例详解
2019/03/30 Python
对Python _取log的几种方式小结
2019/07/25 Python
使用虚拟环境打包python为exe 文件的方法
2019/08/29 Python
Python 内置函数globals()和locals()对比详解
2019/12/23 Python
Pytorch 定义MyDatasets实现多通道分别输入不同数据方式
2020/01/15 Python
python3.6.8 + pycharm + PyQt5 环境搭建的图文教程
2020/06/11 Python
vscode+PyQt5安装详解步骤
2020/08/12 Python
HUGO BOSS美国官方网上商店:世界知名奢侈品牌
2017/08/04 全球购物
温馨提示标语
2014/06/26 职场文书
经济类毕业生求职信
2014/06/26 职场文书
全国优秀教师事迹材料
2014/08/26 职场文书
2015年中秋放假通知范文
2015/08/18 职场文书
2016形势与政策学习心得体会
2016/01/12 职场文书