웹싸이트에서 게시글 긁어 오기

ivizone의 이미지

웹싸이트에서 게시글을 긁어 오는 프로그램을 만들고 싶습니다.

웹싸이트쪽은 전무해서...c언어로 게시판의 글을 긁어서 가공(?)을 하고 싶은데 처음부터 아무것도 모르네요...

웹싸이트의 db에 접근 해서 쿼리를 날려야 할까요? (db에 접근이 안될꺼 같은데..;;)

db에 접근이 힘들면 제로보드든 게시판에서 글이나 파일 링크를 긁어 올 수 있는 방법은 없는것인지요...

rss는 지원 하지 않는 곳이구요...

isty2e의 이미지

그냥 html 통째로 받아 오면 되지 않아요?

kalevala의 이미지

DB에 직접 쿼리 날리는 것은 안 되겠지요.

목표로 하는 웹사이트의 게시글 구성 형태를 파악하셔서 그에 맞추어 텍스트 부분을 요리조리 긁어오셔야 할 겁니다.

Python을 쓰신다면 Beautiful Soup를 이용해 간단한 형태는 뚝딱 만드셔서 테스트하실 수 있겠으나 C++은 딱히

모르겠군요. 물론 게시글의 template이 바뀌면, crawler도 맞춰서 업데이트 해줘야겠지요.

좀 더 스마트 한 것을 원하신다면 text정보가 비교적 많은 부분을 탐지해서 그 부분을 쏘옥 빼오시는 것도 방법이겠습니다.

정상인의 이미지

제 경우 C언어는 잘 안 쓰고 주로 php나 perl을 써서 사용해 페이지를 긁어옵니다.
(웹개발을 하다 보니 php가 가장 익숙한 스크립트 언어가 되었습니다. 역으로 C언어는 안 썼더니 영 기억이...)
php로 짜는 경우 curl등을 통해 사이트 주소에 접근해 게시글 목록을 긁어오고 거기서 html태그를 분석해서 각 제목에 연결된 링크를 뜯어서 해당 글에 접근하고..하는 식으로 진행합니다.

keedi의 이미지

웹사이트를 긁어오는 일은 간단하다면 간단하고 어렵다면 어려운 일입니다.

아무런 라이브러리도 없이 작성하겠다면 무척 고된 일이겠지요.
라이브러리를 사용한다면 정말 간단하게도 작성할 수 있을테구요.
어느 수준까지 라이브러리를 사용할지도 결정할 필요가 있을 것 같습니다.

- html을 다운로드 받는 라이브러리
- html에서 원하는 문자열을 추출하기 위한 라이브러리

정도가 필요할 것 같습니다. 전자는 libcurl 등이 될테고
후자는 pcre 또는 libxml 등이 되겠죠.

단지 웹사이트를 긁어서 특정 문자열을 추출하는 일이라면
C로 처리하는 것보다 Perl과 같은 스크립트 언어로 처리하는 것이 훨씬 간단합니다.

Perl의 경우 Web::Query 라는 모듈을 설치했다고 가정할때
현재 게시글인 128867 글타레 중 최초 원문을 긁어온다면
간단하게 한 줄로도 작성이 가능합니다.

perl -Mutf8 -MWeb::Query -E 'binmode STDOUT, ":utf8"; wq("http://kldp.org/node/".shift)->find("div.node div.content > p")->each( sub { say $_->text } )' 128867

꼭 C로 해야 하는 것이 아니라면 좀 더 효율적인 도구나
라이브러리를 사용하는 것을 추천드립니다. ;-)

----
use perl;

Keedi Kim

cleansugar의 이미지

1. html파일을 받는 기능

2. 받은 파일을 html 파서 라이브러리로 해석하거나 정규표현식으로 검색하는 기능

3. 해석한 데이터를 원하는 형태로 저장하는 기능

파서는 책으로 설명된게 없으므로 웹의 공식 문서로 익힙니다.

HTML파서는 XML책을 참고하면 도움이 많이 됩니다.

자바 파서
http://blog.aaidee.com/72

재벌 2세가 재벌이 될 확률과
금메달리스트 2세가 금메달을 딸 확률이 비슷해지도록
자유오픈소스 대안화폐를 씁시다.

아이디의 아이디어 무한도전
http://blog.aaidee.com

귀태닷컴
http://www.gwitae.com

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.