写在前面

爬虫和自动测试,对于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. springboot-helloworld-idea

    1.file-new-project-Spring Initializr-next:输入项目信息-next:web-next-finish 2.创建controller包 3.创建StudyContr ...

  2. springboot-RequestMappingHandlerMapping

    作用:查看应用请求对应的ur和方法l情况 实例: RequestMappingHandlerMapping mapping =applicationContext.getBean("requ ...

  3. iscsi-文件类型

    iSCSI简介(Internet SCSI): iSCSI 小型计算机系统接口,IBM公司研发,用于在IP网络上运行SCSI协议:解决了 SCSI需要直连存储设备的局限性:可以不停机扩展存储容量,iS ...

  4. 产品之我见(3)-ZEN在产品上的延伸

    ZEN 在WIKIPEDIA上的解释是这样的: 禅,禅宗强调严格的自我控制能力,冥想实践,洞察到的事物性质,而这种洞察力在日常生活中的个人表达,尤其是为了别人的利益. 因此,它不再强调对经典和学说的了 ...

  5. CSP考试策略

    准备 带好手表,身份证,准考证,文具,和矿泉水(热水). 考试之前 如果时间比较充足,可以重启测试保护是否解开. 调整显示屏亮度,检查键盘.鼠标. 关掉拓展名隐藏. 写个简单程序测试是否有异常,测试对 ...

  6. sha256算法原理

    1. SHA256简介 SHA256是SHA-2下细分出的一种算法 SHA-2下又可再分为六个不同的算法标准 包括了:SHA-224.SHA-256.SHA-384.SHA-512.SHA-512/2 ...

  7. java8函数式接口(Functional Interface)

    介绍 函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口. 函数式接口可以被隐式转换为 lambda 表达式(箭头函数). 函数式接口代 ...

  8. mysql数据库之事务与存储过程

    事务 什么是事务? 事务是指一些SQL语句的集合,这些语句同时执行成功完成某项功能 事务的CAID特性: 原子性:一个事务的执行是整体性的,要么内部所有语句都执行成功,要么一个都别想成功 一致性:事务 ...

  9. day22 subprocess、configeparser、表格操作模块

    今日内容: 1.configparser模块的使用 2.subprocess模块的使用 3.表格处理模块 xlrd模块 xlwt模块 1.configparser模块 configparser模块是用 ...

  10. Macaca环境搭建(四)----mac系统macaca安装

    一.安装Homebrew 命令:/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/insta ...