2012-06-26 2 views
1

감사합니다.Perl wget이 "greping"하지 않습니다.

이 루프합니다 ($ _ 변수에) URL을 제공하고

foreach(@my_array) { 
    $browser->get($_);  
    system ("wget -q -O -\"$_\" | grep -oe '\\w*.\\w*@.\\w*.\\w\\+' | sort -u"); 
} 
print EMAILS; 

질문을 볼 수 있습니다 내 생각은 처리를 위해 wget과 각 URL을 보낼 수 있었다 :

1)를 grep은 grep하지 않으며 $ URL을 얻습니다. $

2) 출력 파일에 결과를 올바르게 전송하지 못하는 것 같습니다. EMAILS는 위의 라인에서 생성 된 출력 파일의 핸들.

3) 나는 퍼팅, 다른 변형을 시도 A> 경우 output.txt

system ("wget -q -O -\"$_\" | grep -oe '\\w*.\\w*@.\\w*.\\w\\+' > output.txt| sort -u"); 

, 그 괄호에 포함하지만

무시됩니다 크롤링 동안

4) 질문은 해당 그렙이 완료되었는지 여부 서버에서 또는 wget 모든 파일을 다운로드하고 내 컴퓨터 grep 모든 이메일에서 다음? 당연히 전체 웹 사이트를 다운로드하고 싶지 않습니다.

당신에게 wget을가 (모든 파일을 다운로드) 완료 후

+1

시스템 호출이 무엇을하고 있는지 설명하지 않는 이유는 무엇입니까? 다운로드 한 웹 페이지를 grep하려고하십니까? – TLP

+0

예, wget은 $ _에 들어있는 이동해야하는 URL을받습니다. 전체 웹을 통해 크롤링해야하므로 -r 재귀 명령이 있습니다. grep이 이메일을 가져옵니다. 그러나 출력 파일에서 wget의 URL 목록 만 가져 왔지만 grep은 쉘에서 작동했지만 grep이 perl 명령에서 전자 메일을 전달하지 않습니다. – iaintunderstand

답변

2

그렙 수행을 많이 감사합니다. 또한 파일로 출력해도 올바른 정보가 sort 명령에 전달되지 않습니다.

LWP는 웹 페이지를 통해 이메일 주소를 검색 할 때 더 유용 할 수 있습니다. URL 이전

system ("wget -q -O - \"$_\" | grep -oe '\\w*.\\w*@.\\w*.\\w\\+' | sort -u"); 
+0

대단히 감사합니다. 그것. (해병대에 대한 긍정적 인 포인트 :) 아, 그런데, 사실 나는 LWP에서 파생 된 Mechanize를 사용하고 있습니다. 이것은 $ browser -> $ _가있는 곳입니다. 그러나 당신은 어떻게 그것에 대해 가겠습니까? content 명령을 사용하여 텍스트로 다운로드 할 수 있습니까? 또는 당신은 다운로드 할 필요없이 그 자리에서 이메일을 선택하도록 그 정규 표현식을 넣을 수 있다는 것을 의미합니까? 흥미롭게도 Mechanize는 URL을 fech하기위한 기능을 내장하고 있습니다 (즉, 내가 가지고있는 방법입니다). 이메일에는 없습니다. – iaintunderstand

+0

@iaintunderstandstand YUTT !! – ZnArK

+0

@iaintunderstand는'$ mech-> get ($ uri);를 사용하는 것처럼 보입니다. $ mech-> content (...);'이 후자는 정규식을 사용하여 전자 메일을 제거 할 수있는 본문 내용을 반환합니다. http://search.cpan.org/dist/WWW-Mechanize/lib/WWW/Mechanize.오후 – ZnArK

1

보인다. 구제가 ​​조기에 이루어졌습니다.

system("wget -q -O - \"$_\" | grep -oe '\\w*.\\w*@.\\w*.\\w\\+' | sort -u >output.txt"); 

당신은 system$_ 변경에 대해 어떻게 생각 하죠?

+0

고맙습니다. 내일 다시 시도 할 수는 있습니다. 문제가 될지 모르겠다. 그럴 수 있니? 파일에 인쇄 된 URL을 얻었습니까? 공간 부족으로 인해 grep이 작동하지 않습니까? – iaintunderstand

1

누락 공간 : 당신이 URL 전에 공간을 잊었다처럼

http://search.cpan.org/dist/libwww-perl/lib/LWP.pm

+0

시스템이 $ _을 (를) 변경한다고 생각하게 만드는 것은 무엇입니까? 내 시각화는 wget이 $ _에 포함 된 URL로 이동하여 이후에 grepping을 다운로드하고 수행한다는 것입니다. 또 다른 질문은 루프가 어떻게 돌아가는지에 관한 것입니다. wget은 웹 다운로드를 모두 마치고 grep을 실행하고 전자 메일을받은 다음 다음 URL로 계속 진행합니까? – iaintunderstand

+0

"내 비주얼라이제이션은 wget이 $ _에 포함 된 URL로 가서 다운로드 한 후 그렙을 수행하는 것입니다." 그리고 그 부분의 어떤 부분이 $ _을 (를) 변경한다고 생각하십니까? 심지어 $ _를 아는가? – ikegami

+0

'wget'은 출력을 버퍼링 할 수 있지만 (종종 4k 청크로) 수신하더라도 수신 한 결과를 출력합니다. – ikegami

관련 문제