admin 管理员组

文章数量: 1086019


2024年3月29日发(作者:js加密算法)

 2021年2月10日第38卷 第3期

doi:10.19399/.2021.03.061

运营探讨

基于Python爬取视频的设计与实现

胡雅丽

(山西青年职业学院 计算机与信息工程系,山西 太原 037000)

摘要:根据用户的需求,遵循一定的规则,收集网站的信息,利用Python中网络爬虫技术,对网站中的数据进

行分析并自动抓取网页中有价值的数据。通过导入类库、提取数据以及存储数据等流程简明阐述了爬取视频的方法。

关键字:Python;网络爬虫;数据分析

Design and Implementation of Crawling Video Based on Python

HU Yali

(Department of Computer and Information Engineering, Shanxi Youth Vocational College, Taiyuan 037000, China)

Abstract: According to the needs of users, follow certain rules, collect website information, use Python web

crawler technology to analyze the data in the website and automatically grab the valuable data in the web page. This

paper introduces the method of crawling video by importing class library, extracting data and storing data.

Keywords: Python; web crawler; data analysis

0 引 言

近年来,随着互联网大数据、云计算以及人工

智能等技术的迅猛发展,各行各业产生了大量的数据,

其中数据的海量性、开放性以及实时性成为数据挖掘

的主要特性。在数据共享的时代,人们如何获取到对

自己有价值的数据已经成为炙手可热的话题,而搜索

引擎以其独有的特点抓住了这次机会,可以极大可能

地搜索到大量的网页。利用搜索引擎中重要的网络爬

虫模块可以实现对网页中相关信息的自动搜集及定向

采集,用户只需要在搜索引擎中输入关键字检索网页,

一大批与之有关的网页信息就会被查找出来,而网络

爬虫作为引擎的重要组成部分,在搜索网页中起着至

关重要的作用。Python语言中提供了很多爬虫框架,

利用Python语言爬虫数据变得更加高效,在一定程

度上大大地节省了人力和物力资源

[1]

软件进行二次开发。另外,Python是开源的,它拥有

非常多优秀的库,可以用于数据分析等。更重要的

是,Python与开源大数据平台Hadoop具有很好的兼

容性。

2 Python数据分析

数据的类型多种多样,通过Python数据分析人

们可获知数据中的数量、用词以及发送时间。Python

数据分析的主要目的就是将一大批隐藏的杂乱无章

的数据信息提炼出来,找到其中的内在规律,帮助用

户做出正确的判断,从而进行决策。其具有丰富和强

大的库,能够处理很多工作,常用的类库有IPython、

Pandas以及Spyder等。其中IPython能够提高编写、

测试以及调试Python的速度,Pandas是Python数据

分析的核心库,Spyder是一个强大的交互式Python

语言开发环境

[2]

。一个完整的数据分析项目大致可

分为5个流程,具体如图1所示。

数据获取

数据存储 数据预处理

建模与分析

可视化分析

1 Python简介

Python是一门动态的、跨平台的、面向对象的以

及解释型的计算机脚本语言,由于其代码规范简洁、

关键字相对较少且说明文档很简单,容易上手,因此

也被称为可执行的伪代码。它可以使人们只关心完成

什么样的工作任务,而不是纠结于语法。它能够将用

其他语言制作的各种模块很轻松地联结在一起,常被

昵称为胶水语言,扩展性很强,可以调用C和C++

等编写的程序,也可以在其他程序中使用,或对一些

收稿日期:

2020-12-30

作者简介:

胡雅丽(1981-),女,山西大同人,讲师,工

程硕士,主要研究方向为计算机应用、数据库开发等。

图1 Python数据分析流程图

3 网络爬虫

3.1 简 介

网络爬虫的实质就是利用Python程序设计语言

抓取网页内容。根据用户的需求,遵循一定的规则,

自动抓取网页中有价值的数据

[3]

。在爬虫过程中,

需要一个队列来存放获取网页数据的所有URL,从

第一个初始的URL打开指定的网页,选择需要进行

爬虫的内容,获取网页中源代码的全部链接信息,将

