자유게시판

정규식은 정말 알면알수록 신기하네요.

joyfuI2019.01.10 11:44조회 수 122댓글 9

    • 글자 크기

저희 학교 공지사항이 rss를 지원하지 않아 편하게 rss로 구독하려고 php로 공지사항 페이지를 파싱해서 rss로 만들어주는 걸 만들었습니다.


php에 대해서 문외한이지만 좀 검색해보니 "PHP Simple HTML DOM Parser"라는 무진장 쉬운 파서가 있더라고요?

(단지 Quick Start 메뉴얼만 봤을 뿐인데 뚝딱뚝딱 원하는 부분만 긁어올 수 있게 되었습니다.)


원하는 부분을 따왔으니 이제 이걸 가공해서 rss 형식으로 뿌려줘야하는데 정규식이란게 생각나서 필요한 부분만 검색하며 만드니 어느새 완성했습니다.


특히 "[카테고리] 텍스트"여기에서 카테고리만 추출해야 하는데 정규식을 /^\[(.+)\]/ 이렇게 짜니까 처음엔 문제가 없는 줄 알았다가 "[카테고리] [텍스트] 텍스트"에서 "카테고리] [텍스트" 이렇게 추출되는 문제가 발생했습니다.


이걸보고 아 장난아니게 복잡해 지겠구나 했지만 역시 검색의 힘으로 단 한글자 추가로 해결되었습니다! /^\[(.+?)\]/


탐욕적 수량자, 게으른 수량자(네이밍 센스가;;;)라는데 정규식은 정말 신기한 것 같습니다.



다만 완성하고보니 페이지 접속시 파싱하는 거다보니 속도가  좀 느리네요.. 흠..

처음에 피들리에 등록이 안되서 당황했지만 꼼수로 파싱 페이지량을 줄여서 속도 빠르게 하고 등록한 뒤 다시 원래대로 바꿔 놓으니까 잘 갱신되는군요?!

    • 글자 크기
안녕하세요 가입후 첫인사입니다 :) (by 혜임) 전략게임을 제작해볼 예정입니다. (by BVC_Liper_Okbul)
  • 2019.1.10 13:02

    정규식의 세계는 참 오묘하고 심오하더군요 ^^

     

    Feed43이나 Feedity 같은 사이트를 이용하면 RSS를 제공하지 않는 사이트에서도 정규식을 사용하지 않고 RSS를 생성할 수 있어요.

    다만 무료플랜에서는 업데이트 주기 등에 제한이 있습니다.

     

    저도 작년에는 Feed43 유료플랜 + Feedly 조합으로 사용하다가 Feedly에서 Inoreader로 갈아타더니

    결국에는 개인 홈페이지에서 PHP로 파싱해서 여러 정보를 모아서 받아보고, 반드시 급히 챙겨야 할 알림만 텔레그램 봇으로 받고 있어요.

    Feed43이나 Feedity가 완벽한 것은 아니어서 RSS를 생성해서 리더로 보는 것보다 홈페이지 + 텔레그램 조합이 더 좋더군요 :)

     

    접속할 때마다 파싱해서 웹페이지의 반응속도가 느리다시면, 크론탭 등을 이용하여 주기적으로 파싱하고 캐싱하는 방법을 추천드려요~!

  • 2019.1.10 13:31

    그리고 정규식으로 파싱하시려면 simple HTML DOM parser을 사용하지 않고 정규식만으로 파싱하시거나,

    아니면 simple HTML DOM parser 사용 후에 $category = explode("]", $var)[0]; 같은 방법으로 정규식을 사용하지 않고 문자열 처리를 하시면

    리소스 차원에서나 속도 차원에서나 조금 더 효율적이지 않을까 생각되네요 ^-^

  • @이니스프리
    포인트 폭탄+ (비회원)
    2019.1.10 13:31
    이니스프리님 축하합니다.
    추가로 100포인트만큼 포인트 폭탄+를 받았습니다.
  • @이니스프리
    joyfuI글쓴이
    2019.1.10 14:52

    1. 저도 원래 feed43 쓰다가 느린 업데이트 주기 + 내용은 rss로 못 뿌려주는 문제로 직접 만들어봤습니다.(근데 이 내용을 뿌려주는 부분때문에 느리더라고요. 글에 일일이 또 접속해야하니..)

    사실상 feed43로 피드를 만들다 보면 정규식이랑 다를바가없...

    2. Inoreader라는 사이트는 처음들어보네요. 구글리더가 없어지고 피들리로 옮겼던건데 피들리 대비 Inoreader의 장점은 뭐가 있을까요?

    3. 웹호스팅에서는 불가능한 방법..ㅠㅠ 뭐 nas가 있으니 nas에 웹서버를 설치하면되지만 스터디포어스를 사용하고 있는데 그럴 필요성까진 못 느껴서요.

    4. 글 중간에 '아 장난아니게 복잡해 지겠구나' 생각했던 부분이 문자열 분할로 막 처리하는걸 생각했던건데 꽤 간단한 방법이 있었군요?!

  • @joyfuI
    2019.1.10 16:48

    댓글을 작성하다가 실수로 삭제를 해서 -30p 두 번 차감되고 처음부터 다시 작성하네요 ㅠㅠ

     

    1. 그런 목적이라면 직접 크롤링하는 것이 가장 효율적이더군요.

    RSS가 아니라 이메일로 알려주는 사이트가 있었는데 상당히 불안정했습니다 ㅠㅠ

    (제 기억이 맞다면 a태그 타고 들어가서 이메일로 내용까지도 알려줄 수 있었어요)

     

    2. Inoreader는 Feedly보다 무료플랜에서 제약이 덜 해요.

    가격이 정확히 기억나지 않지만 예전에 비교했을 때 유료플랜에서 가성비도 더 좋았던 것 같구요.

    하지만 전반적인 디자인이나 기능성은 Feedly가 우위에 있다고 생각되네요(업계 1위).

     

    3. SFU Expert에서는 cronjob 가능하지 않나요?

    웹사이트 중에서 간단한 cronjob을 대신 돌려주는 사이트도 있고, 그누보드의 m3cron처럼 설치형 crontab 플러그인도 있구요.

    텔레그램 봇은 파이썬이나 자바를 사용하지 않아도 PHP에서도 돌아갑니다 ^^

    텔레그램 봇으로 제목, 내용, 첨부파일(a태그) 모두 크롤링할 수 있죠.

     

    4. 크롤링이 절반이고, 문자열 처리가 나머지 절반이란 격언(?)이 있더군요.

    어떤 경우에는 문자열 처리가 크롤링보다 더 어려운 때도 있더군요 ㅠㅠ

  • @이니스프리
    joyfuI글쓴이
    2019.1.10 17:02

    Inoreader 홈페이지 가보니 무려 한국어를 지원하길래 30분 정도 써봤습니다. 근데 번역 수준이 번역기더라고요. 설정이 다양해서 좋은데 발번역하고 합쳐지니까 영어인 피들리보다 설정 알아먹기 힘들어지는 효과가..ㄷ

  • @joyfuI
    2019.1.10 17:09

    그래서 저도 언어를 영어로 설정해서 사용하고 있네요 ^^

    Feedly 프리플랜이 피드 100개까지만 지원되는 것이 제가 Inoreader로 옮긴 가장 큰 이유였어요.

    RSS 리더가 전반적으로 사양길을 걷고 있어서 장기적으로는 Tiny Tiny RSS 같은 self-hosted 방식을 사용하게 될 것 같아요 ㅠㅠ

  • 2019.1.10 19:53

    아무래도 저랗게 간단한 경우엔 이니스프리님의 말처럼 정규식보단 strpos와 substr을 적절히 조합해 사용하는 것이 좋습니다.

  • @humit
    2019.1.10 20:11

    저도 사실 저번에 humit 님께 배운 것이에요~! ^-^

    그 전까지는 beautifulsoup으로 크롤링해놓고 다시 정규식으로 문자열 처리를 하고는 했죠 ㄷㄷ

    다시 한 번 감사드립니다!!

댓글 달기

번호 제목 글쓴이 날짜 조회 수
공지 구글 로그인 문제가 있던 부분을 해결하였습니다.7 마스터 2019.03.13 259
공지 당분간 호스팅 신청을 받지 않습니다.20 마스터 2019.02.27 719
공지 회원 전용 페이지가 생겼습니다.15 마스터 2018.03.20 5831
공지 슬기로운 포인트 벌이를 하는 법43 네모 2018.06.17 1543
4310 도메인 잡담4 root 2019.01.16 55
4309 아마존에서 문제를 확인한 듯 합니다.20 협스 2019.01.16 155
4308 안녕하세요~9 kukie 2019.01.16 75
4307 우와......날씨가 ㅠㅠㅠㅠ8 슬기 2019.01.15 67
4306 다들 재난 문자 오나요?12 핫슈 2019.01.15 121
4305 휴대폰 왜 이렇게 바꼈는지를..15 title: 은메달대전댁 2019.01.15 131
4304 스텔라리스 커스텀 종족들 상태가...2 BVC_Liper_Okbul 2019.01.14 48
4303 미세먼지 조심하세요!19 title: 애프터 이펙트제르엘 2019.01.14 108
4302 리눅스를 깔아봤습니다!14 Piedots 2019.01.14 114
4301 비밀번호에 대하여36 Hanam09 2019.01.14 182
4300 주먹왕 랄프 2 보고 왔습니다.5 title: '< >' 아이콘맛스타 2019.01.13 89
4299 오랜만에 H마트 갔다 왔습니다.5 도토리묵 2019.01.13 78
4298 한 파 같지 않는 한파 날씨9 핫슈 2019.01.13 66
4297 독감입니다ㅠ18 네모 2019.01.12 116
4296 스텔라리스 전투 장면 장관이네요!4 BVC_Liper_Okbul 2019.01.12 63
4295 다들 바쁘신가보네요.14 title: 애프터 이펙트제르엘 2019.01.12 104
4294 안녕하세요 가입후 첫인사입니다 :)12 혜임 2019.01.10 77
정규식은 정말 알면알수록 신기하네요.9 joyfuI 2019.01.10 122
4292 전략게임을 제작해볼 예정입니다.20 BVC_Liper_Okbul 2019.01.09 135
4291 스텔라리스 기어이 미친짓을 저질러버렸습니다아아4 BVC_Liper_Okbul 2019.01.08 73
이전 1 ... 11 12 13 14 15 16 17 18 19 20... 231다음
첨부 (0)
서버에 요청 중입니다. 잠시만 기다려 주십시오...