爬新闻,大家都是怎么做的?
昨天刚用groovy写了个东东,目的是把目标网站的一些栏目的新闻(列表、和内容),用非本地缓存方式(即即时查询分析)显示自己的一个cms网站中去。
写了好多死代码,以前也接触过一些爬虫工具等,多是把数据爬下来以文件形式保存或数据库形式保存。
我先说说我自己的做法,大家讨论下,有没有更好的方法啊?做个稍微通用、灵活点的?
方式:
LAMP + Tomcat
1.Tomcat下一个自己写的Servlet + Groovy Script + Freemarker的MVC东东,用Groovy写了爬代码的逻辑处理并显示成html,至此有个URL对应。
2.Apache PHP部署个CMS(康盛的Supesite),修改了其中的template下的html.php文件(模板文件),立面直接用PHP file_get_contents(上面的URL)。
3.具体写爬内容的处理就是个遍历URL的html然后做字符串解析,代码可以以下面的原语构成:(以获取一个新闻列表页面中的新闻条目为例)
final String beginUrl =
def pageRange = param('page')
def getNewsItem(String content){
def pat = /******/
}
def result = []
pageRange.each{
StringBuffer content = new StringBuffer()
new Url(beginUrl + it).eachLine{line ->
// 根据目标html代码的特点获取新闻列表部分的代码段
}
result << getNewsItem(content.toString())
}
大概过程是这样,自己感觉死代码太多,目标网站,一修改html板式,这些代码都要再重写一遍。
大家如果碰到这样的需求,处理起来有什么好的思路否?