好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

开源you-get项目爬虫,以及基于python+selenium的自动测试利器

写在前面

爬虫和自动测试,对于python来说是最合适不过也是最擅长的。

开源的项目也很多,例如you-get项目https://github测试数据/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)type=(\\d+)&vid=([^\\|]+)\\|/',?$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测试数据mon.by?import?By
from?selenium.webdriver.support.wait?import?WebDriverWait


url?=?'http://HdhCmsTestbilibili测试数据/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的自动测试利器的详细内容...

  阅读:38次

上一篇: Python与机器学习

下一篇:python 笔记