gpt4 book ai didi

php - 如何在网页的标题中获取内容长度或 CRC?

转载 作者:可可西里 更新时间:2023-11-01 16:38:37 26 4
gpt4 key购买 nike

我为特定的动态网站写了一个爬虫。所有抓取作业都需要 3 个多小时。我想控制页面已经被抓取或者页面有一些变化。如果我能做到这一点,脚本将在很短的时间内完成。

例如:

    foreach ($urls as $url) {
if(thereAreChanges($url)){
crawl($url);
}
}

提示:该网页未提供内容长度和crc。

Array ( [0] => HTTP/1.1 200 OK 
[Date] => Tue, 08 Jan 2013 07:47:03 GMT
[Server] => Apache
[Set-Cookie] => Array (
[0] => PHPSESSID=eisb6qjme9b0ouoga9su9fgok4; path=/
[1] => j12011=a%3A3%3A%7Bs%3A3%3A%22sid%22%3Bs%3A26%3A%22eisb6qjme9b0ouoga9su9fgok4%22%3Bs%3A2%3A%22ip%22%3Bs%3A12%3A%2294.103.47.65%22%3Bs%3A4%3A%22time%22%3Bi%3A1357631223%3B%7D; expires=Sat, 09-Mar-2013 07:47:03 GMT; path=/
)
[Expires] => Thu, 19 Nov 1981 08:52:00 GMT
[Cache-Control] => no-store, no-cache, must-revalidate, post-check=0, pre-check=0
[Pragma] => no-cache
[Vary] => Accept-Encoding
[Connection] => close
[Content-Type] => text/html
)

站点提供了 Content-Type 但没有提供 Content-Length。我如何向 apache 询问内容长度。

更新:http://urivalet.com/可以获得内容长度。我需要这个。

如果我可以在页眉中获取页面的 CRC 码。这将是完美的。但我想这是不可能的。

最佳答案

在函数 thereAreChanges($url) 中,您可以执行以下操作,

  1. 发送请求时,发送 If-modified-since header ,并将您上次访问该页面的时间作为参数。如果未修改,此 header 将返回 304 状态代码。
  2. 检查响应的 Last-Modified header 并与当前存储页面的上次修改日期进行比较。如果内容较新,则获取它。
  3. 如果可能,使用这些 header 执行HEAD 请求。 GET 将为您提供所有内容。但是 HEAD 只会返回 header 。对于此类查询,仅需要 header 。
  4. 4.

最好使用现有的爬虫和搜索引擎框架,而不是编写一个。

使用 Apache Nutch抓取网页,Solr搜索索引页面。 Solr 提供了一个 HTTP 接口(interface),您可以在其中通过 PHP 运行查询。为了获得更大的灵 active ,您可以使用 Lucene .

这是一个tutorial关于如何设置 Nutch 和 Solr。

关于php - 如何在网页的标题中获取内容长度或 CRC?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14191649/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com