开源you-get项目爬虫,以及基于python+selenium的自动测试利器
写在前面
爬虫和自动测试,对于python来说是最合适不过也是最擅长的。
开源的项目也很多,例如you-get项目https://github.com/soimort/you-get。盗链和爬虫神器。
python+selenium一般用来做自动化测试,也可以用来抽取 html的dom元素,从而作为前端的爬虫使用
这些功能对于一些非常规的需求和自动化测试,可以说是量身打造的。
you-get
you-get支持的网站,都是直接破解其算法,直接算出playurl的方式,假如有分片,还可以用ffmepg来进行合并。
不仅仅能抓取目标的封面,标题描述等信息,还可以下载源视频,非常的好用。
补充一个you-get没有的c站的盗链php版本代码。
$client = new Client(['cookies' => true]);
$playUrl = $request->get('playUrl');
$htmlRes = $client->request('GET', $playUrl);
$html = $htmlRes->getBody()->getContents();
preg_match_all( '/(?mi-Us)<li>type=(\\d+)&vid=([^\\|]+)\\|<\/li>/', $html, $rxMatches) ;
$type = $rxMatches[1][0];
$vid = $rxMatches[2][0]; $apiUrl = self::API_URL; $res = $client->request('GET', $apiUrl, [
'query' => [
'type' => $type,
'vid' => $vid
]
]);
$xmlData = $res->getBody()->getContents(); $xmlData = simplexml_load_string($xmlData);
$mp4Url = (string)$xmlData->durl->url;
上述用到 Guzzle :功能很完善的 httpclient ,带异步并发功能,别的脚本语言找不到这么好的 httpclient
c站的防盗链还是比较简单,直接暴露了请求的playurl的参数在dom上。另外加上了cookie的验证。
注意到'cookies' => true,可以把第一次请求的地址生成的cookie,保存在client,第二次请求的时候,会自动带上cookie,从而破解了cookie的验证限制。
python+selenium
自动化测试利器,高端测试或者自带测试功能的程序员,应该需要多了解和学习。而且非常的简单,举个简单的例子:
from selenium.webdriver.support import expected_conditions as EC from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait url = 'http://www.bilibili.com/video/av9733485/' browser = webdriver.PhantomJS()
browser.get(url)
wait = WebDriverWait(browser, 20)
element = wait.until(EC.presence_of_element_located((By.ID,'i_menu_login_btn')))
# b = browser.find_element_by_xpath("//div[@class='load-layer']/img").get_attribute('src') element.click()
模仿打开浏览器访问url,点击和查找元素,都可以轻松实现,减少重复机械化的人工成本。
开源you-get项目爬虫,以及基于python+selenium的自动测试利器的更多相关文章
- Jenkins持续集成项目搭建与实践——基于Python Selenium自动化测试(自由风格)
Jenkins简介 Jenkins是Java编写的非常流行的持续集成(CI)服务,起源于Hudson项目.所以Jenkins和Hudson功能相似. Jenkins支持各种版本的控制工具,如CVS.S ...
- web自动化 基于python+Selenium+PHP+Ftp实现的轻量级web自动化测试框架
基于python+Selenium+PHP+Ftp实现的轻量级web自动化测试框架 by:授客 QQ:1033553122 博客:http://blog.sina.com.cn/ishou ...
- 一次完整的自动化登录测试-基于python+selenium进行cnblog的自动化登录测试
Web登录测试是很常见的测试!手动测试大家再熟悉不过了,那如何进行自动化登录测试呢!本文作者就用python+selenium结合unittest单元测试框架来进行一次简单但比较完整的cnblog自动 ...
- 一次简单完整的自动化登录测试-基于python+selenium进行cnblog的自动化登录测试
Web登录测试是很常见的测试,手动测试大家再熟悉不过了,那如何进行自动化登录测试呢!本文就基于python+selenium结合unittest单元测试框架来进行一次简单但比较完整的cnblog自动化 ...
- 基于Python的AT命令测试脚本
对于各种有线&无线调制解调器(modem)产品来说,AT命令是事实上的标准接口之一,在工业界被广泛使用. 我开发了一套基于Python的AT命令测试脚本,源代码可在github上获取: htt ...
- EasyDarwin开源音频解码项目EasyAudioDecoder:基于ffmpeg的安卓音频(AAC、G726)解码库(第一部分,ffmpeg-android的编译)
ffmpeg是一套开源的,完整的流媒体解决方案.基于它可以很轻松构建一些强大的应用程序.对于流媒体这个行业,ffmpeg就像圣经一样的存在.为了表达敬意,在这里把ffmpeg官网的一段简介搬过来,ff ...
- python爬虫实例——基于python实现有道云翻译接口
# 分析包# 分析post请求中参数# 使用python模拟lts.sign.salt参数运算# 执行结果> > 1.按F12对网页进行分析,填写内容后自动翻译的功能一般是通过ajax实现 ...
- [转载]Jenkins持续集成项目搭建与实践——基于Python Selenium自动化测试 -2
自己的代码 import unittest # import HTMLTestRunner_cn as HTMLTestRunner import xmlrunner import sys sys.p ...
- Jenkins持续集成项目搭建——基于Python Selenium自动化测试
参考链接:https://www.liaoxuefeng.com/article/1083282007018592 第一步:去官网https://jenkins.io/下载最新的war包 第二步:安装 ...
随机推荐
- 小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_1-1.SpringBoot整合微信支付开发在线教育视频站点介绍
笔记 第一章项目介绍和前期准备 1.SpringBoot整合微信支付开发在线教育视频站点介绍 简介: 课程介绍,和小D课堂在线教育项目搭建开发 1.课程大纲介绍 2.微信支付项 ...
- 编解码原理,Python默认解码是ascii
编解码原理,Python默认解码是ascii 首先我们知道,python里的字符默认是ascii码,英文当然没问题啦,碰到中文的时候立马给跪. 不知道你还记不记得,python里打印中文汉字的时候需要 ...
- ceph常用命令(3)
1.查看集群配置信息 ceph daemon /var/run/ceph/ceph-mon.$(hostname -s).asok config show 2.在部署节点修改了ceph.conf文件, ...
- 【破解APP抓包限制】Xposed+JustTrustMe关闭SSL证书验证!
转载:https://www.jianshu.com/p/310d930dd62f 1 前言 这篇文章主要想解决的问题是,在对安卓手机APP抓包时,出现的HTTPS报文通过MITM代理后证书不被信任的 ...
- Spring Boot Lombok配置
Spring Boot Lombok配置 依赖添加 dependencies { annotationProcessor 'org.projectlombok:lombok:1.18.2' compi ...
- 【计算机】hosts设置
2015 Google hosts 持续更新[更新于:2016-02-12] 老D 9个月前 (06-23) hosts 248,284 暂无评论 12798 文章目录[ 隐藏 ] 修改hosts的 ...
- Hbase和Hadoop的内存参数调优 + 前端控制台
1.hadoop的内存配置调优 mapred-site.xml的内存调整 <property> <name>mapreduce.map.memory.mb</name&g ...
- BiLSTM-CRF模型理解
适用任务 中文分词.词性标注.命名实体识别是自然语言理解中,基础性的工作,同时也是非常重要的工作. 在很多NLP的项目中,工作开始之前都要经过这三者中的一到多项工作的处理. 在深度学习中,有一种模型可 ...
- SpringBoot中使用aop-测试
面向切面编程(AOP),该种方式主要是为了弥补面向对象编程(OOP)的不足,通过配置切面以及关注点.通知等我们可以在程序的任意位置对我们的代码进行增强(执行一些代码),AOP是Spring的特性之一, ...
- [AcWing30]正则表达式匹配
[AcWing30]正则表达式匹配 请实现一个函数用来匹配包括'.'和'*'的正则表达式. 模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(含0次). 例如,字符串&quo ...