[英]How to get Content-Length or CRC in header of a web page?
我為特殊的動態網站編寫了一個搜尋器。 所有抓取作業都需要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)
您可以執行以下操作:
If-modified-since
標頭作為參數。 如果未修改,則此標頭將返回304
狀態代碼。 Last-Modified
標頭,並與當前存儲頁面的上次修改日期進行比較。 如果內容較新,請獲取它。 HEAD
請求。 GET
將為您提供所有內容。 但是HEAD
只會返回標頭。 對於此類查詢,僅需要標題。 使用現有的搜尋器和搜索引擎框架比編寫框架要好。
使用Apaches Nutch爬網網頁,使用Solr搜索索引頁面。 Solr提供了一個HTTP接口,您可以在其中通過PHP運行查詢。 為了獲得更大的靈活性,您可以使用Lucene 。
這是有關如何設置Nutch和Solr的教程 。
解決方案是'header'=>"Accept-Encoding: gzip"
這就是標題不返回Content-Length的原因,使用此參數頁面返回content-length。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.