开源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包 第二步:安装 ...
随机推荐
- solr 初接触
solr教程,值得刚接触搜索开发人员一看 http://blog.csdn.net/awj3584/article/details/16963525
- Android编译异常` Cause: duplicate entry: META-INF/MANIFEST.MF`
目录 Android编译异常Cause: duplicate entry: META-INF/MANIFEST.MF 解决方案2: 治标又治本(暂无) 解决方案1: 治标不治本(还原大法) 参考资料 ...
- python用cx_Oracle连接oracle
确认版本: oracle版本:64位 python版本:64位 下载cx_Oracle的whl包:64位 安装whl包:pip install wheel cd到下载路径安装cx_Oracle的whl ...
- partprobe 和 partx 的用法
partprobe: 用于重读分区表,当出现删除文件后,出现仍然占用空间.可以partprobe在不重启的情况下重读分区. 将磁盘分区表变化信息通知内核,请求操作系统重新加载分区表. -d 不更新内核 ...
- IPv6 ping命令
IPv6 ping命令 一.Linux操作系统 给一台 Linux 主机分配了一个 IPv6 的 IP地址,如何使用 ping命令 确定该 IP地址 能否 ping 通呢? 1.查看主机的 IPv6 ...
- Python中类的继承代码实例
Python中类的继承代码实例 这篇文章主要介绍了Python中类的继承代码实例,本文直接给出代码及运行效果,需要的朋友可以参考下 相对于C 的继承编写,Python更简洁,而且效率也是很高的,下面编 ...
- Kafka相关概念及核心配置说明
1. Kafka简介 Kafka是最初由Linkedin公司开发,是一个分布式.支持分区的(partition).多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特性 ...
- jquery中对地址中的中文进行encodeURI编码
传递参数:<script type="text/javascript"> var id= 'abc'; //字符串英文 var num = 998; ...
- SaCa CDC产品简介
1.1 产品简介 东软SaCa™ CDC实时增量数据捕获平台(以下简称SaCa™ CDC)是一款高度可扩展.可靠和易于配置的异构实时事务复制软件,能够提供异构环境下数据的实时捕捉和交付数据,以独立 ...
- PJzhang:kali linux安装virtualbox虚拟机和chrome浏览器
猫宁!!! 参考链接: https://www.cnblogs.com/zhishuai/p/8007410.html kali linux 安装virtualbox. 查询系统的版本 apt-cac ...