VideoSpider
===========
此项目是利用<strong>python2.7</strong>编写爬虫将的视频网站的web_url进行一系列操作,解析其真实视频地址和其视频相关的一些信息,例如视频的名称、ID、观看数、点赞数、评论数等,最后将其视频下载到本地文件夹内,然后将其他的信息保存至mysql数据库中。(目前项目还在开发当中,尽情期待新的内容)<br>
那么如何由网站的视频地址找到其视频的真实地址呢?<br>
我们一步一步来看O(^_^)O(最新一期加入了视频评论部分,最近比较忙,等过段时间继续优化与文档说明)<br>
<h3>数据库</h3>
首先先来了解一下这个项目的<strong>数据库操作。</strong><br>
我所使用的是<strong>mysql</strong>数据库,利用<strong>SQLyog</strong>来管理我的数据库。<br>
利用SQL语句:<br>
```python
import MYSQLdb
import sys
conn = MYSQLdb.connect('localhost', 'root', 'root', 'video') // 连接video数据库
try:
cur = conn.cursor()
cur.execute("DROP TABLE IF EXISTS rr")
sql = "CREAT TABLE rr(
Video_Id varchar(10) NOT NULL, // Id
Video_Name varchar(50), // 名称
Video_Url varchar(100), // 真实url
Video_Author varchar(20), // 作者
Video_Time varchar(10), // 时长
Video_Size varchar(20), // 大小
Video_ViewCount varchar(20), // 观看数
Video_CommentCount varchar(20), // 评论数
Video_FavCount varchar(20), // 点赞数
Video_Web varchar(50), // web_url
File_Url varchar(100), // 本地存放地址
PRIMARY KEY (Video_Id) // 设置主键
)"
cur.execute(sql)
cur.close()
conn.commit()
except:
conn.rollback()
conn.close()
```
创建出我们所需要的表rr去存放数据。(我是直接利用SQLyog里面可视化建表,方便、靠谱)<br>
(为什么要全部设置为varchar类型呢?因为参数传入数据库的时候比较方便,不用过于担心参数类型。)<br>
(参数类型这个问题是超级头痛,<b>type(xx)</b>这个函数很好用,搞不懂了自己就试一试这个。)<br>
表建好了,接下来就是将获取下来的存放到数据库中。<br>
这个比较简单,编写
```python
def rr_mysql(url, video_url, video_message, video_url_file):
```
方法,传入web_url、视频真实地址、视频的一些信息、视频的本地存放地址等参数。<br>
在方法中先<b>connection</b>连接数据库,接着建立<b>cursor</b>事务,再编写<b>SQL</b>语句,接着用<b>execute</b>实现SQL语句。最后可别忘了关闭事务和连接。<br>
有些初学者可能对于传这么多的参数不知道如何下手,这里有一些方法:<br>
```python
// 第一种方法
sql_1 = "INSERT INTO rr(x1, x2, x3, x4) " \
"VALUES (%s, %s, %s, %s)"
cur.execute(sql, (n1, n2, n3, n4))
// 第二种方法
sql_1 = "INSERT INTO rr(x1, x2, x3, x4) " \
"VALUES (%s, %s, %s, %s)" % (n1, n2, n3, n4)
cur.execute(sql)
// 错误方法
sql_1 = "INSERT INTO rr(x1, x2, x3, x4) " \
"VALUES (n1, n2, n3, n4)"
```
然后就是关于实时的将视频的动态变化信息存储到数据库中,对于数据库的操作大致没有变化,思路就是通过
<b>SELECT...WHERE...</b>语句查找数据库中关于相同<b>web_url</b>的那一条信息,然后和网上获取下来的数据进行对比,将变化的值通过<b>UPDATE...SET...WHERE...</b>语句进行实时的更新。<br>
由于种种可能,例如不小心将文件夹里的视频删除掉了或者数据库的某条信息丢失,我们就要在数据更新的的时候快速发现这个问题,并且解决掉:将缺失的数据、丢失的视频文件补回来。所以解决这个问题的项操作和上面的更新数据方法雷同。数据库中的信息缺失很好解决,就是将没有的数据重新再写回数据库,那么此处有什么难点呢?(确实有,困扰了我几个小时,最后还是将其解决掉了)\\(^.^)/<br>
问题就在于如何判断存放这个视频的文件夹中是否缺失了某个视频:彻底丢失或者视频大小不完整。因为程序是在不断地运行中,文件夹中的视频量也是在变化。<br>
我的第一个想法就是每次向文件夹中添加一个完整的视频就会使文件夹的size变大,我们在获取视频的时候已经将视频的大小得到了,那么每次下载玩一个视频,将这个文件的大小加上视频的大小,那么可以每次计算文件夹的大小来判断是否缺失视频。但是问题又来了,怎么实时的获取文件夹大小呢?我从网上查了查,找到了利用python获取文件夹的大小的方法:<br>
```python
from os.path import join, getsize
def file_size(file_url):
size = 0
for root, dirs, files in os.walk(file_url):
size = size + sum([getsize(join(root, name)) for name in files])
return size
```
但是问题又来了,经过我的测试,每次只有当视频已经完全下载后这个大小才会显示正常,并且还不知道如何实时的获取视频流的大小。<br>
第二个想法(已经成功)是在第一个想法的基础上更加细致了一些。每次通过某种方法获取到这个视频(已下载的)在文件夹中的大小,与网站中的视频大小进行对比判断是否文件损坏。但是这个前提是必须要判断出来视频(已下载)是否存在于文件夹中。
所以具体思路为:判断视频是否在文件夹中并且视频的大小等于网站上视频的大小,是的话就不做任何事,否的话则重新下载。经过我努力以及细心的在网上查找后发现,可以调用系统函数来实现上述的方法。<br>
```python
import os
from contextlib import closing
video_in_file = os.path.exists(video_in_file_url) // 判断视频是否在文件夹里,返回TRUE OR FALSE
video_in_file_size = os.path.getsize(video_in_file_url) // 得到视频在文件夹中的真实大小
```
此外,我们从数据库中获取数据后怎么显示出来呢?看一下这个例子:
```python
conn = MySQLdb.connect(
host='localhost',
port='3306',
user='root,
passwd='root',
db='XX',
charset='utf8',
) // 连接数据库
try:
cur = conn.cursor() // 创建事务
sql = "SELECT * " \
"FROM XX " \
cur.execute(sql) // 执行sql
result_1 = cur.fetchone() //
result_2 = cur.fetchmany(n) // }获取数据
result_3 = cur.fetchall() //
print result_1 // 打印result_1结果
for raw_2 in result_2:
print raw_2 // 打印result_2结果
for raw_3 in result_3:
print raw_3 // 打印result_3结果
cur.close()
conn.commit()
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
基于Python的视频网站爬虫源码.zip 此项目是利用python2.7编写爬虫将的视频网站的web_url进行一系列操作,解析其真实视频地址和其视频相关的一些信息,例如视频的名称、ID、观看数、点赞数、评论数等,最后将其视频下载到本地文件夹内,然后将其他的信息保存至mysql数据库中。(目前项目还在开发当中,尽情期待新的内容)<br> 那么如何由网站的视频地址找到其视频的真实地址呢?<br> 我们一步一步来看O(^_^)O(最新一期加入了视频评论部分,最近比较忙,等过段时间继续优化与文档说明)<br>
资源推荐
资源详情
资源评论
收起资源包目录
Python爬虫-视频下载.zip (89个子文件)
VideoSpider-master
thread
__init__.py 0B
fh_callback.pyc 2KB
thread_wy.pyc 2KB
thread_rr.py 2KB
thread_sh_test.py 539B
thread_mg.py 2KB
fh_callback.py 2KB
mg_callback.py 2KB
thread_rr.pyc 2KB
wy_callback.pyc 2KB
sh_callback.py 2KB
thread_mg_test.py 502B
thread_fh.py 2KB
thread_sh.pyc 2KB
rr_callback.py 1KB
thread_fh_test.py 498B
thread_wy_test.py 499B
rr_callback.pyc 2KB
wy_callback.py 2KB
thread_wy.py 2KB
thread_sh.py 3KB
thread_rr_test.py 487B
sh_callback.pyc 2KB
thread_fh.pyc 2KB
__init__.py 0B
main.py 8KB
src
__init__.py 0B
progressbar.pyc 2KB
message.pyc 618B
timenow.pyc 810B
progressbar.py 2KB
log.pyc 779B
timenow.py 312B
data.pyc 1KB
data.py 1KB
__init__.pyc 144B
log.py 309B
filesize.py 446B
message.py 379B
messageparse
__init__.py 71B
souhu.pyc 2KB
wangyi.py 3KB
fenghuang.py 4KB
mangotv.pyc 3KB
wangyi.pyc 3KB
renren.py 3KB
__init__.pyc 153B
mangotv.py 4KB
fenghuang.pyc 4KB
souhu.py 2KB
renren.pyc 3KB
videodownload
__init__.py 0B
download.py 2KB
__init__.pyc 154B
download.pyc 2KB
videocheck
__init__.py 0B
lostupadte.pyc 4KB
urlcheck.py 3KB
videoupdate.py 10KB
urlcheck.pyc 2KB
messupdate.py 8KB
lostupadte.py 6KB
lostmess.py 4KB
commentupdate.pyc 9KB
videoupdate.pyc 9KB
__init__.pyc 152B
commentupdate.py 12KB
lostmess.pyc 4KB
messupdate.pyc 5KB
videoparse
__init__.py 0B
souhu.pyc 4KB
wangyi.py 6KB
fenghuang.py 5KB
mangotv.pyc 4KB
wangyi.pyc 5KB
renren.py 2KB
__init__.pyc 149B
mangotv.py 6KB
fenghuang.pyc 4KB
souhu.py 6KB
renren.pyc 2KB
__init__.pyc 140B
videomysql
__init__.py 72B
video_mysql.py 6KB
video_mysql.pyc 5KB
__init__.pyc 151B
README.md 47KB
messagemysql
__init__.py 72B
message_mysql.py 3KB
共 89 条
- 1
资源评论
- CB_Chen2024-04-29资源质量不错,和资源描述一致,内容详细,对我很有用。
武昌库里写JAVA
- 粉丝: 7044
- 资源: 3205
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- RC振荡电路——文氏桥振荡电路(OP07仿真)_文氏桥振荡器-CSDN博客.mhtml
- vs2022安装包,推荐安装社区版
- 固件开发项目实例1000例实例(26)--智能家居安全系统的固件设计.docx
- 固件开发项目实例1000例实例(24)--智能健康手环的固件设计.docx
- 基于Simulink的小波变换滤波器.docx
- 吉林大学2024就业质量年度报告
- 常用工具:谷歌浏览器安装包
- FPC0.5立贴, footprint expert封装
- DigiShow 教程5 艺术灯光应用
- DigiShow 教程6 数码音乐应用
- pikachu-master.zip
- DigiShow 教程7 互动装置应用
- DigiShow 教程8 表达式和脚本
- Word自动填表组件-发票打印,报名表自动生成
- FPC0.5l立贴, footprint expert封装
- 复旦大学计算机网络课后习题及答案.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功