从网站获取新闻的最佳方法?

时间:2012-12-17 13:49:18

标签: web-scraping

我有一个网页抓取网站上所有最新消息的功能(大约10条新闻和新闻的数量取决于该网站)。请注意,新闻按时间顺序排列。

例如,昨天我收到10条新闻并存储在数据库中。今天我收到10条新闻,但有3条消息从昨天开始没有(7条新闻保持不变,3条新消息)。

我目前的方法是提取每条新闻,直到找到旧消息(7条新闻中的第1条),然后我停止提取,只更新旧消息的字段"lastUpdateDate" +向数据库添加新消息。我认为这种方法有点复杂,需要时间。

实际上我从20个网站获得相同内容结构(Moodle)的新闻,因此每个请求将持续约2分钟,我的免费主机不支持。

如果我删除所有新闻然后从头开始提取所有内容(这实际上会增加数据库中的大量ID号)会更好吗?

2 个答案:

答案 0 :(得分:2)

首先,检查网站是否有已发布的API。如果有,请使用它。

其次,检查网站的服务条款,可能明确禁止抓取网站。

第三,查看所选编程语言中的模块,该模块处理页面的提取从页面中提取内容。在Perl中,您可以从WWW::MechanizeWeb::Scraper开始。

无论你做什么,都不要陷入那么多贴到StackOverflow上的陷阱:获取网页,然后尝试自己解析内容,最常用的是正则表达式,这对于工作。浏览SO标签,了解那些试图推出自己的HTML解析系统而不是使用现有工具的人的悲伤故事。

答案 1 :(得分:0)

如果您想向用户显示旧消息,它取决于要求。

对于抓取,您可以为cron作业创建一个自定义本地脚本,该脚本将从这些新闻网站中获取数据并存储到数据库中。

您还可以检查主题是否已存在。

最终制作一个自定义新闻块,显示所有数据库Feed。