基于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实现正则匹配检索远端FTP目录下的文件
Mar 25 Python
python学习笔记之调用eval函数出现invalid syntax错误问题
Oct 18 Python
在MAC上搭建python数据分析开发环境
Jan 26 Python
python实现识别相似图片小结
Feb 22 Python
简单了解python模块概念
Jan 11 Python
python 编码规范整理
May 05 Python
python3 BeautifulSoup模块使用字典的方法抓取a标签内的数据示例
Nov 28 Python
Python pyautogui模块实现鼠标键盘自动化方法详解
Feb 17 Python
详解python环境安装selenium和手动下载安装selenium的方法
Mar 17 Python
将keras的h5模型转换为tensorflow的pb模型操作
May 25 Python
python获取百度热榜链接的实例方法
Aug 25 Python
如何用 Python 子进程关闭 Excel 自动化中的弹窗
May 07 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
关于JSON以及JSON在PHP中的应用技巧
2013/11/27 PHP
PHP实现简单计算器小程序
2020/08/28 PHP
javascript之水平横向滚动歌词同步的应用
2007/05/07 Javascript
js加密解密字符串可自定义密码因子
2014/05/13 Javascript
给js文件传参数(详解)
2014/07/13 Javascript
JavaScript中String.match()方法的使用详解
2015/06/06 Javascript
JavaScript中使用指数方法Math.exp()的简介
2015/06/15 Javascript
JS+CSS简单树形菜单实现方法
2015/09/12 Javascript
基于Bootstrap里面的Button dropdown打造自定义select
2016/05/30 Javascript
JavaScript无缝滚动效果的实例代码
2017/03/27 Javascript
Angular4学习笔记之实现绑定和分包
2017/08/01 Javascript
vue使用drag与drop实现拖拽的示例代码
2017/09/07 Javascript
基于vue-cli配置lib-flexible + rem实现移动端自适应
2017/12/26 Javascript
javascript中的隐式调用
2018/02/10 Javascript
深入剖析Node.js cluster模块
2018/05/23 Javascript
angularjs下ng-repeat点击元素改变样式的实现方法
2018/09/12 Javascript
利用Vue构造器创建Form组件的通用解决方法
2018/12/03 Javascript
Vue触发隐藏input file的方法实例详解
2019/08/14 Javascript
node读写Excel操作实例分析
2019/11/06 Javascript
JavaScript 函数用法详解【函数定义、参数、绑定、作用域、闭包等】
2020/05/12 Javascript
Python增量循环删除MySQL表数据的方法
2016/09/23 Python
一个基于flask的web应用诞生 bootstrap框架美化(3)
2017/04/11 Python
解决Tensorflow安装成功,但在导入时报错的问题
2018/06/13 Python
一行代码让 Python 的运行速度提高100倍
2018/10/08 Python
django开发post接口简单案例,获取参数值的方法
2018/12/11 Python
Python中print函数简单使用总结
2019/08/05 Python
CSS3 translate导致字体模糊的实例代码
2019/08/30 HTML / CSS
webView加载html图片遇到的问题解决
2019/10/08 HTML / CSS
美国最大的骑马用品零售商:HorseLoverZ
2017/01/12 全球购物
类如何去实现接口
2013/12/19 面试题
护理学毕业生求职信
2013/11/14 职场文书
党员学习十八大感想
2014/01/17 职场文书
关于工作经历的证明书
2014/10/11 职场文书
幼儿园师德师风心得体会
2016/01/12 职场文书
求职信如何撰写?
2019/05/22 职场文书
PostGIS的安装与入门使用指南
2022/01/18 PostgreSQL