获取到新的URL放置在URL队列中,只要用户爬虫

2021210383

Telecom Power Technology

数据的任务没有完成,这个过程将会一直执行下去,

直到爬虫结束将其关闭

[4,5]

3.2 网络爬虫分类

网络爬虫一般分为通用和聚焦两种类型。其中

通用类型的网络爬虫也称为全网爬虫,利用搜索引擎,

爬取种子页面(百度、谷歌、雅虎等),继而通过并

行方式爬取互联网上所有数据,主要目的是将互联网

上的网页下载到本地,形成一个互联网内容的镜像备

[6]

。相比于通用网络爬虫,聚焦类型的网络爬虫

则是面向特定主题需求的一种网络爬虫程序,是有针

对性的爬取与主题相关的数据,过滤掉与主题无关的

数据,节省了硬件和网络资源,页面更新快

[7]

3.3 工作机制

网络爬虫一般首先要找到需要爬取的网页URL,

将这些种子URL加入到待抓取URL队列中,其次

选择合适的爬虫工具从URL队列中取出待取URL,

通过Python代码解析DNS得到主机的IP地址,并

将URL对应的网页下载下来,最后将爬取的网页数

据保存在数据库中。在爬取网页URL时,还会提取

其他新的网页URL,此时需要将新提取出来的种子

URL加入到待抓取URL队列中,再次解析DNS,从

而进入下一个循环

[8-10]

。网络爬虫的工作机制如图2

所示。

种子URL

加入

URL队列

响应内容

提取数据

数据存储

提取新的URL放入URL队列中

图2 网络爬虫的工作机制

4 爬取视频

4.1 导入Python类库

首先需要导入Python爬虫需要的类库,其中os

库是标准库,用来完成基本的交互功能,requests库

是第三方库,可以直接构建常用的get和post请求并

发起,lxml和etree是通过xpath解析DOM树,urllib

和request是负责打开浏览url内的html文本。导入

Python类库为:

import os

import requests

from lxml import etree

from urllib import request

4.2 提取数据

利用User-Agent获取当前目标网站的Http协议

中头部信息,提供当前浏览器类型、操作系统及版本、

CPU类型、浏览器渲染引擎、浏览器语言、浏览器插

件等信息的标识。具体为:

s={

‘User-Agent’: ‘Mozilla/5.0 (Windows NT 10.0;

WOW64) AppleWebKit/537.36 (KHTML, like Gecko)

Chrome/67.0.3396.99 Safari/537.36’

}

()通过get方法向服务器发送请求;

t()和n()通过用增加url、

headers等信息构建了一个完整的请求:

def start_work(self, url):

print("Climbing to page {}".format())

#response=(url=url, headers=self.

headers)

req=t(url=url, headers=self.

headers)

res=n(req)

# html=

html=().decode()

+=1

4.3 存储数据

存储数据的程序为:

html=(html)

video_src=(‘//div[@class=”video-

play”]/video/@src’)

video_title=(‘//span[@

class=”video-title”]/text()’)

next_page=”http:”+(‘//a[@

class=”next”]/@href’)[0]

if next_page==”http:”:

return

_file(video_src, video_title)

_work(next_page)

def write_file(self, video_src, video_title):

for src, title in zip(video_src, video_title):

response=(“http:”+src,

headers=s)

root_dir=”shipin”

if not (root_dir):

rs(root_dir)

file_name=title+”.mp4”

 2021年2月10日第38卷 第3期

file_name=””.join(file_(‘/’))

print(“Grabbing{}”.format(file_name))

with open(root_dir+””+file_name, ‘wb’)

as f:

(t)

4.4 创建主函数

创建主函数为:

if__name__==”__main__”:

spider=Spider()

for i in range(0,3):

url=”.......” + str(i) + “-”

_work(url)

参考文献:

[1] 吴永聪.浅谈Python爬虫技术的网页数据抓取与分

析[J].计算机时代,2019(8):94-96.

[2] 韩文煜.基于python数据分析技术的数据整理与分析

研究[J].科技创新与应用,2020(4):157-158.

