Làm thế nào để trở thành một công dân tốt khi thu thập dữ liệu trang web?


83

Tôi sẽ phát triển một số chức năng sẽ thu thập dữ liệu các trang web công cộng khác nhau và xử lý / tổng hợp dữ liệu trên chúng. Không có gì độc ác như tìm kiếm địa chỉ email - thực tế đó là thứ có thể thực sự thúc đẩy lưu lượng truy cập bổ sung vào trang web của họ. Nhưng tôi lạc đề.

Ngoài việc tôn trọng robots.txt, có bất kỳ quy tắc hoặc hướng dẫn nào, bằng văn bản hoặc không thành văn, mà tôi nên tuân theo để (a) tránh xuất hiện độc hại và có khả năng bị cấm và (b) không gây ra bất kỳ vấn đề nào cho chủ sở hữu trang web / quản trị trang web không?

Một số ví dụ tôi có thể nghĩ về cái nào có thể hoặc không quan trọng:

  • Số lượng yêu cầu song song
  • Thời gian giữa các yêu cầu
  • Thời gian giữa toàn bộ thu thập thông tin
  • Tránh các liên kết có khả năng phá hủy (không muốn trở thành Spider of Doom - nhưng ai biết liệu điều này có thực tế không)

Đó thực sự chỉ là nhổ nước bọt, mặc dù; Có bất kỳ sự khôn ngoan đã thử và thử nghiệm nào ngoài đó có thể áp dụng rộng rãi cho bất kỳ ai có ý định viết hoặc sử dụng một con nhện không?


1
Mặc dù các câu trả lời dưới đây cung cấp một câu trả lời tuyệt vời về cách thu thập nội dung một cách tôn trọng, xin lưu ý sử dụng nội dung được chấp nhận một khi bạn đã thu thập nội dung đó. Tái xuất bản nó, toàn bộ hoặc một phần, có thể vi phạm bản quyền của chủ sở hữu.
Gavin Coates

Câu trả lời:


85

Bên cạnh việc tuân theo robot.txt, hãy tuân theo nofollownoindextrong <meta>các yếu tố và liên kết:

  • Có nhiều người tin rằng robot.txt không phải là cách thích hợp để chặn lập chỉ mục và vì quan điểm đó, đã hướng dẫn nhiều chủ sở hữu trang web dựa vào <meta name="robots" content="noindex">thẻ để thông báo cho các trình thu thập dữ liệu web không lập chỉ mục một trang.

  • Nếu bạn đang cố gắng tạo một biểu đồ kết nối giữa các trang web (bất cứ thứ gì tương tự như PageRank), (và <meta name="robots" content="nofollow">) được cho là trang web nguồn không tin tưởng trang web đích đủ để cung cấp cho nó một sự chứng thực phù hợp. Vì vậy, trong khi bạn có thể lập chỉ mục trang web đích, bạn không nên lưu trữ mối quan hệ giữa hai trang web.

SEO là một nghệ thuật hơn là một khoa học thực sự và nó được thực hiện bởi rất nhiều người biết họ đang làm gì, và rất nhiều người đọc bản tóm tắt điều hành của những người biết họ đang làm gì. Bạn sẽ gặp phải các vấn đề trong đó bạn sẽ bị chặn khỏi các trang web để làm những việc mà các trang web khác thấy hoàn toàn chấp nhận được do một số quy tắc ai đó đã nghe hoặc đọc trong một bài đăng trên blog về SEOmoz có thể hoặc không thể hiểu chính xác.

