import requests
import re
import hashlib,time def get_index(url):
response=requests.get(url)
if response.status_code == 200:
return response.text def parse_index(res):
urls=re.findall(r'class="items".*?href="(.*?)"',res,re.S)
return 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]
# print(mp4_url)
save(mp4_url) def save(url):
print('Download:%s' %url)
r2=requests.get(url)
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=r'D:\\爬虫视频\%s' % filename
with open(file_path,'wb') as f:
f.write(r2.content) def main():
for i in range(5):
res1=get_index('http://www.xiaohuar.com/list-3-%s.html' %i)
res2=parse_index(res1)
get_detail(res2) if __name__ == '__main__':
main()

基于上面代码开多线程爬取视频,优化下载速度

# 异步,多线程优化下载速度

import requests
import re
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)
# return urls
for url in urls:
p.submit(get_detail,url) 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]
# print(mp4_url)
save(mp4_url) def save(url):
print('Download:%s' %url)
r2=requests.get(url)
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=r'D:\\爬虫视频\%s' % filename
with open(file_path,'wb') as f:
f.write(r2.content) 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)
# res1=get_index('http://www.xiaohuar.com/list-3-%s.html' %i)
# res2=parse_index(res1)
# get_detail(res2) if __name__ == '__main__':
main()

最新文章

  1. mouseover事件与mouseenter事件的区别
  2. SpirentTestcenter测试仪的自动化
  3. Dubbo中服务消费者和服务提供者之间的请求和响应过程
  4. angular2监听页面大小变化
  5. 贝叶斯定理推导(Bayes' Theorem Induction)
  6. 自学Linux Shell9.4-基于Red Hat系统工具包存在两种方式之二:源码包
  7. Maven命令行使用 mvn clean package
  8. Queue-621. Task Scheduler
  9. 更改 pandas dataframe 中两列的位置
  10. 王者荣耀交流协会scrum立会20171111
  11. autocomplete.jquery 点击或进入默认显示所有结果
  12. 无序数组中第Kth大的数
  13. C# 路径的使用
  14. 【Python实例二】之前期准备:Windows下的BeautifulSoup安装
  15. 3.5.基于STC89C52+MC20的短信远程控制开关LCD1602显示
  16. DAY15-HTTP协议简述
  17. ES Docs-1:Installation Elasticsearch-2.3.1
  18. 春哥的nginx systemtap调试脚本简单介绍
  19. XON/OFF
  20. Unity5.1 新的网络引擎UNET(八) UNET 系统概括

热门文章

  1. TensorFlow高级API(tf.contrib.learn)及可视化工具TensorBoard的使用
  2. Alpha冲刺——第四天
  3. 最多水容器(M)
  4. SQL Server之看懂执行计划
  5. 封装字符串的Format操作
  6. Redis 学习之数据类型
  7. 学习 SQL 语句 - Select(9): 其他
  8. mac终端命令-----常规操作
  9. BZOJ4514:[SDOI2016]数字配对——题解
  10. JavaScript关键字return的用法