基于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基于xmlrpc实现二进制文件传输的方法
Jun 02 Python
Python使用minidom读写xml的方法
Jun 03 Python
python中模块的__all__属性详解
Oct 26 Python
Django 日志配置按日期滚动的方法
Jan 31 Python
Python实现Restful API的例子
Aug 31 Python
Python pandas自定义函数的使用方法示例
Nov 20 Python
python集合删除多种方法详解
Feb 10 Python
零基础学Python之前需要学c语言吗
Jul 21 Python
Python 解析库json及jsonpath pickle的实现
Aug 17 Python
Python截图并保存的具体实例
Jan 14 Python
基于注解实现 SpringBoot 接口防刷的方法
Mar 02 Python
python自动统计zabbix系统监控覆盖率的示例代码
Apr 03 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实现的Captcha验证码类实例
2014/09/22 PHP
php+mysql实现简单的增删改查功能
2015/07/13 PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
2017/07/26 PHP
PHPUnit + Laravel单元测试常用技能
2019/11/06 PHP
JS中的prototype与面向对象的实例讲解
2013/05/22 Javascript
javascript面向对象之定义成员方法实例分析
2015/01/13 Javascript
Bootstrap滚动监听(Scrollspy)插件详解
2016/04/26 Javascript
全面理解闭包机制
2016/07/11 Javascript
jQuery内容过滤选择器用法示例
2016/09/09 Javascript
node.js中EJS 模板快速入门教程
2017/05/08 Javascript
NodeJS爬虫实例之糗事百科
2017/12/14 NodeJs
详解如何在vue项目中引入elementUI组件
2018/02/11 Javascript
vue toggle做一个点击切换class(实例讲解)
2018/03/13 Javascript
解决vue2.0动态绑定图片src属性值初始化时报错的问题
2018/03/14 Javascript
手淘flexible.js框架使用和源代码讲解小结
2018/10/15 Javascript
JavaScript 中 JSON.parse 函数 和 JSON.stringify 函数
2018/12/05 Javascript
electron-vue利用webpack打包实现多页面的入口文件问题
2019/05/12 Javascript
nodejs中内置模块fs,path常见的用法说明
2020/11/07 NodeJs
python随机生成指定长度密码的方法
2015/04/04 Python
python开发环境PyScripter中文乱码问题解决方案
2016/09/11 Python
浅析Python数据处理
2018/05/02 Python
python3 json数据格式的转换(dumps/loads的使用、dict to str/str to dict、json字符串/字典的相互转换)
2019/04/01 Python
Python 给定的经纬度标注在地图上的实现方法
2019/07/05 Python
Python利用逻辑回归模型解决MNIST手写数字识别问题详解
2020/01/14 Python
Pandas —— resample()重采样和asfreq()频度转换方式
2020/02/26 Python
在keras里面实现计算f1-score的代码
2020/06/15 Python
分享CSS3中必须要知道的10个顶级命令
2012/04/26 HTML / CSS
h5网页水印SDK的实现代码示例
2019/02/19 HTML / CSS
苹果Mac升级:MacSales.com
2017/11/20 全球购物
英国排名第一的停车场运营商:NCP
2019/08/26 全球购物
国培计划培训感言
2014/03/11 职场文书
股东合作协议书范本
2014/04/14 职场文书
行政求职信
2014/07/04 职场文书
教师自我剖析材料范文
2014/09/30 职场文书
好好学习保证书
2015/02/26 职场文书
2015年学校远程教育工作总结
2015/07/20 职场文书