[3] 郭锋锋.基于python的网络爬虫研究[J].佳木斯大

学学报(自然科学版),2020,38(2):62-65.

[4] 赵鹏程.分布式书籍网络爬虫系统的设计与实现[D].

成都:西南交通大学,2014.

[5] 王 敏.分布式网络爬虫的研究与实现[J].南京:东

南大学,2017,

[6] 罗楷轩.简述利用Python网络爬虫实现多下载站软件

搜索及下载地址提取[J].科学与信息化,2017(24):

37-39.

[7] 李玉香,王孟玉,涂宇晰.基于python的网络爬虫

技术研究[J].信息技术与信息化,2019(12):143-

145.

[8] 张 艳,吴玉全.基于Python 的网络数据爬虫程序设

计[J].电脑编程技巧与维护,2020(4):26-27.

[9] 钟机灵.基于Python网络爬虫技术的数据采集系统研

究[J].信息通信,2020(4):101-103.

[10] 殷丽凤,张浩然.基于Python网上招聘信息的爬取和

分析[J].电子设计工程,2019,27(20):22-26.

5 结 论

目前,互联网上的数据多且复杂,用户想要在

短时间内获取到有价值的数据很困难。本文针对某网

站的视频进行爬取进行了简单的阐述,使用具有强

大功能的Python语言在爬取视频时提供重要的支持,

爬取的视频以mp4文件的形式保存在程序中指定的

目录下,以极快的速度获得了想要的信息。

(上接第190页)

图2(a)和(b)圆形符号是贪婪算法使用本地

约束和全局约束结合得到的实验结果,而三角符号是

贪婪算法只使用全局约束的结果。可以看出传感器候

选集

S

1

中阵元的数目随迭代次数的变化而变化。只

使用全局约束算法的收敛速度要快一些,但最终选取

的阵元数目明显较多。结合本地约束和全局约束不但

能保证输出性能不变,还能明显减少最终选取的阵元

数量。图2(c)给出了自适应因子

α

=0.65时最终选

取的子阵位置分布图。图2(d)给出了自适应因子

α

=0.9时最终选取的子阵位置分布图。从这两个子图

可以看出在

α

较小的情况下,为了减少传输能耗,算

法最终会选择数据汇聚节点且朝向声源位置的阵元。

随着

α

的增大更多地靠近和朝向声源位置的阵元会被

选择,同时干扰源附近也会有部分阵元被选中。图2

(e)给出了自适应因子

α

=0.9时,不加干扰源的情

况下最终选取的子阵位置分布图。图2(d)和(e)

选取的阵元大部分相同,只是不加干扰源的情况下最

终选择的阵元都聚拢于数据汇聚节点和声源。

功耗为目标的子阵选择方法,且结合工程实践要求

给出了使用贪婪算法进行阵元选择的方案。通过仿

真实验评估了算法功能和性能,结果表明文中方法能

够大幅降低无线传感器网络的整体功耗,延长其工作

时间。

参考文献:

[1] 吴振锋,蒋 飞,刘兴川.无线传感器网络军事应

用[M].北京:电子工业出版社,2015.

[2] Stephen B,Lieven Optimization[M].UK:

Cambridge University Press,2004.

[3] Grant :Matlab Software for Disciplined Convex

Programming[Z].2008.

[4] Pollefeys M,Nister Computation of Sound

and Microphone Locations from Time-Difference-of-

Arrival Data[C]//2008 IEEE International Conference on

Acoustics,Speech and Signal Processing,2008.

[5] Chepuri S,Leus ty-Promoting Sensor

Selection for Nonlinear Measurement Models[J].IEEE

Transactions on Signal Processing,2015,63(3):

684-698.

[6] Akyildiz I,Su W,Sankarasubramaniam Y,et

ss Sensor Networks:A Survey[J].Computer

Networks,2002,38(4):393–422.

5 结 论

通过研究基于MVDR波束形成器降噪的无线声

传感器子阵选择问题,给出了以降低传感器网络整体


本文标签: 爬虫 数据 网络 网页