基于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程序生成word和PDF文档的方法
Feb 14 Python
对numpy中array和asarray的区别详解
Apr 17 Python
查看TensorFlow checkpoint文件中的变量名和对应值方法
Jun 14 Python
详解Django+Uwsgi+Nginx 实现生产环境部署
Nov 06 Python
Python文件循环写入行时防止覆盖的解决方法
Nov 09 Python
python os.path.isfile()因参数问题判断错误的解决
Nov 29 Python
tensorflow实现从.ckpt文件中读取任意变量
May 26 Python
python:HDF和CSV存储优劣对比分析
Jun 08 Python
vscode+PyQt5安装详解步骤
Aug 12 Python
只需要这一行代码就能让python计算速度提高十倍
May 24 Python
Python爬虫之用Xpath获取关键标签实现自动评论盖楼抽奖(二)
Jun 07 Python
Python办公自动化解决world文件批量转换
Sep 15 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/08/18 PHP
phpadmin如何导入导出大数据文件及php.ini参数修改
2013/02/18 PHP
PHP在线生成二维码代码(google api)
2013/06/03 PHP
php基于curl扩展制作跨平台的restfule 接口
2015/05/11 PHP
php根据用户名和手机号查询是否存在手机号码
2017/02/16 PHP
PHP中一个有趣的preg_replace函数详解
2018/08/15 PHP
php+mysql开发的最简单在线题库(在线做题系统)完整案例
2019/03/30 PHP
基于jQuery实现下拉框
2014/11/24 Javascript
浅析AngularJS中的指令
2016/03/20 Javascript
Angularjs中三种数据的绑定策略(“@”,“=”,“&”)
2016/12/23 Javascript
node.js利用redis数据库缓存数据的方法
2017/03/01 Javascript
vue-router路由参数刷新消失的问题解决方法
2017/06/17 Javascript
vue-cli常用设置总结
2018/02/24 Javascript
jQuery基于闭包实现的显示与隐藏div功能示例
2018/06/09 jQuery
mpvue 单文件页面配置详解
2018/12/02 Javascript
Angular8引入百度Echarts进行图表分析的实现代码
2019/11/27 Javascript
Python脚本实现下载合并SAE日志
2015/02/10 Python
Python通过select实现异步IO的方法
2015/06/04 Python
python pandas dataframe 按列或者按行合并的方法
2018/04/12 Python
python3+PyQt5使用数据库表视图
2018/04/24 Python
通过Py2exe将自己的python程序打包成.exe/.app的方法
2018/05/26 Python
实例讲解python中的序列化知识点
2018/10/08 Python
详解如何减少python内存的消耗
2019/08/09 Python
python字符串反转的四种方法详解
2019/12/02 Python
Python生态圈图像格式转换问题(推荐)
2019/12/02 Python
Python GUI编程学习笔记之tkinter控件的介绍及基本使用方法详解
2020/03/30 Python
python批量检查两个对应的txt文件的行数是否一致的实例代码
2020/10/31 Python
详解python的变量缓存机制
2021/01/24 Python
CSS3地图动态实例代码(圆圈向外扩散)
2018/06/15 HTML / CSS
详解Html5页面实现下载文件(apk、txt等)的三种方式
2018/10/22 HTML / CSS
优衣库澳大利亚官网:UNIQLO澳大利亚
2017/01/18 全球购物
Kathmandu英国网站:新西兰户外运动品牌
2017/03/27 全球购物
手工社团活动方案
2014/02/17 职场文书
品质管理部岗位职责范文
2014/03/01 职场文书
学习经验演讲稿
2014/05/10 职场文书
2016秋季运动会前导词
2015/11/25 职场文书