Do yếu tố con người đó, trừ khi bạn là Google, Microsoft hoặc Yahoo!, Bạn được coi là độc hại trừ khi được chứng minh khác đi. Bạn cần hết sức cẩn thận để hành động như thể bạn không phải là mối đe dọa đối với chủ sở hữu trang web và hành động theo cách bạn muốn một trình thu thập dữ liệu có khả năng độc hại (nhưng hy vọng là lành tính):

  • dừng thu thập dữ liệu một trang web khi bạn phát hiện ra mình đang bị chặn: 403/241 trên các trang bạn biết công việc, điều tiết, hết thời gian, v.v.
  • tránh thu thập thông tin đầy đủ trong khoảng thời gian tương đối ngắn: thu thập dữ liệu một phần của trang web và quay lại sau (một vài ngày sau) để thu thập thông tin một phần khác. Đừng đưa ra yêu cầu song song.
  • tránh thu thập dữ liệu các khu vực có khả năng nhạy cảm: /admin/ví dụ : URL có trong đó.

Ngay cả khi đó, đây sẽ là một trận chiến trên đồi trừ khi bạn sử dụng các kỹ thuật mũ đen như giả mạo UA hoặc cố tình che giấu các mẫu thu thập thông tin của bạn: nhiều chủ sở hữu trang web, vì những lý do tương tự ở trên, sẽ chặn một trình thu thập dữ liệu không xác định thay vì nhìn cơ hội có ai đó không cố gắng "hack trang web của họ". Chuẩn bị cho rất nhiều thất bại.

Một điều bạn có thể làm để chống lại hình ảnh tiêu cực mà trình thu thập thông tin không xác định sẽ có là làm cho nó rõ ràng trong chuỗi tác nhân người dùng của bạn, bạn là ai:

Aarobot Crawler 0.9 created by John Doe. See http://example.com/aarobot.html for more information.

Nơi http://example.com/aarobot.htmlgiải thích những gì bạn đang cố gắng thực hiện và tại sao bạn không phải là mối đe dọa. Trang đó nên có một vài điều:

  • Thông tin về cách liên hệ trực tiếp với bạn
  • Thông tin về những gì trình thu thập thông tin thu thập và lý do tại sao nó thu thập nó
  • Thông tin về cách từ chối và xóa mọi dữ liệu được thu thập

Điều cuối cùng là chìa khóa: từ chối tốt giống như Bảo đảm hoàn tiền ™ và đạt được số tiền thiện chí không hợp lý. Cần phải nhân văn: một bước đơn giản (địa chỉ email hoặc, lý tưởng nhất là hình thức) và toàn diện (không nên có bất kỳ "gotchas" nào: từ chối có nghĩa là bạn ngừng thu thập thông tin mà không có ngoại lệ).


18
Rất lớn +1 cho đề xuất đưa thông tin rõ ràng vào Tác nhân người dùng. Tôi đã có công việc kiểm tra nhật ký máy chủ web để tìm ra ai đang theo dõi một trang web lớn và không có gì vui khi cố gắng tìm ra ai đang điều khiển tất cả các con nhện khó hiểu.
Carson63000

