2010-01-23 3 views
0

JCLRegEx에서 Delphi를 사용하고 있으며 Google 검색에서 모든 결과 URL을 캡처하려고합니다. 나는 HackingSearch.com을 보았고 그들이보기에는 RegEx 예제가 있지만, 시도 할 때 어떤 결과도 얻을 수 없다.Google 검색에서 URL을 추출하는 데 사용할 수있는 정규식은 무엇입니까?

내가 비슷한에 사용하고 있습니다 : 나는 TPerlRegEx를 설치할 때마다 이후 두와의 충돌을 얻을

Var re:JVCLRegEx; 
    I:Integer; 
Begin 
    re := TJclRegEx.Create; 

    With re do try 
    Compile('class="?r"?>.+?href="(.+?)".*?>(.+?)<\/a>.+?class="?s"?>(.+?)<cite>.+?class="?gl"?><a href="(.+?)"><\/div><[li|\/ol]',false,false); 
    If match(memo1.lines.text) then begin 
     For I := 0 to captureCount -1 do 
     memo2.lines.add(captures[1]); 
    end; 
    finally free; 
    end; 
    freeandnil(re); 
end; 

정규식을 사용할 수 hackingsearch.com

에서 내가 델파이 제다이 버전을 사용하고 있습니다. ..

+1

'code'와'pre' 태그에 넣는 대신 코드를 선택하고 Ctrl-k를 눌러서 포맷하거나 (각 공백을 4 줄 간격으로 수동으로 들여 쓰기) 코드를 선택하십시오. 그리고 btw, html을 정규식으로 구문 분석하지 말고 html 파서를 대신 사용하십시오. 이걸 본 적이 있습니까? http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 – Amarghosh

+0

그건 PHP 코드, 델파이 코드가 필요합니다. 그리고 내가 만났던 모든 델파이 파서는 그렇게 좋지 않습니다. 나는 어떤 일을하고 다른 일을 할 수있는 사람을 얻을 수 있습니다. RegEx는 더 좋은 해결책 인 것처럼 보였습니다. –

+2

Chuck Norris조차도 정규식으로 html을 파싱 할 수있는 사람은 아무도 없습니다. – Amarghosh

답변

0
 
class=r?>.+?href="(.+?)".*?>(.+?)<\/a>.+?class="?s"?>(.+?)<cite>.+?class="?gl"?> 

작품을 지금.

+0

누구든지 저에게 부정적인 감사를 준 사람, 고맙습니다! –

+0

나는 당신에게 다운 다운을하지 않았지만 당신이 부정적인 피드백을 "얻은"것은 당신이 한 일을 설명하지 않았다는 것입니다. 이것이 이전 솔루션과 어떻게 다른가요? – johnny

+0

정규식 코드를 현재 Google 출력으로 변경했습니다. –

0

RegExBuddy을 볼 필요가있는 모든 언어의 정규식을 디버깅해야하는 경우 무료는 아니지만 하루 만에 비용을 지불하게됩니다.

+0

나는 그것을 다시 들여다 볼 것이다. 나는 잠시 뒤를 돌아다 보았다. 아마도 $ 40의 가치가있을 것이다. –

+0

정규식을 테스트하기 위해 http://yoy.be/re를 만들었고 모든 종류의 모양과 양식으로 큰 덩어리의 데이터로 작업하도록했습니다. –

1

논외 당신은 구글 AJAX 검색 API를 시도 할 수 있습니다 : http://code.google.com/apis/ajaxsearch/documentation/

+0

API는 결과 데이터가 충분하지 않아 10 개의 결과 만 제공합니다. 나는이 부분을 제외한 모든 것을 위해 API를 사용한다. –

1

아래는 Google 검색 결과에서 관련 항목으로 python tuple입니다. (여기에 새 라인을 추가하여 화면에 맞게 수정했지만 Firebug에서 공개 한 Google 소스에서 얻은 원시 문자열에 대해 정규식을 테스트했습니다. 귀하의 정규식은이 문자열에 대한 일치를 제공하지 않았습니다.

<li class="g w0"> 
    <h3 class="r"> 
    <a onmousedown="return rwt(this,'','','res','2','AFQjCNG5WXSP8xy6BkJFyA2Emg8JrFW2_g','&amp;sig2=4MpG_Ib3MrwYmIG6DbZjSg','0CBUQFjAB')" 
     class="l" href="http://www.korokithakis.net/tutorials/python">Learn <em>Python</em> in 10 minutes | Stavros's Stuff</a> 
    </h3> 
    <span style="display: inline-block;"> 
    <button class="w10"> 
    </button> 
    <button class="w20"> 
    </button> 
    </span> 
    <span class="m">&nbsp;<span dir="ltr">- 2 visits</span>&nbsp;<span dir="ltr">- Jan 21</span></span> 
    <div class="s"> 
    The data structures available in <em>python</em> are lists, <em>tuples</em> 
    and dictionaries. Sets are available in the sets library (but are built-in in <em> 
    Python</em> 2.5 and <b>...</b><br> 
    <cite> 
    www.korokithakis.net/tutorials/<b> 
    python</b> 
    - 
    </cite> 
    <span class="gl"> 
    <a onmousedown="return rwt(this,'','','clnk','2','AFQjCNFVaSJCprC5enuMZ9Nt7OZ8VzDkMg','&amp;sig2=4qxw5AldSTW70S01iulYeA')" 
     href="http://74.125.153.132/search?q=cache:oeYpHokMeBAJ:www.korokithakis.net/tutorials/python+python+tuple&amp;cd=2&amp;hl=en&amp;ct=clnk&amp;client=firefox-a"> 
     Cached 
    </a> 
    - <button title="Comment" class="wci"> 
    </button> 
    <button class="w4" title="Promote"> 
    </button> 
    <button class="w5" title="Remove"> 
    </button> 
    </span> 
    </div> 
    <div class="wce"> 
    </div> 
    <!--n--> 
    <!--m--> 
</li> 

FWIW, 나는 많은 이유 중 하나가 모든이 결과에는 <Va> 없다는 것입니다 같아요. Firebug에서 전체 HTML 소스를 복사하여 정규 표현식과 일치 시키려고했는데 전혀 일치하지 않았습니다.

Google은 결과를 표시하는 방식을 수시로 바꿀 수 있습니다. 특정 시간에 로그인 상태, 웹 기록 등의 요인에 따라 달라질 수 있습니다. 사용했던 특정 정규식이 효과가있을 수 있습니다. 지금 당장은,하지만 장기적으로 유지하기가 어려울 것입니다. 사람들은 솔루션이 안정적이지 않다는 것을 알기 때문에 html 파서를 사용하는 대신 정규식을 제공하는 것이 좋습니다.

+0

@Amarghosh : 정규 표현식을 사용하여 html 구문 분석에 관한 주제에 관하여 전적으로 당신과 함께합니다. 그러나 이것은 호언 장담이며 대답이 없으며 절대적으로 아무것도 달성하지 못합니다. 이 문제를 해결하고 해결 방법이라고 주장하는 답변에 댓글을 추가하는 것이 좋습니다. – mghie

+0

@mghie이 게시물은 그의 코멘트에서 크게 OP의 음색에 영감을 얻었습니다. 호언 장담을 삭제하라고 명령했다. – Amarghosh

+0

감사합니다. 훨씬 건설적인 +1. – mghie

관련 문제