写在前面

爬虫和自动测试,对于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的自动测试利器的更多相关文章

  1. Jenkins持续集成项目搭建与实践——基于Python Selenium自动化测试(自由风格)

    Jenkins简介 Jenkins是Java编写的非常流行的持续集成(CI)服务,起源于Hudson项目.所以Jenkins和Hudson功能相似. Jenkins支持各种版本的控制工具,如CVS.S ...

  2. web自动化 基于python+Selenium+PHP+Ftp实现的轻量级web自动化测试框架

    基于python+Selenium+PHP+Ftp实现的轻量级web自动化测试框架   by:授客 QQ:1033553122     博客:http://blog.sina.com.cn/ishou ...

  3. 一次完整的自动化登录测试-基于python+selenium进行cnblog的自动化登录测试

    Web登录测试是很常见的测试!手动测试大家再熟悉不过了,那如何进行自动化登录测试呢!本文作者就用python+selenium结合unittest单元测试框架来进行一次简单但比较完整的cnblog自动 ...

  4. 一次简单完整的自动化登录测试-基于python+selenium进行cnblog的自动化登录测试

    Web登录测试是很常见的测试,手动测试大家再熟悉不过了,那如何进行自动化登录测试呢!本文就基于python+selenium结合unittest单元测试框架来进行一次简单但比较完整的cnblog自动化 ...

  5. 基于Python的AT命令测试脚本

    对于各种有线&无线调制解调器(modem)产品来说,AT命令是事实上的标准接口之一,在工业界被广泛使用. 我开发了一套基于Python的AT命令测试脚本,源代码可在github上获取: htt ...

  6. EasyDarwin开源音频解码项目EasyAudioDecoder:基于ffmpeg的安卓音频(AAC、G726)解码库(第一部分,ffmpeg-android的编译)

    ffmpeg是一套开源的,完整的流媒体解决方案.基于它可以很轻松构建一些强大的应用程序.对于流媒体这个行业,ffmpeg就像圣经一样的存在.为了表达敬意,在这里把ffmpeg官网的一段简介搬过来,ff ...

  7. python爬虫实例——基于python实现有道云翻译接口

    # 分析包# 分析post请求中参数# 使用python模拟lts.sign.salt参数运算# 执行结果> > 1.按F12对网页进行分析,填写内容后自动翻译的功能一般是通过ajax实现 ...

  8. [转载]Jenkins持续集成项目搭建与实践——基于Python Selenium自动化测试 -2

    自己的代码 import unittest # import HTMLTestRunner_cn as HTMLTestRunner import xmlrunner import sys sys.p ...

  9. Jenkins持续集成项目搭建——基于Python Selenium自动化测试

    参考链接:https://www.liaoxuefeng.com/article/1083282007018592 第一步:去官网https://jenkins.io/下载最新的war包 第二步:安装 ...

随机推荐

  1. Android提升Gradle编译速度或减少Gradle编译时间.md

    目录 Android如何提升Gradle编译速度或减少Gradle编译时间 最终优化方案 优化效果比对 将所有项目源码,各种缓存临时目录都移动到高性能SSD磁盘上 gradle.properties ...

  2. Python实现的计算马氏距离算法示例

    Python实现的计算马氏距离算法示例 本文实例讲述了Python实现的计算马氏距离算法.分享给大家供大家参考,具体如下: 我给写成函数调用了 python实现马氏距离源代码:     # encod ...

  3. delphi读写INI系统配置文件

    delphi读写INI系统配置文件 一.调用delphi内建单元 uses System.IniFiles; .使用类TIniFile .类TIniFile的主要方法和函数: {$IFDEF MSWI ...

  4. V8的垃圾回收和内存限制

    V8的垃圾回收和内存限制 前言 在第三次浏览器大战中,来自Google的Chrome浏览器凭借优异的性能成为聚光灯下的焦点.而Chrome的成功离不开站在其背后的JavaScript引擎V8. 随着V ...

  5. 【CSS】聊一聊css的选择器

    对于css来说,他的基本语法就是 选择器 {           K:V;           K:V;           K:V       } 所以css的学习就分为两个部分: * 1  选择器 ...

  6. LeetCode刷题2——颠倒二进制位

    一.题目要求 二.题目背景 此题依旧属于位运算范畴 知识点1:有符号和无符号二进制是怎样表现的? 对于有符号数,最高位为1说明是个负数 知识点2:进制之间的相互转换 (1)十进制转十六进制 hex(n ...

  7. APP安全_Android反编译

    反编译 Android的反编译工具:apktool,JEB等. Apk 文件的结构,如下: META-INF:签名文件 res:资源文件,里面的 xml 格式文件在编译过程中由文本格式转化为二进制的 ...

  8. C#ModBus Tcp

    C#ModBus Tcp 报文解析   上一篇博客已经完成 C#ModBus Tcp Master的实现 本篇主要对不同的功能码所发出的报文进行解析(包括请求报文及响应报文) 读操作 功能码 0x01 ...

  9. prometheus 监控 jar应用服务 + 修改监听IP和端口

    1.修改服务的启动脚本 [root@do1cloud01 init.d]# vim learn-school nohup ${JAVA_HOME}/bin/java -javaagent:/usr/l ...

  10. Javadoc文档生成工具-自定义版

    先上图来一波 本身JDK自带了doc文档生成工具,但是不支持排除类,方法,属性,虽然有个@deprecated可以使用,但是达不到我想要的结果(类会被标记为废弃类,编译使用时会提示), 而且类说明示例 ...