基于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绘图方法实例入门
May 19 Python
python+selenium实现163邮箱自动登陆的方法
Dec 31 Python
django在接受post请求时显示403forbidden实例解析
Jan 25 Python
python 列表降维的实例讲解
Jun 28 Python
python绘制立方体的方法
Jul 02 Python
Python + selenium + requests实现12306全自动抢票及验证码破解加自动点击功能
Nov 23 Python
python利用插值法对折线进行平滑曲线处理
Dec 25 Python
python代码 FTP备份交换机配置脚本实例解析
Aug 01 Python
tensorflow 模型权重导出实例
Jan 24 Python
使用Python 自动生成 Word 文档的教程
Feb 13 Python
Python selenium页面加载慢超时的解决方案
Mar 18 Python
python代码中怎么换行
Jun 17 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
ThinkPHP3.0略缩图不能保存到子目录的解决方法
2012/09/30 PHP
解析阿里云ubuntu12.04环境下配置Apache+PHP+PHPmyadmin+MYsql
2013/06/26 PHP
WordPress中获取所使用的模板的页面ID的简单方法
2015/12/31 PHP
在PHP语言中使用JSON和将json还原成数组的方法
2016/07/19 PHP
详解PHP实现定时任务的五种方法
2016/07/25 PHP
JS+PHP实现用户输入数字后显示最大的值及所在位置
2017/06/19 PHP
阿里云的WindowsServer2016上部署php+apache
2018/07/17 PHP
javascript css在IE和Firefox中区别分析
2009/02/18 Javascript
javascript 浏览器判断 绑定事件 arguments 转换数组 数组遍历
2009/07/06 Javascript
关于jquery ajax 调用带参数的webservice返回XML数据一个小细节
2012/07/31 Javascript
js 控制下拉菜单刷新的方法
2013/03/03 Javascript
IE下window.onresize 多次调用与死循环bug处理方法介绍
2013/11/12 Javascript
使用angular写一个hello world
2015/01/23 Javascript
Javascript 高阶函数使用介绍
2015/06/15 Javascript
基于jQuery实现select下拉选择可输入附源码下载
2016/02/03 Javascript
一个用jquery写的判断div滚动条到底部的方法【推荐】
2016/04/29 Javascript
JavaScript创建对象_动力节点Java学院整理
2017/06/27 Javascript
详解Node全局变量global模块
2017/09/28 Javascript
jQuery访问浏览器本地存储cookie、localStorage和sessionStorage的基本用法
2017/10/20 jQuery
基于jQuery实现Ajax验证用户名是否可用实例
2018/03/25 jQuery
vue-swiper的使用教程
2018/08/30 Javascript
node.js中express模块创建服务器和http模块客户端发请求
2019/03/06 Javascript
vue实现树形结构样式和功能的实例代码
2019/10/15 Javascript
webpack4 配置 ssr 环境遇到“document is not defined”
2019/10/24 Javascript
Django上使用数据可视化利器Bokeh解析
2019/07/31 Python
python 计算两个列表的相关系数的实现
2019/08/29 Python
python如何把字符串类型list转换成list
2020/02/18 Python
python文件编写好后如何实践
2020/07/07 Python
Html5 Canvas 实现一个“刮刮乐”游戏
2019/09/05 HTML / CSS
预订奥兰多和佛罗里达州公园门票:FloridaTix
2018/01/03 全球购物
德国内衣、泳装和睡衣网上商店:Bigsize Dessous
2018/07/09 全球购物
简单而又朴实的个人求职信分享
2013/12/12 职场文书
简历中个人自我评价范文
2013/12/26 职场文书
主题团日活动总结
2014/06/25 职场文书
会议接待欢迎标语
2014/10/08 职场文书
寒假社会实践个人总结
2015/03/06 职场文书