网页中flash数据抓取(我分别用过三种方式写过一些简单的爬虫,解决了方法)

优采云 发布时间: 2021-12-19 06:02

  网页中flash数据抓取(我分别用过三种方式写过一些简单的爬虫,解决了方法)

  我用三种方式写了一些简单的爬虫。下面总结一下我对爬虫的理解和使用方法(欢迎指正和补充):

  使用任何语言的http库(比如python的urllib2,或者使用支持连接池的urllib3来提高效率),加上一个解析html的库(比如python的beautifulsoup)。使用urllib模拟get/post请求爬取网页,然后通过解析html库得到需要爬取的内容。如果可以获取一个页面的内容,就可以通过URL获取所有页面的内容。

  优点:直接,速度快,占用资源少,可以同时运行多个进程/线程,可以在命令行上完成

  缺点:这种方法的致命缺点是如果遇到的页面是通过js动态渲染或者通过ajax动态加载的,获取页面内容比较困难。这种情况下,还需要一个js解释器(也可以说是浏览器)来进一步分析,得到想要的内容。

  PS:遇到ip限制可以设置代理。

  使用firefox/chrome浏览器插件方式(即javascript+浏览器方式做爬虫)。使用firefox插件,不存在跨域访问提交问题。下面是我去年写的一个简单的firefox插件爬取论文网站的作者/邮箱的firefox插件比较粗糙,但基本流程通用。基本原理是在浏览器加载页面后,使用javascript/jquery模拟点击等事件,获取相应的内容,然后Post到远程服务器的url进行处理保存。或者写入浏览器的本地存储(如sqlite)

  优点:直观,纯js实现,jquery简单易用,调试方便,解决了方法1的动态内容渲染问题,可以与浏览器交互,轻松解决验证码输入限制

  缺点:必须依赖本地浏览器,速度慢,比方法1消耗资源,进程/线程多,或多或少需要考虑干预(因为我的代码写得不好...)

  第三种方法使用了一个叫selenium-automated browser的神器,它是一个支持多语言界面的库,通过它你可以使用java/python/ruby等语言来操作浏览器(firefox/chrome等)完成任务,通常用于测试前端代码。这样写的爬虫,或者用python/java等语言写主要结构(分析和修改数据,存入数据库等),通过selenium js/jquery接口完成渲染和触发的网页内容。

  优点:结合了方法一和方法二的大部分优点。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线