基于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中的闭包实例详解
Aug 29 Python
python黑魔法之编码转换
Jan 25 Python
Python中super函数的用法
Nov 17 Python
Python面向对象之接口、抽象类与多态详解
Aug 27 Python
opencv python 图像去噪的实现方法
Aug 31 Python
python2.7实现邮件发送功能
Dec 12 Python
pytorch 获取层权重,对特定层注入hook, 提取中间层输出的方法
Aug 17 Python
python循环输出三角形图案的例子
Nov 22 Python
django多种支付、并发订单处理实例代码
Dec 13 Python
Python Handler处理器和自定义Opener原理详解
Mar 05 Python
Python脚本破解压缩文件口令实例教程(zipfile)
Jun 14 Python
Numpy中的数组搜索中np.where方法详细介绍
Jan 08 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列出一个目录下的所有文件的代码
2012/10/09 PHP
如何打开php的gd2库
2017/02/09 PHP
PHP简单实现模拟登陆功能示例
2017/09/15 PHP
js中的cookie的读写操作示例详解
2014/04/17 Javascript
基于NodeJS的前后端分离的思考与实践(一)全栈式开发
2014/09/26 NodeJs
javascript 操作符(~、&、|、^、)使用案例
2014/12/31 Javascript
jQuery trigger()方法用法介绍
2015/01/13 Javascript
jQuery 自定义下拉框(DropDown)附源码下载
2016/07/22 Javascript
js鼠标按键事件和键盘按键事件用法实例汇总
2016/10/03 Javascript
清除输入框内的空格
2016/12/21 Javascript
js从输入框读取内容,比较两个数字的大小方法
2017/03/13 Javascript
jQuery+vue.js实现的九宫格拼图游戏完整实例【附源码下载】
2017/09/12 jQuery
原生JS获取元素的位置与尺寸实现方法
2017/10/18 Javascript
原生JS实现瀑布流插件
2018/02/06 Javascript
关于Mac下安装nodejs、npm和cnpm的教程
2018/04/11 NodeJs
微信小程序bindinput与bindsubmit的区别实例分析
2019/04/17 Javascript
koa2服务端使用jwt进行鉴权及路由权限分发的流程分析
2019/07/22 Javascript
如何在wxml中直接写js代码(wxs)
2019/11/14 Javascript
python静态方法实例
2015/01/14 Python
Python SQLite3数据库日期与时间常见函数用法分析
2017/08/14 Python
python 3.3 下载固定链接文件并保存的方法
2018/12/18 Python
selenium+PhantomJS爬取豆瓣读书
2019/08/26 Python
python求一个字符串的所有排列的实现方法
2020/02/04 Python
详解Python中pyautogui库的最全使用方法
2020/04/01 Python
Python flask框架实现查询数据库并显示数据
2020/06/04 Python
Python Pivot table透视表使用方法解析
2020/09/11 Python
Sneaker Studio法国:购买运动鞋
2018/06/08 全球购物
Java基础知识面试要点
2016/07/29 面试题
求职简历中的自我评价分享
2013/12/08 职场文书
幼儿园亲子活动方案
2014/01/29 职场文书
三月学雷锋月活动总结
2014/04/28 职场文书
作风大整顿心得体会
2014/09/10 职场文书
2014年商场国庆节活动策划方案
2014/09/16 职场文书
作风建设整改方案
2014/10/27 职场文书
工程项目经理岗位职责
2015/02/02 职场文书
java协程框架quasar和kotlin中的协程对比分析
2022/02/24 Java/Android