定向爬虫规则管理问题

2014-02-19 19:37:35 +08:00
 lazybios
情景:针对目标网站内容,写了特定的爬虫脚本,爬取规则是通过正则之类的字符串匹配,比较得到的

问题:如果目标网站更改了前端代码,还要重新分析改写脚本规则,这些规则都是硬编码到脚本中的,有没有优雅高效的方法来管理规则,做到规则与脚本逻辑分离 或者是否有其它好的的爬法?

另外如果有相关可参考的开源代码麻烦贴一下地址 :)
3345 次点击
所在节点    Python
6 条回复
tonyseek
2014-02-19 22:41:50 +08:00
[这样写](http://brownant.readthedocs.org/en/0.1.4/userguide/quickstart.html#the-declarative-demo)如何?

Brownant 是我在维护的的一个项目,解决的主要就是定向爬虫。爬虫规则通过定制的 `PipelineProperty` 描述性地写在类里,和 Homebrew 的那种方式有点像。
lazybios
2014-02-19 23:46:41 +08:00
@tonyseek
我好研究研究去
有次不知道在哪里看到一个帖子,说的大概是用xml配置,来解决的,每次规则过时以后只需要调整xml就可以了,感觉这样比较省事,当时没有写这方面的程序,所以只记住了点大概思路,后面的细节就断篇了...
family
2014-02-20 07:13:41 +08:00
配置在数据库
yakczh
2014-02-20 11:29:19 +08:00
下载,抽取链接放到队列里这都是一样的,不一样的是抽取数据部分,这部分可以把解析代码当成配置数据, 根据不同站点不同url规则动态载入, python怎么样传入一段字符串的代码eval动态执行 ,不过这比较丑陋,有没有优雅一点的方法?
yaotian
2014-02-20 12:12:01 +08:00
配置文件,抓不到了,收到邮件。所有规则都配置文件,修改配置文件,自动生效。见我的lumeinv.com (上班期间要小心)
tonyseek
2014-02-21 10:32:59 +08:00
@lazybios XML 或者其他方式的静态配置写定向爬虫貌似不是很灵活,比如某个标签的内容需要过滤掉一些文本,或者在出现某些文本的时候抛出指定的异常,静态的配置就完全无力了。又或者你需要抓取的网站用 AJAX 来载入部分信息,你可以就要在一次抓取中多次走 请求-抽取 的过程,这也是为何我之前遇到类似需求,没有直接用 Scrapy 的原因。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/100959

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX