2011-01-08 5 views
0

나는 httpwebrequest에서 일하고 있었고 Google 검색 결과를 얻으려고하고 원하는 링크를 클릭하여 시뮬레이션하려고했습니다. 그게 가능하니?HttpwebRequest Simulate Click

string raw ="http://www.google.com/search?hl=en&q={0}&aq=f&oq=&aqi=n1g10"; 
string search = string.Format(raw, HttpUtility.UrlEncode(searchTerm)); 
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(search); 
request.Proxy = prox; 
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) 
{ 
using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.ASCII)) 
{ 
HtmlElementCollection html = reader.ReadToEnd(); 
browserA=reader.ReadToEnd(); 
this.Invoke(new EventHandler(IE1)); 
} 
} 
+0

WebBrowser 컨트롤에서이 작업을 수행해야합니다. – leppie

+0

다른 방법이 있습니까? –

답변

1

더 나은 옵션은 Google의 API 중 하나를 사용하는 것입니다. 코드 플렉스에 여기 Google APIs

또 다른 : 그들은 응용 프로그램을 자유롭게 구글을 사용할 수 있도록 서비스를 Google Dot Net

여기에 모든 목록이 있습니다. 이들 대부분에는 Visual Studio에서 "웹 참조 추가"에 사용할 수있는 wsdl 파일이 있습니다.

Regex 및 HtmlAgility 팩을 사용하면 웹 사이트에서 공용 서비스가 노출되지 않을 때만 최후의 수단으로 사용해야합니다. (최근에 내가 uTorrent 및 BtJunkie에 통합하기 위해 작성한 서비스에 최근에 사용해야했습니다). 구글은 분명히 사람들이 이런 방식으로 사이트를 개발하기를 원한다.

1

당신은 http://htmlagilitypack.codeplex.com/ 또는 http://www.justagile.com/linq-to-html.aspx는 "클릭"다음이 새로운 요소로 HttpWebRequest를 처리 할 요소를 찾기 위해 (이 도구와 함께 필요한 경우 또한 regexps '에 사용할 수 있습니다)를 사용하여 페이지를 구문 분석 할 수있다. 전화는 http://en.wikipedia.org/wiki/Web_scraping입니다.

또한 프록시 서버 목록 사용에 대해 생각할 필요가 없도록 IP 주소에서 오는 많은 요청이있을 경우 웹 스크리핑 리소스가 IP 주소를 금지 할 수 있음을 기억하십시오.

+0

regex'es의 사용에 관해서 : http://stackoverflow.com/questions/1732348 –

+0

나는 Regex로 완전한 HTML 페이지를 파싱하는 조언을 의미하지는 않았지만, Regex feg를 HtmlAgilityPack과 함께 사용하는 것이 가능하다. 상황에 따라 필요합니다. 그러나 어쨌든 나는 명확성을 위해 나의 대답을 편집했다. – Kuncevic