今天先把昨天的发文补上再说,昨天在搞Flask框架搭建,并且尝试批量爬取视频,遇到了一些坑,跟大家分享一下。

这次我们案例的网址是:
https://haokan.baidu.com/v?vid=13433481203252935978&pd=bjh&fr=bjhauthor&type=video。

我们进去后,会看见如下画面:

我们这次要做的是要把旁边列表中的视频爬取下来,完整代码如下:

from selenium import webdriver
from bs4 import BeautifulSoup
from lxml import etree
import urllib.request
import requests
import time
import re
import osoptions = webdriver.ChromeOptions()
options.add_argument('--headless')
options.add_argument('--disable-gpu')
driver = webdriver.Chrome(options=options)#爬取象棋视频列表
url = 'https://haokan.baidu.com/v?vid=13433481203252935978&pd=bjh&fr=bjhauthor&type=video'
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36 Edg/84.0.522.50'
}
driver.get(url)
driver.implicitly_wait(3)
html = driver.page_source
select = etree.HTML(html)half_href = 'https://haokan.baidu.com/'
for i in range(1,21):video_half_href = select.xpath('//*[@id="rooot"]/div/div[2]/div[2]/ul/li['+str(i)+']/a/@href')href = half_href + video_half_href[0]video_name = select.xpath('//*[@id="rooot"]/div/div[2]/div[2]/ul/li['+str(i)+']/@title')[0]driver.get(href)html2 = driver.page_sourceselect2 = etree.HTML(html2)video_href = select2.xpath('//*[@id="mse"]/video/@src')[0]video = requests.get(video_href,headers=headers)#print(video_name)#print(href)#print(video_href)#time.sleep(1.5)with open('E:/video/{}.avi'.format(video_name),'wb+') as f:f.write(video.content)time.sleep(1.5)

首先,我们导入可能会用到的各种库,如下图:

接着,我们开启万花筒模式,如下图:

然后,跟以前一样的老套路,将url地址和请求头设置好。代码如下:

url = 'https://haokan.baidu.com/v?vid=13433481203252935978&pd=bjh&fr=bjhauthor&type=video'
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36 Edg/84.0.522.50'
}

接着,我们用driver.get()函数,发出get请求,请求网页,等待浏览器响应,响应时间设置为3秒,再将源代码传递给etree,创建select选择器。如下图:

之后,我们就要去观察网页结构了,找到右边的视频列表的第一个视频鼠标右击选择检查,或者按下键盘上的功能键F12,如下图:

我们发现视频的链接在a标签中,我们点击进去看一下,如下图:

但是,我们发现如果根据这个a标签来提取链接就会出现一个问题,如下图:

结果:

只有半截地址,所以,我们要去构造地址,我们去观察它的url地址,发现规律:


只要在前面加上:https://haokan.baidu.com/,就行了。
如下图:

结果,出现了我们想要的完整地址:

接下来,我们去观察列表的最后一个视频地址的xpath路径,对比一下,如下图:

我们发现,只是li标签的序号不同,所以,我们可以根据for循环构造视频所在的页面url地址。如下图:


结果:

接着,我们要获取视频的页面地址,所以,我们去观察网页发现,如下图:

在video标签里面的地址,把它复制下来去浏览器里面打开发现是我们需要的视频地址,所以有:
我们请求获取到的地址,然后,构造选择器select2来获取视频video标签内的属性,也就是视频地址。如下图:

结果,下来还有一些内容,就不全部截图了,请大家见谅:

现在我们已经获取到视频的地址了,还差视频的名称,我们还是去观察网页结构,如下图:

我们发现,我们想要的视频名称在li标签中的属性title里面,我们要提取title标签。所以,我们在起始页面,用xpath方法来提取title属性,如下图:

结果:

我们用requests.get()请求视频地址,然后获得视频内容,如下图:

我们现在万事具备,只欠东风,我先在E盘创建一个文件夹(目录)video,用来存放视频。所以有:

结果,在E盘自动创建了一个video文件夹(目录):

再以二进制的形式写入视频,文件名对应视频的标题名,文件格式是avi视频格式,用格式化字符串的方法(format方法),每执行一次休息1.5秒钟,所以有:

等待一段时间后,运行结果:


我们随便打开一个看一下,如下图:

最后,感谢大家前来观看鄙人的文章,文中或有诸多不妥之处,还望指出和海涵。

python从入门到放弃篇40(selenium库,lxml库,requests库,time库,构造url)爬取列表中的象棋视频相关推荐

  1. python从入门到放弃篇31(selenium库)模拟天猫登录输入不含验证码,初步实现

    今天把之前两天的文章补上再说.这两天在研究模拟登录.暂时还没有进展,但是我相信会好起来的. 我之前有一篇博文,是说爬取天猫图书信息的,我是在爬了一页后,也就是60本书后,遇到一个问题,就是碰到天猫要求 ...

  2. python从入门到放弃篇29(selenium库)for循环爬取名人名言动态网页并保存数据到本地计算机上

    今天,又是个美好的一天,我因为开始自学爬虫,所以就顺便看看爬虫重修群的作业(当然我没有挂科),我觉得这次作业还有一些意思,所以,我自己就解决了这次作业. 完整代码其实也就20多行左右: 我们这次的案例 ...

  3. python从入门到放弃篇26(lxml.etree库,urllib.request库,构造xpath路径,构造url)实现翻页爬取豆瓣书简介并保存数据

    今天,我研究了构造url和xpath路径的方法实现翻页爬取数据.觉得还可以,不过还是存在一些问题,没有我想的那么理想,因为,目前只实现了爬取每一页的第一本书及其书评.我等有时间会再去研究. 第一步,我 ...

  4. python入门到放弃篇46绘制几何图形

    昨天,因为有时间.所以,久违地python编程一波.突然有一个新奇的想法,然后去实践了一下,又烧死了不少脑细胞,不过已经习惯了. 废话不多说,今天的代码有点小多,希望各位客官能够满意. 代码1: #随 ...

  5. 《Python从入门到放弃》(Yanlz+Unity+SteamVR+云计算+5G+AI=VR云游戏=Python+PyCharm+人工智能+无人驾驶+数据可视化+人机交互+立钻哥哥+==)

    <Python从入门到放弃> <Python从入门到放弃> 版本 作者 参与者 完成日期 备注 YanlzAI_Python_V01_1.0 严立钻 2019.09.25 ## ...

  6. python从入门到放弃图片大全-Python 从入门到放弃(一)

    Python 从入门到放弃(一) 一个没有逻辑顺序的python笔记,包括日常使用python时的总结与阅读<Python基础教程>([挪] Magnus Lie Hetland 著) 的 ...

  7. python从入门到放弃表情图-Python 从入门到放弃(一)

    Python 从入门到放弃(一) 一个没有逻辑顺序的python笔记,包括日常使用python时的总结与阅读<Python基础教程>([挪] Magnus Lie Hetland 著) 的 ...

  8. Python语言入门这一篇就够了-学习笔记(十二万字)

    Python语言入门这一篇就够了-学习笔记(十二万字) 友情提示:先关注收藏,再查看,12万字保姆级 Python语言从入门到精通教程. 文章目录 Python语言入门这一篇就够了-学习笔记(十二万字 ...

  9. Python学习---入门导学篇

    Python学习---入门导学篇 Python的特点 Python受人喜欢的原因 Python的缺点 Python能做什么? Python基础语法 Python的特点 1.Python是一门编程语言, ...

最新文章

  1. python随机补边缘border
  2. javascript中常用数组方法详细讲解
  3. api 原生hbase_Hbase常用api
  4. 基于Dubbo框架构建分布式服务(三)
  5. Redis工作笔记-Set类型
  6. C#设计模式之5-单例模式
  7. web安全day26:今天,算是把linux的用户管理弄明白了
  8. 长沙理工计算机安全基础试题,长沙理工大学数字电子技术基础试卷数电试卷题库参考答案(01-10)...
  9. 条码枪接入智能网关,通过条码查询数据库,数据写入PLC寄存器
  10. 基于html的项目的选题报告,团队项目-选题报告
  11. 关于网络连接里无虚拟网络适配器的解决办法
  12. jcp jsr_JCP批准Java SE 7和随附的JSR
  13. tesseract-ocr在mac下的使用汇总
  14. 零空间、点积与对偶性
  15. Qt版电子词典(qss)
  16. 【SQRT】函数使用技巧
  17. OPENWRT或旁路由如果不能正常使用opkg,正确上网等的一种解决方法
  18. pc展示emoji表情_如何在智能手机或PC上使用表情符号
  19. LMS自适应滤波器算法及其改进
  20. 斐波拉契数列C++--递推

热门文章

  1. 推荐几个实用的Excel技巧,最后一个是亮点
  2. 【VBA研究】Excel信息对比及单元格颜色设置
  3. 【VMware】VMware Pro16 使用 Ubuntu18.04,从零配置基础环境
  4. CDA Level 1 PART1:数据分析概述 描述性统计分析
  5. 用 shell 脚本批量下载畅想听吧(CXT8)和 有声下吧(YSX8)的有声小说
  6. Qt编写控件属性设计器11-导入xml
  7. “乒乓外交”和人脉扩展
  8. (UE4 4.21 ) UE4给编辑器添加菜单栏(Menu),工具栏(TooBar),Tab窗口
  9. java:if...else..if...else控制语句的使用
  10. vue的mapstate和mapgetter