2010-01-14 2 views
-3

안녕하세요이 필요 그래서 내가웹 사이트를 구문 분석하고 정보를 얻는 나는

그래서 내가 애플을 검색하는 경우 nytimes.com에 최대 검색 용어의 첫 번째 기사의 URL을 검색해야합니다. 이 링크는 결과를

http://query.nytimes.com/search/sitesearch?query=Apple&srchst=cse

을 반환 그리고 당신은 당신이 찾고있는 용어와 함께 애플을 대체합니다.

해당 링크를 클릭하면 당신은 애플사가

나는이 링크의 URL을 얻을하고 가고 싶은 말은 경우에 뉴욕 타임즈는 물어 볼 것입니다. 당신이 애플 관련 기사를 볼 수 아래로 스크롤하면

그런 다음 당신은 Apple Inc.의

에 대한 정보를 많이 얻을 것이다.

그래서 궁극적으로이 페이지의 첫 번째 기사 URL이 필요합니다.

그래서 나는이 문제를 어떻게 해결해야할지 모릅니다. Java를 사용합니까? 또는 무엇을 사용합니까? 어떤 도움을 주시면 대단히 감사하겠습니다. 나중에이 현상금을 부치 겠지만 최대한 빠른 답변이 필요합니다.

감사

편집 : 우리는이 자바에서 할 수 있습니까?

답변

0

당신은 확실히 자바로 할 수 있습니다. HttpURLConnection 클래스를 살펴보십시오. 기본적으로 URL에 연결 함수를 호출하면 페이지 내용 (예 : HTML 텍스트)이 포함 된 입력 스트림이 반환됩니다. 그런 다음이를 처리하고 원하는 정보를 파싱 할 수 있습니다.

설명하는 프로젝트에서 두 가지 문제가 있습니다. 첫 번째, 그리고 아마도 더 작은 도전은 웹 페이지에 연결하고 프로그램 내에서 텍스트를 잡는 방법의 메커니즘을 알아내는 것입니다. 두 번째이고 아마도 더 큰 도전은 텍스트에서 원하는 정보를 추출하는 방법을 정확하게 파악하는 것입니다. 귀하의 요구 사항에 대한 세부 사항은 명확하지 않지만 찾고있는 것을 찾기 위해 많은 텍스트를 분류해야합니다.momemnt에서 NY Times 사이트를 실제로 보지 않고도 예쁜 그림, 회사 로고 및 헤드 라인과 같은 모든 종류의 장식을 가지고 있으며 메뉴 및 광고 및 모든 종류의 물건이 될 것이라고 확신합니다. . NY Times 또는 거의 모든 상업용 웹 사이트가 관심있는 기사에 대한 링크 만 포함하는 검색 페이지를 반환 할 것이라는 점을 진심으로 의심합니다. 어떻게 든 프로그램은 첫 번째 링크가 "라인에 가입"페이지, 두 번째는 광고, 세 번째는 고객 서비스, 네 번째와 다섯 번째는 추가 광고, 여섯 번째는 홈 페이지 등입니다. 마침내 실제로 하나에 도달 할 때까지 관심있는 링크를 어떻게 식별 할 것입니까? 아마도 인간에게 인식 될 수 있도록 제목이나 서식이 있지만 프로그램에서 재생하기가 어려울 수있는 혼란을 가려 내기 위해 많은 직관을 사용합니다.

행운을 빈다.

1

표준 urllib 모듈과 함께 파이썬을 사용하면 페이지를 가져올 수 있고 훌륭한 HTML 파서 BeautifulSoup을 사용하여 페이지에서 필요한 정보를 얻을 수 있습니다. 주제에

import urllib2 
from BeautifulSoup import BeautifulSoup 

page = urllib2.urlopen("http://www.icc-ccs.org/prc/piracyreport.php") 
soup = BeautifulSoup(page) 
for incident in soup('td', width="90%"): 
    where, linebreak, what = incident.contents[:3] 
    print where.strip() 
    print what.strip() 
    print 

this is 멋지고 상세한 기사를 다음 documentation of BeautifulSoup에서

, 여기에 웹 페이지를 가져 와서 그것에서 약간의 정보를 추출하는 샘플 코드입니다.

+0

거기에 Java 솔루션이 있습니까? – SuperString

+1

필자는 거기에있을 것이라고 확신하지만,이 Python과 같은 작업을하는 것이 바람직합니다. 당신은 훨씬 짧은 시간 내에 실행 가능한 실행 가능한 솔루션을 갖게 될 것이고 수정하기도 더 쉬울 것입니다. –

0

HTML Agility Pack 을 사용하여 C#에서 또는 XHTML 사이트가 유효한 경우 LINQ to XML을 사용하여이 작업을 수행 할 수 있습니다. EDIT : 유효한 XHTML이 아닙니다. 나는 확인했다. 자신의 웹 사이트를 변경하는 경우,이 코드가 작동하지 않을 수 있다는

var doc = new HtmlWeb().Load(@"http://query.nytimes.com/search/sitesearch?query=Apple&srchst=cse"); 
var url = HtmlEntity.DeEntitize(doc.DocumentNode.Descendants("ul") 
           .First(ul => ul.Attributes["class"] != null 
              && ul.Attributes["class"].Value == "results") 
           .Descendants("a") 
           .First() 
           .Attributes["href"].Value); 

참고 :

다음 (테스트) 코드는 첫 번째 검색 결과의 URL을 얻을 것이다.

+0

Java, C++ 또는 Python을 선호합니다. 왜냐하면 그것들은 제가 가장 익숙한 언어이기 때문입니다. – SuperString

+1

당신은 그들에게 친숙 할 지 모르지만 나는 그렇지 않습니다. – SLaks

관련 문제