10/10/2018, 13:26

Hỏi về thuật toán crawler website

Chào các bạn

Cho mình hỏi thuật toán làm 1 web crawler dữ liệu website như sau là thế nào?

Khi crawler trang web A, trên web A nếu có link web B thì qua crawler luôn web B. (Giống như Google vậy).

Thân
TND.VN viết 15:28 ngày 10/10/2018
Bác hỏi trên nền gì mới là quan trọng.

Application hay Web Server
hostnaotot.com viết 15:26 ngày 10/10/2018
Mình cũng tìm hiểu cái này khá nhiều.
Quan trọng nhất trong việc crawl website là bạn phải parse được trang để lấy được link tiếp theo đưa vào hàng đợi.
Để crawl toàn bộ web thì dùng hàng đợi thôi, first in first out, khi quét đc 1 page thì sẽ parse page đó để lấy link, kiểm tra trong hàng đợi đã có link đó chưa, nếu chưa có thì push vào.

Về thuật toán cơ bản là như thế.
Về công cụ: nếu bạn muốn làm để dùng, thì có sẵn 1 số công cụ opensource crawler, bạn cứ google "open source crawler" và lựa chọn 1 cái phù hợp để dùng
-Nếu bạn muốn tự lập trình, thì nên sử dụng 1 library hỗ trợ parse content để lấy link, mình giới thiệu 1 lib opensouce làm rất tốt điều này là jsoup. Còn việc xử lý lấy dữ liệu và hàng đợi là bạn phải lập trình.
Có gì ủng hộ site mình nhé: http://hostnaotot.com
jacklam86 viết 15:34 ngày 10/10/2018
Được gửi bởi TND.VN
Bác hỏi trên nền gì mới là quan trọng.

Application hay Web Server
Mình viết Web, bằng PHP
jacklam86 viết 15:40 ngày 10/10/2018
Được gửi bởi hostnaotot.com
Mình cũng tìm hiểu cái này khá nhiều.
Quan trọng nhất trong việc crawl website là bạn phải parse được trang để lấy được link tiếp theo đưa vào hàng đợi.
Để crawl toàn bộ web thì dùng hàng đợi thôi, first in first out, khi quét đc 1 page thì sẽ parse page đó để lấy link, kiểm tra trong hàng đợi đã có link đó chưa, nếu chưa có thì push vào.

Về thuật toán cơ bản là như thế.
Về công cụ: nếu bạn muốn làm để dùng, thì có sẵn 1 số công cụ opensource crawler, bạn cứ google "open source crawler" và lựa chọn 1 cái phù hợp để dùng
-Nếu bạn muốn tự lập trình, thì nên sử dụng 1 library hỗ trợ parse content để lấy link, mình giới thiệu 1 lib opensouce làm rất tốt điều này là jsoup. Còn việc xử lý lấy dữ liệu và hàng đợi là bạn phải lập trình.
Có gì ủng hộ site mình nhé: http://hostnaotot.com
Hiện tại là mình parse qua nhưng lại chủ yếu dựa vào cấu trúc thẻ HTML để lấy các thông tin cần thiết. Tuy nhiên, mỗi web lại có cấu trúc khác nhau, đặt tên thẻ cũng khác nhau. Nên chỉ lấy được 1 trang duy nhất.
hostnaotot.com viết 15:38 ngày 10/10/2018
Được gửi bởi jacklam86
Hiện tại là mình parse qua nhưng lại chủ yếu dựa vào cấu trúc thẻ HTML để lấy các thông tin cần thiết. Tuy nhiên, mỗi web lại có cấu trúc khác nhau, đặt tên thẻ cũng khác nhau. Nên chỉ lấy được 1 trang duy nhất.
E nghĩ bác ko nên viết từ đầu 1 parser, người ta đã làm rất nhiều rồi, mình ko nên làm lại từ đầu những cái đã có quá tốt.
Để làm việc: bác nên tham khảo jsoup, nó sẽ tự động parse link ra cho bác.
Để học tập: bác có thể đọc source jsoup để xem cơ chế parse theo CSS path của nó là như thế nào, có điều mã nguồn nó hơi bị to nhé.
Với php, bác có thể tham khảo thằng này: http://simplehtmldom.sourceforge.net/
hostnaotot.com viết 15:28 ngày 10/10/2018
Được gửi bởi hostnaotot.com
E nghĩ bác ko nên viết từ đầu 1 parser, người ta đã làm rất nhiều rồi, mình ko nên làm lại từ đầu những cái đã có quá tốt.
Để làm việc: bác nên tham khảo jsoup, nó sẽ tự động parse link ra cho bác.
Để học tập: bác có thể đọc source jsoup để xem cơ chế parse theo CSS path của nó là như thế nào, có điều mã nguồn nó hơi bị to nhé.
Với php, bác có thể tham khảo thằng này: http://simplehtmldom.sourceforge.net/
Hoặc thằng này dùng cho php cũng ngon
jacklam86 viết 15:40 ngày 10/10/2018
Được gửi bởi hostnaotot.com
E nghĩ bác ko nên viết từ đầu 1 parser, người ta đã làm rất nhiều rồi, mình ko nên làm lại từ đầu những cái đã có quá tốt.
Để làm việc: bác nên tham khảo jsoup, nó sẽ tự động parse link ra cho bác.
Để học tập: bác có thể đọc source jsoup để xem cơ chế parse theo CSS path của nó là như thế nào, có điều mã nguồn nó hơi bị to nhé.
Với php, bác có thể tham khảo thằng này: http://simplehtmldom.sourceforge.net/
Cảm ơn hostnaotot nhiều. Mình sẽ nghiên cứu tiếp link bạn đưa.
Bài liên quan
0