검색 로봇 만드는 방법?

park712의 이미지

예를 들어 스팸메일 보내기 위해
메일 주소를 수집하는 것은 어떤 방법으로 수집하는지요?
그리고, 게시판에 광고글 올리는 것은 어떤 방법으로
올리는지요? 사람이 올리지는 않을 것이고 컴퓨터 프로그램이
할 건데요..
검색로봇의 사용언어 프로그램 크기(규모)
기타 참고가 될만한 책이나 소스 인터넷 사이트 있는곳
아시면 알려주시기 바랍니다.
최근, 게임만드는데서 일하는 동생을 만났는데
정말 게임의 메인 소스는 라인수가 적다라는것을 알고 놀랬습니다.

zflute의 이미지

검색 서비스를 위해서는 로봇, 인덱서, 엔진이 필요합니다.
로봇은 웹 상의 데이터를 긁어오는 역할을 하고 인덱서는 긁어온 데이터를 사전 데이터에 기초해서 인덱스(책 뒷부분에 있는 찾아보기 같은)를 만드는 작업을 하고 엔진은 인덱스를 이용해서 사용자 질의에 대해서 실제로 검색을 수행하고 결과를 출력하게 됩니다.

어느 정도 수준까지 로봇을 구현하느냐에 따라서 코드량이 결정되겠지만, 아이디어 자체가 복잡한 것은 아닙니다.
간단한 로직은 html을 읽어와서 a href 링크만 좇아가는 방식으로 하면 됩니다. 물론 recursive하게 진행되어야 하기 때문에 이 부분에서 아이디어가 필요하겠습니다. 그런데 예외 상황이 많아서 자잘한 코드가 많이 필요할 겁니다. 예를 들어 플래시로 되어 있는 메뉴일 경우는 html parser로 알아낼 수가 없겠죠.

사용하는 언어는 개발자 마음 아니겠습니까? 웹 상의 데이터를 긁어오는 작업 자체가 CPU 파워에 의존한다기 보다는 크롤러가 위치한 곳의 네트웍 상황이나 상대방 서버쪽의 네트웍 상황(보통 이 경우가 더 많습니다)에 의해 결정되는 경우가 대부분입니다. 그래서 특정 언어에 얽매이기 보다는 자신이 유지 보수를 쉽게 할 수 있는 언어를 선택하는 것이 현명하다는 생각이 듭니다.

아울러, 긁어올 데이터의 양도 무시 못하기 때문에 대용량 스토리지도 생각을 하셔야 합니다.

일단 데이터를 긁어온 다음에 가공하는 작업은 아무래도 C 언어를 사용하는 것이 좋습니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.