Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 抓取非RSS页面以生成提要_Php_Rss_Scrape - Fatal编程技术网

Php 抓取非RSS页面以生成提要

Php 抓取非RSS页面以生成提要,php,rss,scrape,Php,Rss,Scrape,我想抓取一个定期更新的页面(添加与以前文章结构完全相同的新文章),以便生成RSS提要 我可以很容易地编写代码来分析页面,但是如何模拟ping,即当页面更新时,我的php脚本如何知道?它必须是cron作业吗 (我知道这可能是一个重复的问题,但没有找到直接的答案。我得到的最接近的答案是,它有一个抓取脚本,但没有关于如何让它自动响应页面上的更改的信息)您可以运行一个crontab来检查站点是否已更新(检查上次修改的标题(如果可用),或检查您感兴趣的内容) 如果您的crontab在检查站点时检测到内容的

我想抓取一个定期更新的页面(添加与以前文章结构完全相同的新文章),以便生成RSS提要

我可以很容易地编写代码来分析页面,但是如何模拟ping,即当页面更新时,我的php脚本如何知道?它必须是cron作业吗


(我知道这可能是一个重复的问题,但没有找到直接的答案。我得到的最接近的答案是,它有一个抓取脚本,但没有关于如何让它自动响应页面上的更改的信息)

您可以运行一个crontab来检查站点是否已更新(检查上次修改的标题(如果可用),或检查您感兴趣的内容)


如果您的crontab在检查站点时检测到内容的变化,它可以将消息附加到队列中(例如Zend_队列),则您可以有一个工作程序,该工作程序只处理消息,直到达到时间/数据限制,或者直到队列为空。

根据系统的不同,可能很难判断页面上次更新的时间

要检查更改,您可以检查页面的
上次修改的
标题的HTTP标题。并非所有系统都正确更新标题,因此可能没有用处。也可能未修改的页面将返回
304
(未修改)的状态,特别是如果您在请求中提供了一个
if-Modified-Since


我肯定会在cron作业上运行类似的操作。虽然可能只从标题执行,但如果必须更新页面,用户将等待很长时间(相对而言)要让您的服务器退出,请获取页面,进行处理,然后发送响应。如果您没有使用基于非cron的a方法不时遇到超时,我会感到惊讶。

如果没有最后修改的行,您还可以在HEAD请求的响应中检查ETag和内容长度行的存在和值。如果这两行都不匹配先前存储的值,则内容可能已更改。您可以在这些行中添加任何其他表示更改的行