基于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解决Fedora解压zip时中文乱码的方法
Sep 18 Python
python中快速进行多个字符替换的方法小结
Dec 15 Python
python中Pycharm 输出中文或打印中文乱码现象的解决办法
Jun 16 Python
python with提前退出遇到的坑与解决方案
Jan 05 Python
python 使用sys.stdin和fileinput读入标准输入的方法
Oct 17 Python
centos7之Python3.74安装教程
Aug 15 Python
tensorflow多维张量计算实例
Feb 11 Python
Python实现动态给类和对象添加属性和方法操作示例
Feb 29 Python
解决安装新版PyQt5、PyQT5-tool后打不开并Designer.exe提示no Qt platform plugin的问题
Apr 24 Python
Python中的Cookie模块如何使用
Jun 04 Python
Keras load_model 导入错误的解决方式
Jun 09 Python
详细介绍python类及类的用法
May 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&MYSQL分页原理及实现
2007/01/02 PHP
Apache+php+mysql在windows下的安装与配置图解(最新版)
2008/11/30 PHP
PHP 错误之引号中使用变量
2009/05/04 PHP
thinkphp5.1框架模板赋值与变量输出示例
2020/05/25 PHP
跨域请求之jQuery的ajax jsonp的使用解惑
2011/10/09 Javascript
JavaScript 匿名函数和闭包介绍
2015/04/13 Javascript
动态加载jQuery的两种方法实例分析
2015/07/17 Javascript
JavaScript中0和""比较引发的问题
2016/05/26 Javascript
浅谈$('div a') 与$('div>a')的区别
2016/07/18 Javascript
基于vue实现swipe分页组件实例
2017/05/25 Javascript
解决BootStrap Fileinput手机图片上传显示旋转问题
2017/06/01 Javascript
Vue实现路由跳转和嵌套
2017/06/20 Javascript
vue的常用组件操作方法应用分析
2018/04/13 Javascript
详解原生JS动态添加和删除类
2019/03/26 Javascript
js时间转换毫秒的实例代码
2019/08/21 Javascript
layui数据表格跨行自动合并的例子
2019/09/02 Javascript
JS随机密码生成算法
2019/09/23 Javascript
vue.js 子组件无法获取父组件store值的解决方式
2019/11/08 Javascript
微信小程序去除左上角返回键的实现方法
2020/03/06 Javascript
javascript 函数的暂停和恢复实例详解
2020/04/25 Javascript
jQuery实现带进度条的轮播图
2020/09/13 jQuery
[02:40]DOTA2英雄基础教程 先知
2013/11/29 DOTA
[03:38]TI4西雅图DOTA2前线报道 71专访
2014/07/08 DOTA
在ironpython中利用装饰器执行SQL操作的例子
2015/05/02 Python
python实现将excel文件转化成CSV格式
2018/03/22 Python
对Python中range()函数和list的比较
2018/04/19 Python
Python机器学习之scikit-learn库中KNN算法的封装与使用方法
2018/12/14 Python
用openCV和Python 实现图片对比,并标识出不同点的方式
2019/12/19 Python
python统计函数库scipy.stats的用法解析
2020/02/25 Python
Python使用plt.boxplot() 参数绘制箱线图
2020/06/04 Python
python如何用matplotlib创建三维图表
2021/01/26 Python
高中军训感言1000字
2014/03/01 职场文书
司机岗位职责说明书
2014/07/29 职场文书
先进事迹演讲稿
2014/09/01 职场文书
竞选学委演讲稿
2014/09/13 职场文书
八年级作文之友情
2019/11/25 职场文书