4
Nó khá phổ biến để đặt URL trong biểu mẫu (+http://example.com/aarobot.html). Tôi không biết mục đích của +dấu hiệu ở đây là gì, nhưng tôi đã nhìn thấy nó thường xuyên. Web-Sniffer làm điều đó, và nhiều người khác cũng vậy.
TRiG

Đây là thông tin tuyệt vời, nhưng tôi bối rối về một điều: Bạn đề cập đến rel="noindex"như thể đó là một <a>thuộc tính, nhưng trang bạn liên kết để mô tả nó như là một phần của thuộc tính <meta>của thẻ content. Là cả hai, hay đây là một lỗi đánh máy trong câu trả lời?
Aaronaught

1
"SEO là một nghệ thuật hơn là một khoa học thực sự" - không đúng. Nếu bạn là một lập trình viên thống kê, SEO không phải là một nghệ thuật và nhiều kỹ năng nhận dạng toán học. Học sinh giỏi toán có kỹ năng lập trình hoặc lập trình viên giỏi Toán có nhu cầu cao trong ngành lập hồ sơ dữ liệu web.
ש


32

Mặc dù điều này không trả lời tất cả các câu hỏi của bạn, tôi tin rằng nó sẽ giúp ích cho bạn và cho các trang web bạn thu thập dữ liệu.

Tương tự như kỹ thuật được sử dụng để vũ trang các trang web mà không thu hút sự chú ý, nếu bạn có một nhóm trang web đủ lớn để thu thập thông tin, đừng thu thập dữ liệu trang tiếp theo trên trang web cho đến khi bạn đã thu thập dữ liệu trang tiếp theo của tất cả các trang web khác . Chà, các máy chủ hiện đại sẽ cho phép tái sử dụng kết nối HTTP , vì vậy bạn có thể muốn làm nhiều hơn một để giảm thiểu chi phí, nhưng ý tưởng vẫn đứng vững. Không thu thập dữ liệu một trang web đến kiệt sức cho đến khi bạn chuyển sang trang tiếp theo . Chia sẻ tình yêu.

Đối với bạn vào cuối một ngày, bạn vẫn có thể thu thập dữ liệu như nhiều trang, nhưng mức sử dụng băng thông trung bình trên một trang web sẽ thấp hơn nhiều.

Nếu bạn muốn tránh trở thành con nhện của sự diệt vong, không có phương pháp chắc chắn nào. Nếu ai đó muốn dán đậu lên mũi , họ sẽ và có thể làm như vậy trong cách cư xử mà bạn không bao giờ có thể dự đoán được. Có nói rằng, nếu bạn không nhớ thiếu trang hợp lệ không thường xuyên, hãy có một danh sách đen các từ cho một liên kết sẽ ngăn bạn theo dõi nó. Ví dụ:

  • Xóa bỏ
  • Tẩy
  • Cập nhật
  • Biên tập
  • Sửa đổi

Không phải bằng chứng ngu ngốc, nhưng đôi khi bạn không thể ngăn mọi người phải học một cách khó khăn;)


3
Lời khuyên tốt về "chia sẻ tình yêu" - đã không xem xét điều đó, mặc dù tất nhiên điều đó có vẻ rõ ràng khi nhìn lại.
Aaronaught

Câu trả lời của bạn sẽ gần như hoàn hảo nếu bạn đề cập đến robot.txt;)
deadalnix

7
@deadalnix, nhưng robots.txtđã được đề cập trong câu hỏi và có thể được coi là giả định.
TRiG

20

Một lời khuyên của tôi là hãy lắng nghe những gì trang web bạn đang thu thập thông tin đang nói với bạn và tự động thay đổi việc thu thập thông tin của bạn để phản ứng với điều đó.

  • Là trang web chậm? Thu thập dữ liệu chậm hơn để bạn không DDOS nó. Có nhanh không Bò thêm một chút, sau đó!

  • Là trang web bị lỗi? Thu thập dữ liệu ít hơn để bạn không căng thẳng về một trang web đã bị hạn chế. Sử dụng thời gian thử lại tăng theo cấp số nhân, do đó bạn thử lại ít hơn khi trang web bị lỗi lâu hơn. Nhưng hãy nhớ thử lại sau, cuối cùng, để bạn có thể thấy bất cứ điều gì bạn thiếu do, giả sử, lỗi kéo dài một tuần trên một đường dẫn URL cụ thể.

  • Bắt nhiều 404? (hãy nhớ rằng, các trang 404 ưa thích của chúng tôi cũng mất thời gian của máy chủ!) Tránh thu thập thông tin URL tiếp theo với đường dẫn đó vì có lẽ mọi thứ còn thiếu; nếu file001.html- file005.htmlkhông có ở đó, tôi đặt cược bạn đô la cho bánh rán file999.htmlcũng không! Hoặc có thể giảm phần trăm thời gian bạn lấy bất cứ thứ gì trong đường dẫn đó.

Tôi nghĩ rằng đây là nơi mà rất nhiều người thu thập thông tin ngây thơ đã sai lầm sâu sắc, bằng cách có một chiến lược robot mà họ thực hiện giống nhau bất kể tín hiệu họ nhận được từ trang đích.

Trình thu thập thông minh phản ứng với (các) trang đích mà nó đang chạm vào.


19

