2011-01-14 4 views
2

Google 페이지 1에 Google 사이트가 게재되는 위치 (유기농 및 PPC)를 (일별 기준으로) 모니터링해야하는 필요성이 우리 조직 내에서 발생했습니다. 또한 주요 경쟁자가 나타나는 곳. 특정 핵심어.Google을 하루에 한 번 치고 SERP 위치를 기록하는 스크립트를 만드시겠습니까?

즉시 동료는 Google을 수동으로 명중하고 결과를 적어서 이렇게합니다. 네.

Google에 스크립트를 작성할 수 있습니다 (예 : C#을 사용).

Google 애널리틱스에서 많은 정보를 알려주지 만 경쟁 업체의 입장을 기록하지는 않으며, 원하는 데이터가 없다고 생각합니다.

질문이 있습니다. 무료로 제공되는 기본 도구가 있습니까? 우리는 그것을 자신을 작성하는 경우 그리고, 어디서부터 시작하고있다 피해야 할 명백한 함정이다

편집 : 구글 API 사용을 시사하는 답변을 - 이상이 게시물을 (구글이 검색 할 수 있습니다 예를 블록에 대한 자동화 된 요청?) Google Groups에 완전히 것을 배제하기 위해 나타납니다 :

  1. 맞춤 검색 API는 전체 웹보다 사이트가 아니라 특정 검색하도록 설정해야합니다 맞춤 검색 엔진 (CSE) 를 설정하도록 요구 .

  2. 맞춤 검색 API 약관에 명시 적으로 는 "정기적으로 정확하게" 사이트의 SERP을 측정하는 열쇠가 될 것입니다 자동화 된 쿼리를 만드는 것을 금지합니다.

제레미 R. Geerdes는

+0

, 한 가지가있다 google SERP에있는 질문은 다른 사람이 동일한 질문의 SERP에서 보는 사실에 관하여 다량을 밝히지 않는다. 순위는 사람마다, 컴퓨터에서 컴퓨터로, 데이터 센터에서 데이터 센터로, 위치마다, 그리고 우리가 알지 못하는 다른 요인들로 인해 다릅니다. 상관 관계가없는 스크랩 순위와 웹 페이지 실적은 창 밖에서 볼 수있는 것을 토대로 지구 온난화에 대해 이야기하는 것과 같습니다. –

+0

그걸 받아 들여라.하지만 무언가를 측정하는 것은 아무 것도 측정하지 않는 것보다 낫다. – hawbsl

+0

여기에 3 가지 솔루션에 대한 답변이 있습니다. http://stackoverflow.com/questions/22657548/is-it-ok-to-scrape-data-from-google-results/22703153#22703153 그 일을 아주 쉽게 끝내야합니다. – John

답변

1

Google은 실제로 "인간"상호 작용없이 검색 결과에 prohibit scraping을 표시합니다 (5.3 및 here 참조). 나는 너를 그렇게 옹호하지 않을거야. 그들이 말하는 우려는 너무 많은 사람들이이 문제를 일으킬 수 있다는 것입니다 (얼마나 많은 검색 단어를 찾을 것입니까?)뿐만 아니라 순위 게임 자체도 가능할 수 있습니다.

그렇다면 API를 사용하여 검색 결과를 처리하고 아래에서 설명한대로 HTML 결과를 사용하여 결과를 반복 할 수 있습니다.

http://www.googlerankings.com/

(참고 :. 나는이 웹 사이트와 제휴 어떠한 방식으로 오전, 그것은 단지 예입니다)

I 또는 당신이 도움을 사용할 수있는 서비스의 일부를 시도해 볼 수도 있습니다 당신은이 작업을 수행 이 서비스를 제공 할 많은 SEO 회사가 있다고 확신합니다. 스크래핑에 들어가기 전에 이러한 옵션을 살펴 보는 것이 좋습니다.

Google 검색 결과에서 기본 정보를 가져 오는 빠른 CS 클래스를 작성했습니다. 이 클래스는 위에서 언급 한 HTML Agility Pack을 사용합니다.이 도구는 XPath를 사용하여 페이지에서 찾고자하는 것을 찾을 수있게 해주는 웹 페이지를 반복하기 위해 Microsoft가 만든 아주 멋진 도구입니다. 이 경우 "// span // cite"는 url을 제공하므로이 예제에서는이를 사용합니다.

은 다음과 같이 사용합니다 : 이것은 CS 콘솔 응용 프로그램에 랩 할 수

GoogleRankScrape.Do(
    "google scraping", 
    "C:\\rankings\\", 
    "//span//cite", 
    new string[] {"stackoverflow.com","wikipedia.org","okeydoke.org"}, 
    100 
); 

다음 콘솔 응용 프로그램을 실행하려면 Windows 스케줄러를 사용합니다. 이것이 갈 수있는 다른 많은 방법이 있습니다. 이것은 단지 예일뿐입니다.

GoogleRankScrape 코드는 다음입니다 : 당신이 *에 대해 하나 개의 웹 페이지 "순위"를 참조 * A (싱글), "순위"사실 같은 것은 없다 : 잘

using System; 
using System.IO; 
using System.Text; 
using HtmlAgilityPack; 

class GoogleRankScrape 
{ 
    public static void Do(string query, string dest, string path, string[] matches, int depth) 
    { 
     Directory.SetCurrentDirectory(@dest); 

     string url = "http://www.google.com/search?q=" + query + "&num=" + depth; 

     string rp = "rankings.txt"; 

     DateTime dt = DateTime.Now; 

     string dtf = String.Format("{0:u}", dt); 
     string dtfr = String.Format("{0:f}", dt); 
     dtf = dtf.Replace("-", ""); 
     dtf = dtf.Replace(" ", ""); 
     dtf = dtf.Replace(":", ""); 

     string wp = "page" + dtf + ".html"; 
     string op = "output" + dtf + ".txt"; 

     FileInfo r = new FileInfo(rp); 
     if (!File.Exists("rankings.txt")) 
     { 
      StreamWriter rsw = r.CreateText(); 
      rsw.Close(); 
     } 

     StreamWriter rs = new StreamWriter(r.Name, true); 

     rs.WriteLine("Date: " + dtfr); 
     rs.WriteLine("Date: " + dtf); 
     rs.WriteLine("Depth: " + depth); 
     rs.WriteLine("Query: " + query); 

     HtmlWeb hw = new HtmlWeb(); 
     HtmlDocument d = hw.Load(url); 
     d.Save(wp); 

     FileInfo o = new FileInfo(op); 
     StreamWriter os = o.CreateText(); 

     HtmlDocument HD = new HtmlDocument(); 
     HD.Load(wp); 

     string check = ""; 
     string checkblock = ""; 

     var SpanCite = HD.DocumentNode.SelectNodes(path); 
     if (SpanCite != null) 
     { 
      int rank = 1; 
      foreach (HtmlNode HN in SpanCite) 
      { 
       String line = ""; 
       if (HN.InnerText.ToString().IndexOf("/") > 0) 
       { 
        line = HN.InnerText.ToString().Substring(0, HN.InnerText.ToString().IndexOf("/")); 
       } 
       else if (HN.InnerText.ToString().IndexOf(" ") > 0) 
       { 
        line = HN.InnerText.ToString().Substring(0, HN.InnerText.ToString().IndexOf(" ")); 
       } 
       else 
       { 
        line = HN.InnerText.ToString(); 
       } 
       os.WriteLine(line); 
       os.WriteLine(rs.NewLine); 

       for (int i = 0; i < matches.Length; i++) 
       { 
        checkblock = "[" + matches[i] + "]"; 
        if (line.Contains(matches[i]) && !check.Contains(matches[i])) 
        { 
         rs.WriteLine("Rank: " + rank.ToString() + ", " + matches[i]); 
         check += checkblock; 
        } 
       } 

       rank++; 
      } 

      for (int i = 0; i < matches.Length; i++) 
      { 
       checkblock = "[" + matches[i] + "]"; 
       if (!check.Contains(matches[i])) 
       { 
        rs.WriteLine("Rank: not ranked" + ", " + matches[i]); 
       } 
      } 
     } 

     os.Close(); 

     rs.WriteLine("=========="); 
     rs.Close(); 
    } 

} 
2

당신은 Html Agility Pack를 사용하여 간단한 C# 프로그램을 개발할 수 있습니다. HTML을 조작하기에 아주 좋은 오픈 소스 라이브러리이며, 사용하기가 매우 쉽습니다.

google 차단 자동 요청과 관련하여 하루에 한 번만 확인하고 확인할 키워드가 많지 않은 경우 문제가 있다고 생각하지 않습니다.

2

아마도 Google 검색 API를 살펴보면 검색에 직접 액세스하는 방법에 대한 힌트를 얻을 수 있습니다.

나는 그것을 직접 시도하지 않았지만 해결 방법이 될 수도 있습니다 .. search API을 참조하십시오.

+0

+1 결과 페이지를 스크린 캡핑하지 않는 것이 더 좋습니다. – Filburt

+0

시도해 보셨습니까? 내 편집을 참조하십시오 - 인용문이 완전히 잘못되지 않은 한 완전히 배제됩니다. – hawbsl

2

Google Webmaster Tools에서 통계를 사용 하시겠습니까?

다른 유용한 기능 중 특정 검색 구문에 대한 사이트 순위에 대한 자세한 보고서를 제공합니다.

물론 이러한 보고서는 경쟁 업체의 지위를 제공하지 않으므로 Google 검색 API를 사용하면 필요한 모든 데이터를 얻는 가장 좋은 방법입니다.

+0

감사합니다. 견적이 완전히 틀리면 API가 - 편집을 참조하십시오 - 완전히 배제되어야합니다. – hawbsl

0

Mac을 가지고 있다면 Fake를 사용할 수 있습니다. 그것은 믿을 수 없다.
http://fakeapp.com/

창만있는 경우 직접 작성해야합니다. 가장 좋은 방법은 원하는 것을 잡아내는 jQuery를 작성하는 것입니다. jQuery를 사용하여 30 분이 걸리지는 않습니다. 페이지에 대해 예약 된 작업을 실행할 수 있으므로 원하는 솔루션을 사용할 수 있습니다.

관련 문제