您的位置:首页 > 编程语言 > Python开发

python 模拟抓取网页的工具包

2016-04-28 10:52 295 查看
这段时间在尝试破解各大网站的登录系统,同时又要避开人机识别码的验证,通过chrome的js调试器不断尝试深入了解各网站系统的登录流程及验证过程,总结发现了几款非常实用的工具包,对于抓取网站数据或是执行js脚本等非常有帮助,大大提高开发的效率,具体的开发细节不便透露,简要介绍下使用的工具包:

1,python

目前开发已经逐渐适应了python的简洁高效,有太多强大的工具包可支撑开发的需要,为开发者避开底层很多细节问题提供便利,为首先利器之一;

2,urllib,urllib2,cookielib,BeautifulSoup

之所以四个一起列出来,是因为这几个属于最基本的联合战队应用,通过这几个工具包基本可以应付平常的应用场景,解决工作中的基本需求,例如,urllib解决传输字符编码问题,urllib2提供访问的基本工具,包括cookies和代理访问等,cookielib则是解决登录问题中的缓存持续访问问题,而BeautifulSoup则为分析抓取网页内容提供强大的支撑力,四者配合足以应付日常需要;

3,PyV8

这个看似很简单的工具包提供了一个非常不错的应用场景,执行网页中嵌入的js代码,这为抓取通过js动态生产数据的网页提供了便利之处,优点是简洁方便易使用,但缺陷是不够灵活,不足以应付逻辑复杂的js代码执行任务,举个python范例:

import PyV8
with PyV8.JSContext() as ctxt:
func=ctxt.eval("""
(function(k){
hexcase = 0,b64pad = "",chrsz = 8;
function hello(k){
return k+"world"
}
k.rst = function(){return hello(chrsz+"abc");}
return k.rst()
})(bd={})
""")
print func


4,phantomjs

为了应对网页中逐渐产生的人机识别等风控防范措施,这个工具包为大家提供了一个很好的执行方式,核心仍然是调用了浏览器内核实现页面的完全生成web页面然后返回给用户,通过调用自己的js代码能够高效的返回嵌入网页中的js代码,这个对于像某东在登录页产生的人机识别码fp及eid等提供了解决方案,抓取此类数据非常方便,但是遗憾的是交互性不够强,不足以模拟人机交互的实时场景,对于实时计算用户操作行为的这类人机识别方式很难解决,更关键的是目前提供的是exe的执行方式,附js代码:

var page = require('webpage').create();
page.open(url, function(status) {
var title = page.evaluate(function() {
return document.title;
});
console.log('Page title is ' + title);
phantom.exit();
});


5,selenium

这个工具包堪称强大,因为它直接提供了一个浏览器内核实现的真实访问场景,通过该工具包可以实现页面的真实呈现,网页数据的实时交互,模拟用户的操作行为等,而且提供的是以python为基础的函数包,只需安装好必要环境及浏览器内核驱动等,便能通过代码高效实现各类应用场景,附基本代码以供学习:

from selenium import webdriver
browser = webdriver.Chrome(“chromedrive路径”)
baseurl = 'http://xxx.xxx.com'
browser.get(baseurl)
browser.find_element_by_id('token').get_attribute("value")


以上工具配合python提供的os.system或者subprocess.Popen等函数可以很好的解决代码调用问题。

其余更多的操作可参见:http://www.jianshu.com/p/2804823923b4

http://www.jianshu.com/p/3d84afc43d42
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python