Những người khác đề cập đến một số câu thần chú, nhưng hãy để tôi thêm một số.

Hãy chú ý đến loại tập tin và kích thước. Đừng kéo những nhị phân khổng lồ này.

Tối ưu hóa cho một số trang "danh sách thư mục" máy chủ web điển hình. Cụ thể, họ cho phép sắp xếp kích thước, ngày, tên, quyền, v.v. Đừng coi mỗi phương pháp sắp xếp là một gốc riêng biệt để thu thập thông tin.

Yêu cầu gzip (nén khi đang bay) bất cứ khi nào có sẵn.

Giới hạn độ sâu hoặc phát hiện đệ quy (hoặc cả hai).

Giới hạn kích thước trang. Một số trang triển khai tarpits để ngăn chặn các bot loại bỏ email. Đây là một trang tải với tốc độ ốc sên và dài terabyte.

Không lập chỉ mục các trang 404. Động cơ tự hào chỉ số lớn nhất làm điều này, và nhận được sự ghét bỏ xứng đáng để trao đổi.

Điều này có thể khó khăn, nhưng hãy cố gắng phát hiện các trang trại cân bằng tải. Nếu v329.host.com/pages/article.php?99999 trả về giống như v132.host.com/pages/article.php?99999, đừng xóa danh sách đầy đủ các máy chủ từ v001.host.com cho đến v999. máy chủ.com


Trường hợp góc quan trọng!
M. Dudley

Ngày nay, bạn thường có thể phát hiện nội dung trùng lặp có chủ ý (ví dụ: trang trại cân bằng tải) bằng cách kiểm tra các thẻ chính tắc.
Brian

4

Tôi sẽ chỉ thêm một điều nhỏ.

Bản quyền và các vấn đề pháp lý khác: Tôi biết bạn viết chúng là các trang web công cộng, vì vậy có thể không có bất kỳ bản quyền nào, nhưng có thể có các vấn đề pháp lý khác để lưu trữ dữ liệu.

Tất nhiên điều này sẽ phụ thuộc vào dữ liệu của quốc gia bạn đang lưu trữ (và nơi bạn đang lưu trữ chúng). Trường hợp cụ thể là các vấn đề với Đạo luật Yêu nước Hoa Kỳ so với Chỉ thị Bảo vệ Dữ liệu của EU. Một bản tóm tắt điều hành của vấn đề là các công ty Mỹ phải cung cấp dữ liệu của họ cho ví dụ. FBI nếu được hỏi, mà không thông báo cho người dùng về điều đó, trong đó Chỉ thị bảo vệ dữ liệu tuyên bố rằng người dùng phải được thông báo về điều này. Se http://www.itworld.com/g chính / 179977 / eve


2
"Tôi biết bạn viết chúng là các trang web công cộng, vì vậy có thể không có bất kỳ bản quyền nào". Mọi trang web trên internet đều công khai và mọi trang web đều có bản quyền, trừ khi có quy định rõ ràng khác.
Gavin Coates

3

Gọi webcrawler của bạn hoặc nhện hoặc liên kết với tên của bạn. Điều này quan trọng. Các công cụ phân tích và những thứ tương tự tìm kiếm để liên kết bạn như một ... con nhện. ;)

Cách tôi đã thấy được thực hiện là thông qua tiêu đề yêu cầu Tác nhân người dùng


Tôi nghĩ rằng nó thường là "bot" hoặc "robot" - Tôi biết rằng Google là Googlebot.
Aaronaught

Điểm tốt. Miễn là nó có thể được phân biệt. Có lẽ có một bài viết về SO đặt chúng ra.
jcolebrand

2
  • Bảo quản cookie, khi được yêu cầu, để ngăn chặn trang web tạo các phiên không cần thiết.
  • Thực hiện hành vi phân tích liên kết, gần nhất với trình duyệt. Trang web trực tiếp của chúng tôi báo cáo rất nhiều '404s, do yêu cầu bot cho các tệp bị thiếu.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.