基于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中处理unchecked未捕获异常实例
Jan 17 Python
Windows下的Jupyter Notebook 安装与自定义启动(图文详解)
Feb 21 Python
python之DataFrame实现excel合并单元格
Feb 22 Python
python 找出list中最大或者最小几个数的索引方法
Oct 30 Python
对pandas读取中文unicode的csv和添加行标题的方法详解
Dec 12 Python
python中enumerate() 与zip()函数的使用比较实例分析
Sep 03 Python
python打印异常信息的两种实现方式
Dec 24 Python
PyCharm使用之配置SSH Interpreter的方法步骤
Dec 26 Python
django 文件上传功能的相关实例代码(简单易懂)
Jan 22 Python
python中doctest库实例用法
Dec 31 Python
如何用Python进行时间序列分解和预测
Mar 01 Python
Python insert() / append() 用法 Leetcode实战演示
Mar 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
利用 window_onload 实现select默认选择
2006/10/09 PHP
ThinkPHP访问不存在的模块跳转到404页面的方法
2014/06/19 PHP
ThinkPHP框架任意代码执行漏洞的利用及其修复方法
2014/07/04 PHP
PHP chunk_split()函数讲解
2019/02/12 PHP
Yii框架数据库查询、增加、删除操作示例
2019/10/14 PHP
基于PHP+mysql实现新闻发布系统的开发
2020/08/06 PHP
最好用的省市二级联动 原生js实现你值得拥有
2013/09/22 Javascript
JS实现根据出生年月计算年龄
2014/01/10 Javascript
jQuery AjaxUpload 上传图片代码
2016/02/02 Javascript
Javascript的表单验证-提交表单
2016/03/18 Javascript
Vue数据驱动模拟实现3
2017/01/11 Javascript
详解vue.js的事件处理器v-on:click
2017/06/27 Javascript
vue实现消息的无缝滚动效果的示例代码
2017/12/05 Javascript
微信小程序项目总结之点赞 删除列表 分享功能
2018/06/25 Javascript
详解Vue的钩子函数(路由导航守卫、keep-alive、生命周期钩子)
2018/07/24 Javascript
AngularJS中ng-options实现下拉列表的数据绑定方法
2018/08/13 Javascript
Vue 实现分页与输入框关键字筛选功能
2020/01/02 Javascript
[41:20]2014 DOTA2华西杯精英邀请赛 5 24 NewBee VS DK
2014/05/26 DOTA
[01:02]DOTA2上海特锦赛SHOWOPEN
2016/03/25 DOTA
详解Python中类的定义与使用
2017/04/11 Python
pip安装Python库时遇到的问题及解决方法
2017/11/23 Python
Linux下安装python3.6和第三方库的教程详解
2018/11/09 Python
django项目登录中使用图片验证码的实现方法
2019/08/15 Python
关于numpy.where()函数 返回值的解释
2019/12/06 Python
mac 上配置Pycharm连接远程服务器并实现使用远程服务器Python解释器的方法
2020/03/19 Python
50个强大璀璨的CSS3/JS技术运用实例
2010/02/27 HTML / CSS
HTML5所有标签汇总及标签意义解释
2015/03/12 HTML / CSS
微软英国官方网站:Microsoft英国
2016/10/15 全球购物
领先的钻石和订婚戒指零售商:Diamonds-USA
2016/12/11 全球购物
BASIC HOUSE官方旗舰店:韩国著名的服装品牌
2018/09/27 全球购物
爱尔兰电脑、家电和家具购物网站:Buy It Direct
2019/07/09 全球购物
网络教育自我鉴定
2014/02/04 职场文书
求职意向书
2014/04/01 职场文书
社区党建工作方案
2014/06/10 职场文书
2016清明节森林防火广播稿
2015/12/17 职场文书
基于Python实现一个春节倒计时脚本
2022/01/22 Python