Python-爬取校花网视频(单线程和多线程版本)
一、参考文章
python爬虫爬取校花网视频,单线程爬取
爬虫----爬取校花网视频,包含多线程版本
上述两篇文章都是对校花网视频的爬取,由于时间相隔很久了,校花网上的一些视频已经不存在了,因此上述文章中的代码在运行时会出现一些异常,本篇文章主要是对上述文章中的代码进行了优化和异常处理,在次做笔记记录方便以后查阅,修改如下:
1、添加的异常处理如下红色部分代码
二、单线程版本
#-*- coding=utf-8 -*-
import re
import requests
import hashlib
import time
import os header = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 UBrowser/6.1.2107.204 Safari/537.36',
'Referer':'http://www.xiaohuar.com'
} def get_index(url):
respose = requests.get(url, headers = header)
if respose.status_code == 200:
return respose.text def parse_index(res):
urls = re.findall(r'class="items".*?href="(.*?)"', res, re.S) # re.S 把文本信息转换成1行匹配
return urls def get_detail(urls):
for url in urls:
if not url.startswith('http'):
url='http://www.xiaohuar.com%s' %url
result = requests.get(url, headers = header)
if result.status_code == 200 :
mp4_url_list = re.findall(r'id="media".*?src="(.*?)"', result.text, re.S)
if mp4_url_list:
mp4_url = mp4_url_list[0]
save(mp4_url) path = os.getcwd() + '/video/' def save(url):
try:#下载视频加异常处理
video = requests.get(url, headers = header)
except requests.exceptions.RequestException as e :
print(repr(e))
return if video.status_code == 200:
m = hashlib.md5()
m.update(url.encode('utf-8'))
m.update(str(time.time()).encode('utf-8'))
filename = r'%s.mp4' % m.hexdigest()
filepath = path + filename
print(filepath)
with open(filepath, 'wb') as f:
f.write(video.content)
else:
print(f'视频不存在了:{url}') def main():
for i in range(5):
res1 = get_index('http://www.xiaohuar.com/list-3-%s.html' % i )#拿第一页数据
res2 = parse_index(res1)#提取第一页上的所有url
get_detail(res2)#下载url集合上的视频 if __name__ == '__main__':
main()
三、多线程版本
#-*- coding=utf-8 -*-
# 异步,多线程优化下载速度 import requests
import re
import os
import hashlib,time
from concurrent.futures import ThreadPoolExecutor p = ThreadPoolExecutor(30) def get_index(url):
response = requests.get(url)
if response.status_code == 200:
return response.text def parse_index(res):
res = res.result()
urls = re.findall(r'class="items".*?href="(.*?)"', res, re.S) p.submit(get_detail, urls) def get_detail(urls):
for url in urls:
if not url.startswith('http'):
url='http://www.xiaohuar.com%s' %url
r1=requests.get(url)
if r1.status_code == 200:
url_list=re.findall(r'id="media".*?src="(.*?)"', r1.text, re.S)
if url_list:
mp4_url = url_list[0]
save(mp4_url) path = os.getcwd() + '/video_mutil/'
if not os.path.exists(path):
os.makedirs(path) def save(url):
try:#下载视频做异常处理,视频可能不存在了
r2 = requests.get(url)
except requests.exceptions.RequestException as e :
print(repr(e))
return if r2.status_code == 200:
m=hashlib.md5()
m.update(url.encode('utf-8'))
m.update(str(time.time()).encode('utf-8'))
filename = '%s.mp4' %m.hexdigest()
file_path = path + filename
with open(file_path,'wb') as f:
f.write(r2.content)
print('视频下载完成:%s' % file_path)
else:
print(f'视频不存在了:{url}') def main():
for i in range(5):
p.submit(get_index, 'http://www.xiaohuar.com/list-3-%s.html' % i).add_done_callback(parse_index) if __name__ == '__main__':
main()
四、资源下载
资源下载地址:Python爬取校花网视频-单线程和多线程版本
转载声明:本站文章无特别说明,皆为原创,版权所有,转载请注明:朝十晚八
Python-爬取校花网视频(单线程和多线程版本)的更多相关文章
- python爬虫基础应用----爬取校花网视频
一.爬虫简单介绍 爬虫是什么? 爬虫是首先使用模拟浏览器访问网站获取数据,然后通过解析过滤获得有价值的信息,最后保存到到自己库中的程序. 爬虫程序包括哪些模块? python中的爬虫程序主要包括,re ...
- Go语言实战-爬取校花网图片
一.目标网站分析 爬取校花网http://www.xiaohuar.com/大学校花所有图片. 经过分析,所有图片分为四个页面,http://www.xiaohuar.com/list-1-0.htm ...
- python实战项目 — 爬取 校花网图片
重点: 1. 指定路径创建文件夹,判断是否存在 2. 保存图片文件 # 获得校花网的地址,图片的链接 import re import requests import time import os ...
- scrapy爬取校花网男神图片保存到本地
爬虫四部曲,本人按自己的步骤来写,可能有很多漏洞,望各位大神指点指点 1.创建项目 scrapy startproject xiaohuawang scrapy.cfg: 项目的配置文件xiaohua ...
- Scrapy爬虫框架之爬取校花网图片
Scrapy Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中.其最初是为了页面抓取 (更确切来说, 网络抓取 )所设 ...
- 第六篇 - bs4爬取校花网
环境:python3 pycharm 模块:requests bs4 urlretrieve os time 第一步:获取网页源代码 import requests from bs4 imp ...
- Python爬虫训练:爬取酷燃网视频数据
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 项目目标 爬取酷燃网视频数据 https://krcom.cn/ 环境 Py ...
- Python之爬虫-校花网
Python之爬虫-校花网 #!/usr/bin/env python # -*- coding:utf-8 -*- import re import requests # 拿到校花网主页的内容 re ...
- Python爬取中国天气网
Python爬取中国天气网 基于requests库制作的爬虫. 使用方法:打开终端输入 “python3 weather.py 北京(或你所在的城市)" 程序正常运行需要在同文件夹下加入一个 ...
随机推荐
- JS window对象的top、parent、opener含义介绍(转载)
1.top该变更永远指分割窗口最高层次的浏览器窗口.如果计划从分割窗口的最高层次开始执行命令,就可以用top变量. 2.openeropener用于在window.open的页面引用执行该window ...
- C/C++静态代码安全检查工具
静态代码安全检查工具是一种能够帮助程序员自动检测出源程序中是否存在安全缺陷的软件.它通过逐行分析程序的源代码,发现软件中潜在的安全漏洞.本文针对 C/C++语言程序设计中容易存在的多种安全问题,分别分 ...
- 如何书写一篇能看懂的html和CSS代码
在书写html和CSS过程中,如果只是想要实现网页的外观和基本功能,那么简单的书写代码就可以满足需求,甚至不需要使用类名或者注释等.但实际上,这么写肯定是不行的,首先对于类同结构的重复书写就是一件很浪 ...
- mysql性能调优与架构设计笔记
1.mysql基本介绍 mysql支持多线程高并发的关系型数据库; 数据库存储引擎InnoDB.MyISAM; mysql快速崛起的原因就是他是开源的; 性能一直是mysql自豪的一大特点; 2.my ...
- WBS 与 甘特图
WBS:工作分解结构(Work Breakdown Structure) 创建WBS:创建WBS是把项目 交付成果和项目工作分解成较小的,更易于管理的组成部分的过程. WBS是项目管理重要的专业术语之 ...
- IM进化论:腾讯也难逃被颠覆掉的命运
在一定程度上,腾讯代表了中国IM领域的过去和未来.但有句俗话,后来推前浪,前浪被拍死在沙滩上,"生死腾讯"也总会变为生和死,因为腾讯很可能会有被颠覆掉的一天.腾讯的IM接口是个庞然 ...
- echarts--迁徙图特性简介
$(function() { loadMapData(); //页面加载时调用封装加载echarts地图的函数});function loadMapData (cityName) { if ...
- (转)JAVA HashSet 去除重复值原理
Java中的set是一个不包含重复元素的集合,确切地说,是不包含e1.equals(e2)的元素对.Set中允许添加null.Set不能保证集合里元素的顺序. 在往set中添加元素时,如果指定元素不存 ...
- Unity 从StreamingAssets文件夹和PersistentData文件夹 保存读取AssetBundle资源
项目中的资源一般我们打包成AssetBundle格式 方便我们加载和热更 而AssetBundle文件 一般保存在StreamingAssets文件夹或则PersistentData文件夹 首先我们看 ...
- Shell 起停脚本 专题
To list any process listening to the port 8080: lsof -i:8080To kill any process listening to the por ...