2011-01-30 22 views
7

Tôi đang tìm một số tập lệnh trình thu thập thông tin web PHP mạnh mẽ và được ghi lại tài liệu. Có lẽ một cổng PHP của dự án Java - http://wiki.apache.org/nutch/NutchTutorialThư viện trình thu thập dữ liệu web PHP nào có sẵn?

Tôi đang tìm cả miễn phí và không phiên bản miễn phí.

+1

Không có trình thu thập dữ liệu nào sẽ thực hiện việc cạo dữ liệu, đó là điều bạn sẽ phải tự viết. Và cũng đảm bảo những gì bạn đang nâng không có bản quyền. –

+0

có thể trùng lặp của [Phương pháp tốt nhất để phân tích cú pháp HTML] (http://stackoverflow.com/questions/3577641/best-methods-to-parse-html/3577662#3577662) – Gordon

+0

bản sao bổ sung có thể trong http://stackoverflow.com q = web + trình thu thập thông tin + php – Gordon

Trả lời

4

Chỉ cần thử Snoopy.

Trích: ". Snoopy là một lớp học PHP mà mô phỏng một trình duyệt web Nó tự động hóa nhiệm vụ lấy nội dung trang web và đăng các hình thức, ví dụ"

+2

Xin lỗi, tôi biết đó là một bài cũ nhưng mọi người vẫn đọc câu trả lời này và tôi đã downvoted vì Snoopy sử dụng Regex để phân tích cú pháp HTML và [nó không mát] (http://stackoverflow.com/questions/6751105/why-its-not-possible-to-use-regex-to-parse-html-xml-a-formal-explanation-in- la) ... – fernandosavio

2

Bạn có thể sử dụng PHP Simple HTML DOM Parser. Nó thực sự đơn giản và hữu ích.

+1

Các lựa chọn thay thế của bên thứ ba được đề xuất cho [SimpleHtmlDom] (http://simplehtmldom.sourceforge.net/) thực sự sử dụng [DOM] (http://php.net/manual/en/book.dom.php) thay vì String Parsing: [phpQuery] (http://code.google.com/p/phpquery/), [Zend_Dom] (http://framework.zend.com/manual/en/zend.dom.html) , [QueryPath] (http://querypath.org/) và [FluentDom] (http://www.fluentdom.org). – Gordon

2

Tôi đã sử dụng đơn giản DOM HTML cho khoảng 3 năm trước khi tôi phát hiện ra phpQuery. Nó nhanh hơn rất nhiều, không hoạt động đệ quy (bạn có thể thực sự đổ nó) và có hỗ trợ đầy đủ cho các bộ chọn và phương thức jQuery.

+1

@Gordon Không, chúng là bộ chọn jQuery. Từ jQuery.com: "Vay từ CSS 1–3, và sau đó thêm riêng của nó, jQuery cung cấp một bộ công cụ mạnh mẽ để phù hợp với một tập hợp các phần tử trong một tài liệu." – Kemo

+0

Hmm, được rồi.Chúng mở rộng trên bộ chọn CSS. Tôi đoán đó là một sự phân biệt hợp lệ rồi. Lấy làm tiếc. Tôi hiếm khi thấy mọi người sử dụng bất kỳ thứ gì không có trong bộ công cụ chọn CSS khi họ nói về bộ chọn * jQuery *. Họ làm cho nó âm thanh như jQuery phát minh ra chúng. – Gordon

+1

@Gordon yeah, i h8 "giống như chúng tôi đã phát minh ra chúng" một phần quá :) Thông tin thêm tại sizzlejs.com – Kemo

1

Có một hướng dẫn Greate here kết hợp guzzlehttpsymfony/dom-crawler

Trong trường hợp liên kết bị mất ở đây là mã bạn có thể tận dụng.

use Guzzle\Http\Client; 
use Symfony\Component\DomCrawler\Crawler; 
use RuntimeException; 

// create http client instance 
$client = new GuzzleHttp\ClientClient('http://download.cloud.com/releases'); 

// create a request 
$response = $client->request('/3.0.6/api_3.0.6/TOC_Domain_Admin.html'); 

// get status code 
$status = $response->getStatusCode(); 

// this is the response body from the requested page (usually html) 
//$result = $response->getBody(); 

// crate crawler instance from body HTML code 
$crawler = new Crawler($response->getBody(true)); 

// apply css selector filter 
$filter = $crawler->filter('div.apismallbullet_box'); 
$result = array(); 

if (iterator_count($filter) > 1) { 

    // iterate over filter results 
    foreach ($filter as $i => $content) { 

     // create crawler instance for result 
     $cralwer = new Crawler($content); 
     // extract the values needed 
     $result[$i] = array(
      'topic' => $crawler->filter('h5')->text(); 
      'className' => trim(str_replace(' ', '', $result[$i]['topic'])) . 'Client' 
     ); 
    } 
} else { 
    throw new RuntimeException('Got empty result processing the dataset!'); 
} 
Các vấn đề liên quan