我有一个网页抓取网站上所有最新消息的功能(大约10条新闻和新闻的数量取决于该网站)。请注意,新闻按时间顺序排列。
例如,昨天我收到10条新闻并存储在数据库中。今天我收到10条新闻,但有3条消息从昨天开始没有(7条新闻保持不变,3条新消息)。
我目前的方法是提取每条新闻,直到找到旧消息(7条新闻中的第1条),然后我停止提取,只更新旧消息的字段"lastUpdateDate"
+向数据库添加新消息。我认为这种方法有点复杂,需要时间。
实际上我从20个网站获得相同内容结构(Moodle
)的新闻,因此每个请求将持续约2分钟,我的免费主机不支持。
如果我删除所有新闻然后从头开始提取所有内容(这实际上会增加数据库中的大量ID号)会更好吗?
答案 0 :(得分:2)
首先,检查网站是否有已发布的API。如果有,请使用它。
其次,检查网站的服务条款,可能明确禁止抓取网站。
第三,查看所选编程语言中的模块,该模块处理页面的提取和从页面中提取内容。在Perl中,您可以从WWW::Mechanize或Web::Scraper开始。
无论你做什么,都不要陷入那么多贴到StackOverflow上的陷阱:获取网页,然后尝试自己解析内容,最常用的是正则表达式,这对于工作。浏览SO标签html-parsing,了解那些试图推出自己的HTML解析系统而不是使用现有工具的人的悲伤故事。
答案 1 :(得分:0)
如果您想向用户显示旧消息,它取决于要求。
对于抓取,您可以为cron作业创建一个自定义本地脚本,该脚本将从这些新闻网站中获取数据并存储到数据库中。
您还可以检查主题是否已存在。
最终制作一个自定义新闻块,显示所有数据库Feed。