用Hyer来进行网站的抓取
Hyer是我个人用来抓取站点内容的一个工具包。后来慢慢地想做成一个开源软件,现在它注册在http://www.github.com/xurenlu/hyer/ 上。
本文作为入门教程,以新华网作为例子,讲讲如何用hyer做网页抓取。
请从这里http://github.com/xurenlu/hyer/downloads下载hyer-0.6.12.tar.gz这个压缩包,解压。
我们要用的主要是webctl.py这个文件,我们需要对它进行一些修改。在修改之前,先创建一个数据库,将sql/struct.sql导入进去。
以下是代码片段: mysql> create database hyer; mysql > exit; $mysql -uroot hyer < sql/struct.sql |
然后我们打开webctl.py,修改几个地方:
以下是代码片段: conf={ "db_path":"./tmp/", #1 "feed":"http://www.xinhuanet.com/newscenter/index.htm", #"feed":"http://localhost/htests/", "max_in_minute":60, "agent":"Mozilla/Firefox", "same_domain_regexps":[re.compile("http://www.xinhuanet.com/")], #"same_domain_regexps":[re.compile("http://localhost/htests/")], "url_db":hyer.urldb.Urldb_mysql({"host":"localhost","user":"root","pass":"","db":"hyer2"}), "task":"profiletest", "leave_domain":False, "document":hyer.document.SimpleHTMLDocument } spider=hyer.spider.spider(conf) writerconf={ "host":"localhost", "user":"root", "pass":"", "db":"hyer2", "table":"xinhuall", "fields":["url","content","tags","charset"] #2 } |
里面首先需要修改的是跟mysql连接相关的部分,比如host,user,pass,db这几个。
#1 db_path是log记录的目录,需要确保这个目录存在。
#2 这里是保存某个文档的真正代码。
现在运行一下:
以下是代码片段: $./webctl.py |
以下是代码片段: hyer.event.add_event("new_document",handle_new_doc) |
我使用了类似wordpress的一种事件机制,在抓虫抓到新文档的时候,会自动把文档做为参数传给handle_new_doc这个函数。它会处理包括保存在内的逻辑。您现在只需修改这个函数,就可以实现分析和保存功能。
为了更方便保存,我还写了一个类,专门用来干这差事,看代码里这一行:
以下是代码片段: #wdb.run(doc) |
以下是代码片段: writerconf={ "host":"localhost", "user":"root", "pass":"", "db":"hyer2", "table":"xinhuall", "fields":["url","content","tags","charset"] } wdb=hyer.dbwriter.MySQLWriter(writerconf) |
这里的参数很好理解,就是用root用户空密码连接到localhost的hyer2这个数据库,然后将文档的url,content,tags,charset这几项保存到xinhuall表里,这几列要跟表里的对应(数据表里也建好了这么url,content,tags,charset几列).
嗯,到此为止,一个极简单的抓取就完成了。
其实这个包里还有很多工具,我是想在一套底层上实现两套东西,一套往stackless上走,这里的理念更新一些,另一套往scrapy上走,这里的更简单易于理解。已经实现了一堆工具包,期望能给大家抓网站提供方便。不过,目前仍然不太适合实际应用,抓个小站,偷个BT列表什么的还行。
我把文档也放了一份在这个主机上,大家可以打开看看。只是想法, 一时半会还不能全部实现。
建议继续学习:
- 抓取网页内容生成Kindle电子书 (阅读:8332)
- 淘宝搜索:定向抓取网页技术漫谈 (阅读:8211)
- Python抓取框架:Scrapy的架构 (阅读:7739)
- 快速构建实时抓取集群 (阅读:4374)
- cURL基础教程 (阅读:3908)
- 新浪博客抓取程序(php) (阅读:3743)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:一米六二 来源: 互联网,请记住我
- 标签: Hyer 抓取
- 发布时间:2009-12-23 09:47:13
- [55] Oracle MTS模式下 进程地址与会话信
- [55] IOS安全–浅谈关于IOS加固的几种方法
- [54] 如何拿下简短的域名
- [53] android 开发入门
- [52] Go Reflect 性能
- [51] 图书馆的世界纪录
- [49] 读书笔记-壹百度:百度十年千倍的29条法则
- [47] 【社会化设计】自我(self)部分――欢迎区
- [38] 程序员技术练级攻略
- [33] 视觉调整-设计师 vs. 逻辑