정규식은 힘들군요

정규식은 힘들군요

QA

정규식은 힘들군요

본문


<li id="room-e2f9afe08054da8141c921f3194aaa12" data-trate="2.65" data-prate="2.1" data-nrate="2.55" data-recomcnt="33" data-curuser="26" data-time="1593938049">
   <div class="thumb red"><img src="https://sfile.powerballgame.co.kr/profileImg/66f4f115a64a31e4f71c7955b768c6a0.gif?1589995072" class="roomImg"/><div class="winFixCnt">8</div></div>
   <이하 생략>....

 

안녕하세요. 

스누피로 크롤링 하는거 해보려고 하는데요..

찾아보면...

preg_match('~<html>[{"(.*?)', $snoopy->results, $text); //preg_match 정규식을 사용해서 필요한 요소만을 추출한다고 합니다. 라고 해요...

 

예를 들면 이런식..$rex="/\<em class=\"curPrice.+\"\>(.*)\<\/em\>/";

 

구글링 해봐도 제가 알고 싶은게 없어서요...

 

예문에 보면../,\ 이런것들이 들어가는데 따로 규칙이 있는건가요? 어느요소에 저걸 작성해야 하는건가요? ^^;; (좀 질문이 이상한뎅)

 

위 소스 에서 제가 가져오려는 값이

e2f9afe08054da8141c921f3194aaa12

https://sfile.powerballgame.co.kr/profileImg/66f4f115a64a31e4f71c7955b768c6a0.gif?1589995072

8

 

이렇게 3가지 인데요. 저 3가지 란에 (.*) 를 쓰는거 같고...나머지 부분에는 다 /\ 이런거 다 넣음 되는줄 알았는데...안되 더라구요.

 

저 3가지 찾고자 하는값을 정규식을 이용해서 추출하면 된다는....모든 구글링의 동일한 답변인데...

어떤 규칙이 필요한건지요...도와주세요~~ㅜㅜ

 

 

 

 

이 질문에 댓글 쓰기 :

답변 3

정규식의 공부는 https://regex101.com/ 여기를 통해서 하시면 됩니다.

 

우의 예시에 나온 정규식으로 테스트해 보겠습니다.


/\<em class=\"curPrice.+\"\>(.*)\<\/em\>/

 

이 문장을 regex101.com 에 넣으면 각각에 대한 설명이 나오니 참조하시고

 

이것에 매칭되는 html이 아래라고 하면


<em class="curPriceApple">100.00</em>
 

 

(.*) 이 Group1을 나타내는데..  가격을 가져 온다고 생각하시면 됩니다.

정규식은 따로 문법이 존재하며 해당 문법에 맞게 작성하시면 되고 복잡하여 그걸 외우고 쓰는 사람은 거의 없습니다.
필요할 때 문서를 보고 작성하는 경우가 대부분입니다.
문법의 경우 인터넷에서 검색만 해도 쉽게 나옵니다.

스누피라는 것을 써 본적은 없습니다만,

길고 긴 HTML 문자열에서 정규식만으로 찾아낸다는 것이 쉬운 일은 아닌  것 같아서요.

스크래핑(요즘엔 웹크롤링이라고도 하지만)기술이라는 것이

길고 긴 문자열에서 원하는 것만 찝어내는것이고,

파이선의 뷰티플숲과 같은 PHP 라이브러리를 찾는 것은 어떨런지요.

 

php web scraping selector  ==> 이렇게 구글링을 하였고...

https://dev.to/sayopaul/web-scraping-in-php-using-goutte--4p6h

이런 블로그가 나오네요...

    $crawler = $crawler->filter('body > p');

이렇게 selector를 이용하여 찾아낸다면 더 정확한 값을 찾으실 수 있지 않을까요?

 

저라면... 정규식으로 안하고 selector로 할 것 같아서 답변 남겨봅니다.

 

https://github.com/FriendsOfPHP/Goutte

음... 괜찬은 라이브러리인듯요... 더 구글링해보면 더 좋은 것들도 있겠죠?

 

(해보진 않았어요~~~)

답변을 작성하시기 전에 로그인 해주세요.
전체 123,641 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT