可视化爬虫 Portia 试用体验

  • A+
所属分类:python网络爬虫

可视化爬虫 Portia 试用体验

作者:大鱼

来源:http://brucedone.com/archives/986

缘起

最近一直在思考如何更改智能化抓取的事情,每当来了一个新的 task,都要自己手动分析,手动写 xpath ,然后写正则,各种测试,各种部署,其实说来,这些事情的重复度很高,那我们能不能把一些重复性的动作抽象出来,做成一个独立的单元呢?在参考佷多类似的自动化的工具之后,猜想了如下的动作是可以抽象出来的

开始页的格式化

比如 http://www.cnblogs.com/#1 http://www.cnblogs.com/#2 这种页面都是规则的,直接生成这些待跑的页面,然后放入,然后有一个上下页面的逻辑联系

xpath 提取的鼠标化和输入化

这一点显的相当重要,可以说如果能解决这个问题,就可以提高很高的生产效率,我们大部分的时间都花在写 xpath,调试这个上面了,所以能通过点点点解决写代码的时间,就会很方便(这样可能会有一个问题,浏览器拿出来的 xpath 和你正常的 xpath 不一样,所以还得区分渲染前后渲染后的)

数据清洗的常规化

比如提取数字,字母,或者特定的内容,如果把这些内容也方便能过鼠标点击出来,也会给清洗方便很多(可以考虑这些都做成插件)

是否启用 JS

渲染问题

数据 pipeline 的流向

输入到各种数据库里面,不过,这个数据考虑输入到中间件里面。由中间件负责输送到不同类似的目的地里面

安装

关于安装,我个人推荐使用 docker ,不建议使用官方的最新镜像,有一些问题一直没有解决,我在尝试了另外一个版本之后直接使用如下命令

  1. docker run -d -v /Users/brucedone/Data/portia:/app/slyd/data:rw -p 9001:9001 --name portia scrapinghub/portia:portia-2.0.5

特定的版本下我试过是没有问题的,推荐大家就用这个版本,这样这个服务就已经开启了

使用

新建 project

打开本地浏览器 http://127.0.0.1:9001/,打开之后就可以看到主界面了

可视化爬虫 Portia 试用体验

首先创建一个项目,这点应该和 scrapy start project 一样,然后进入到里面,输入你想爬的网址

新建 spider

假设输入的是一个相册 https://www.douban.com/photos/album/79005353/,然后进入可编辑的界面,点击New Spider

http://brucedone.com/wp-content/uploads/2017/03/blog3.png

进入面板

可视化爬虫 Portia 试用体验

  • Project

  • Spider

  • Start_pages

  • Link Crawling

  • Sample Pages

以上的几个属性在我们熟悉了 scrapy 之后就了解是什么东西了,除了最后一个,sample pages,我们看一下的解释

  1. Navigate to a web page that has the data you need, and create a new sample page to begin annotating the data.

简而言之就是一个数据模板,当爬虫爬取这些页面的时候就可以按照你的模板来提取你要的数据,所以先要制作这样的模板,才能进行数据的进一步操作

操作模板

可视化爬虫 Portia 试用体验

这个时候进入到数据侦测状态,新建一个 item,现在开始黑魔法阶段

选择工具

选中 这个工具,点击你想要的元素,比如我选择了图片,评论,回应三个字段

可视化爬虫 Portia 试用体验

另外,字段类型已经提供好了相应的数据清洗,比如我只要 text ,或者只要 number,选中之后右的数据栏就会相应的变化(不得不说,简化了相当多的操作啊)

可视化爬虫 Portia 试用体验

黑魔法-同类选择

这些元素选择完成之后,现在进入黑魔法阶段,点击-右边的列表选项

可视化爬虫 Portia 试用体验

我们根据当前的字段颜色再次选中列表中的其它元素

可视化爬虫 Portia 试用体验

是不是相当的神奇,这样就可以将同节点下的相同元素都筛选出来,右边的结果也可以以 json 显示

可视化爬虫 Portia 试用体验

总结

本次主要从

  • 安装

  • 使用

  • 想法

这几个角度来分析了问题,下期我将从实用,功能,拓展的角度来分析如何用到生产线上,如果我的文章对大家有帮助的话,请不要吝惜您的赞或者打赏,谢谢 :)

题图:pexels,CC0 授权。

weinxin
我的微信公众号
爱真理,得永生!          爱在灵灵久博客,网罗天下,福利大家!

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: