Автоматизация работы SEO-специалиста

Определение поисковой оптимизации, элементы оптимизации. Виды работ SEO-специалиста. Работа над ключевыми словами. Работа над основным текстом. Присваивание сайту понятного пользователю доменного имени. Оптимизация динамичных страниц и программного кода.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 10.11.2014
Размер файла 3,0 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

{

// сохранение

filename = dlg.FileName;

}

return filename;

}

private void btnSaveAsText_Click(object sender, EventArgs e)

{

string fname = SaveFileName();

using (FileStream fs = new FileStream(fname, FileMode.Create))

{

using (StreamWriter sw = new StreamWriter(fs))

{

foreach (WordReportResult wrr in YM.ReportResults)

{

sw.WriteLine(wrr.KeyWord);

sw.WriteLine("SearchedAlso");

foreach (WordStat ws in wrr.SearchAlso)

sw.WriteLine("Phrase:" + ws.word + "; Shows:" + ws.frequency);

sw.WriteLine("SearchedWith");

foreach (WordStat ws in wrr.SearchWith)

sw.WriteLine("Phrase:" + ws.word + "; Shows:" + ws.frequency);

sw.WriteLine("Suggestions");

foreach (string ws in wrr.Synonyms)

sw.WriteLine("Phrase:" + ws);

}

}

}

MessageBox.Show("Запись завершена!");

}

private void btnSaveAsTegs_Click(object sender, EventArgs e)

{

string fname = SaveFileName();

string[] words = tbKeyPhrase.Text.Split((new string[] { ",", ".", " ", ";" }), StringSplitOptions.RemoveEmptyEntries); ;

string content = "";

using (FileStream fs = new FileStream(fname, FileMode.Create))

{

using (StreamWriter sw = new StreamWriter(fs))

{

foreach (string word in words)

{

content += word + ", ";

}

content = content.Substring(0, content.Length-2);

sw.WriteLine("<meta name = keywords content =\""+content+"\">");

}

}

MessageBox.Show("Запись завершена!");

}

}

}

ПРИЛОЖЕНИЕ Б

Листинг части программы, отвечающей за анализ ключевых слов

using System;

using System.Collections.Generic;

using System.Linq;

using System.Net;

using System.Text;

using System.Web.Script.Serialization;

using System.Threading;

namespace WebWordsAnalizer

{

public class YandexMethods

{

public delegate void delProgressStatus(string name);

public delegate void delProgressFinished();

public event delProgressStatus NetxIteration;

public event delProgressFinished AnalisFinished;

public List<WordReportResult> ReportResults;

private string MyToken;

public string Token { get { return MyToken; } set { MyToken = value; } }

public YandexMethods(string token)

{

MyToken = token;

ReportResults = new List<WordReportResult>();

}

private static bool IgnoreCertificateErrorHandler(object sender,

System.Security.Cryptography.X509Certificates.X509Certificate cert,

System.Security.Cryptography.X509Certificates.X509Chain chain,

System.Net.Security.SslPolicyErrors sslErr)

{

return true;

}

public void Analis(object ap)//string[] phrases, int[] regions)

{

// сначала удаляем все отчеты, т.к. они не нужны

// проверяем количество созданных отчетов "GetWordstatReportList"

AnalisParams par = (AnalisParams)ap;

string[] phrases = par.Phrases;

int[] regions = par.Regions;

string[] reports = WordstatReportListHandler(WordstatReportList());

foreach (string report in reports)

{

int id = int.Parse(report);

string delreport = DeleteWordstatReport(id);

}

//если нет - создаем "CreateNewWordstatReport"

int report_id = CreateWordstatReportHandler(CreateWordstatReport(phrases, regions));

// ждем, чтобы отчет успел сформироваться

System.Threading.Thread.Sleep(1000);

// По id отчета запрашиваем инфу позапросам "GetWordstatReport"

WordReportHadler(WordstatReport(report_id), phrases, regions[0]);

// запрашиваем подсказки отдельно для каждого слова

for (int i = 0; i < phrases.Length; i++ )

{

string[] arr = { phrases[i] };

ReportResults[i].Synonyms = SuggestionsHandler(KeywordsSuggestion(arr)).ToList();

}

NetxIteration("Вывод данных");

AnalisFinished();

}

public void WordReportHadler(string words, string[] phrases, int region_id)

{

string[] arr, arr_2, sa, sw;

sa = new string[] { };

sw = new string[] { };

string[] splitters = new string[phrases.Length];

for (int i = 0; i < phrases.Length; i++ )

{

splitters[i] = "\"GeoID\":[\""+region_id+"\"],\"Phrase\":\""+phrases[i]+"\"}";

}

// разделяем ответ по ключевм словам

arr = words.Split(splitters, StringSplitOptions.RemoveEmptyEntries);

ReportResults.Clear();

for (int i = 0; i < arr.Length-1; i++)

{

NetxIteration("Обработка " + phrases[i]);

ReportResults.Add(new WordReportResult(phrases[i]));

arr_2 = arr[i].Split((new string[] { "SearchedWith" }), StringSplitOptions.RemoveEmptyEntries);

if (arr_2.Length > 0) sa = arr_2[0].Split((new string[] { "SearchedAlso", "data", "Shows", "Phrase", ",", ".", "{", "}", "\"", ":", "[", "]" }), StringSplitOptions.RemoveEmptyEntries);

if (arr_2.Length > 1) sw = arr_2[1].Split((new string[] { "data", "Shows", "Phrase", ",", ".", "{", "}", "\"", ":", "[", "]" }), StringSplitOptions.RemoveEmptyEntries);

if (sa.Length >0)

for (int j = 0; j < sa.Length - 1; j += 2)

{

if (sa[j] != "GeoID")

ReportResults.Last().SearchAlso.Add(new WordStat(sa[j + 1], sa[j]));

}

if (sw.Length > 0)

for (int j = 0; j < sw.Length - 1; j += 2)

{

ReportResults.Last().SearchWith.Add(new WordStat(sw[j + 1], sw[j]));

}

}

}

public string[] SuggestionsHandler(string phrase)

{

string[] arr = phrase.Split((new string[] {"data", "Shows", "Phrase", ",", ".", "{", "}", "\"", ":", "[", "]" }), StringSplitOptions.RemoveEmptyEntries);

return arr;

}

private string DeleteWordstatReport(int id)

{

var DeleteReport = new

{

token = MyToken,

method = "DeleteWordstatReport",

param = id

};

return TypicalRequest(DeleteReport);

}

public string GetAuth(string[] myparam )

{

// входные данные

var ClientInfo = new

{

token = MyToken,

method = "GetClientInfo",

param = myparam,

locale = "ru"

};

return TypicalRequest(ClientInfo);

}

public string WordstatReportList()

{

var WordstatReportList = new

{

token = MyToken,

method = "GetWordstatReportList",

locale = "ru"

};

return TypicalRequest(WordstatReportList);

}

private string[] WordstatReportListHandler( string reports)

{

string[] reports_arr;

reports_arr = reports.Split((new string[] { "data", "StatusReport", "Done", "ReportID", ",", ".", "{", "}", "\"", ":", "[", "]" }), StringSplitOptions.RemoveEmptyEntries);

return reports_arr;

}

public string KeywordsSuggestion(string[] words)

{

var KeywordsSuggestion = new

{

token = MyToken,

method = "GetKeywordsSuggestion",

param = new { Keywords = words},

locale = "ru"

};

return TypicalRequest(KeywordsSuggestion);

}

public string Regions()

{

var GetRegions = new

{

token = MyToken,

method = "GetRegions",

locale = "ru"

};

return TypicalRequest(GetRegions);

}

public string CreateWordstatReport(string[] phrases, int[] regions)

{

var CreateNewWordstatReport = new

{

token = MyToken,

method = "CreateNewWordstatReport",

param = new

{

Phrases = phrases,

GeoID = regions

},

locale = "ru"

};

return TypicalRequest(CreateNewWordstatReport);

}

public int CreateWordstatReportHandler(string report)

{

string[] arr = report.Split((new string[] { "data", "Shows", "Phrase", ",", ".", "{", "}", "\"", ":", "[", "]" }), StringSplitOptions.RemoveEmptyEntries);

return int.Parse (arr[0]);

}

public string WordstatReport(int report_id)

{

var GetWordstatReport = new

{

token = MyToken,

method = "GetWordstatReport",

param = report_id,

locale = "ru"

};

return TypicalRequest(GetWordstatReport);

}

private string TypicalRequest(object myparam)

{

// сериализуем объект ClientInfo в формат нотации JSON

JavaScriptSerializer jss = new JavaScriptSerializer();

string json = jss.Serialize(myparam);

// адрес для отправки json-запросов

string jurl = "https://api.direct.yandex.ru/v4/json/";

// SSL-сертификат не используется

ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(IgnoreCertificateErrorHandler);

// создаем клиента

WebClient wc = new WebClient();

// отправляем POST-запрос и получаем ответ

byte[] result = wc.UploadData(jurl, "POST", System.Text.Encoding.UTF8.GetBytes(json));

return Encoding.UTF8.GetString(result);

}

}

}

ПРИЛОЖЕНИЕ В

Листинг части программы, отвечающей за семантический анализ текста

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace WebWordsAnalizer

{

class SimanticAnaliser

{

public int SymbolsQuantity; //Количество символов

public int SymbolsQuantityNoSpace; //Количество символов без пробелов

public int WordsQuantity; //Количество слов

public int UniqWordsQuantity; //Количество уникальных слов

public int StopWordsQuantity; //Количество стоп-слов

public double Water; //Вода

public double ClassicalNausea; //Классическая тошнота документа

public double AcademNausea; //Академическая тошнота документа

public Dictionary<string, Frequency> WordQ;

public Dictionary<string, Frequency> WordNotStopQ;

public Dictionary<string, Frequency> UniqWordQ;

public Dictionary<string, Frequency> StopWordQ;

public IEnumerable<KeyValuePair<string, Frequency>> WordNotStopQSort;

public IEnumerable<KeyValuePair<string, Frequency>> StopWordQSort;

private double max_q;

public double freqaver;

private string[] StopWords = {"а", "без", "более", "бы", "был", "была", "были", "было", "быть", "в", "вам", "вас", "весь", "во", "вот", "все", "всего","всех","вы", "где","да", "даже", "для", "до", "его", "ее", "если", "есть", "еще", "же", "за", "здесь", "и", "из", "или", "им", "их", "к", "как", "ко", "когда", "кто", "ли", "либо", "мне", "может", "мы", "на", "надо", "наш", "не", "него", "нее", "нет", "ни", "них", "но", "ну", "о", "об", "однако", "он", "она", "они", "оно", "от", "очень", "по", "под", "при", "с", "со","так", "также", "такой", "там", "те", "тем", "то", "того", "тоже", "той", "только", "том", "ты", "у", "уже", "хотя", "чего", "чей", "чем", "что", "чтобы", "чье", "чья", "эта", "эти", "это", "я"};

public SimanticAnaliser(string text)

{

SymbolsQuantity = text.ToCharArray().Length;

SymbolsQuantityNoSpace = text.Replace(" ", "").ToCharArray().Length;

string[] words = text.Split((new string[] { ",", ".", ":", ";", "!", "?", " ", "\"", "-","(",")","*", "1","2","3","4","5", "6", "7","8", "9", "0" }), StringSplitOptions.RemoveEmptyEntries);

WordQ = new Dictionary<string,Frequency>(); // все слова в тексте

UniqWordQ = new Dictionary<string, Frequency>(); // уникальыне слова

StopWordQ = new Dictionary<string, Frequency>(); // стоп слова

WordNotStopQ = new Dictionary<string, Frequency>(); // все не стоп слова

max_q = 0;

//считаем коичество слов в тексте

foreach (string word in words)

{

// проверяем является и слово стоп словом

bool exists = Array.Exists( StopWords, delegate(string s) { return s.Equals(word.ToLower()); });

if (!WordQ.ContainsKey(word))

WordQ.Add(word, new Frequency(1));

else WordQ[word].Q += 1;

if (!exists)

if (!WordNotStopQ.ContainsKey(word))

WordNotStopQ.Add(word, new Frequency(1));

else WordNotStopQ[word].Q += 1;

max_q = Math.Max(max_q, WordQ[word].Q);

if (!UniqWordQ.ContainsKey(word))

UniqWordQ.Add(word, new Frequency(1));

else

UniqWordQ.Remove(word);

if (exists)

if (!StopWordQ.ContainsKey(word) )

StopWordQ.Add(word, new Frequency(1));

else StopWordQ[word].Q += 1;

}

WordsQuantity = words.Length;

UniqWordsQuantity = UniqWordQ.Count;

StopWordsQuantity = StopWordQ.Count;

// считаем долю слов

CountFrequency();

WordNotStopQSort = WordNotStopQ.OrderByDescending(a => a.Value.Q);

StopWordQSort = StopWordQ.OrderByDescending(a => a.Value.Q);

ClassicalNausea = Math.Sqrt(max_q);

CountAcademNausea();

}

private void CountFrequency()

{

foreach (var kvp in WordQ)

kvp.Value.F = kvp.Value.Q / WordsQuantity*100;

foreach (var kvp in UniqWordQ)

kvp.Value.F = kvp.Value.Q / WordsQuantity * 100;

foreach (var kvp in StopWordQ)

kvp.Value.F = kvp.Value.Q / WordsQuantity * 100;

freqaver = 0;

foreach (var kvp in WordNotStopQ)

{

kvp.Value.F = kvp.Value.Q / WordsQuantity * 100;

freqaver += kvp.Value.F;

}

freqaver /= WordNotStopQ.Count;

}

private void CountAcademNausea()

{

double q;

q = 0;

// считаем количество частовстреяающихся не стоп слов

foreach (var kvp in WordNotStopQ)

{

if (kvp.Value.F > freqaver)

q += kvp.Value.Q;

}

AcademNausea = q / WordsQuantity * 100;

}

}

public class Frequency

{

public double Q;

public double F;

public Frequency(int q)

{

Q = q;

}

}

}

Размещено на Allbest.ru


Подобные документы

  • Функционирование систем массового обслуживания с разными типами заявок. Построение математической модели. Постановка задачи оптимизации среднего времени ожидания. Решение задачи оптимизации и разработка программного кода для оптимизации системы.

    курсовая работа [538,5 K], добавлен 11.08.2017

  • Графическая иллюстрация работы методов оптимизации. Работа с запрограммированными методами первого, второго и нулевого порядков. Анализ свободно распространяемого программного обеспечения. Применяемая архитектура практикума, пользовательский интерфейс.

    дипломная работа [3,9 M], добавлен 14.10.2010

  • Функционирование систем массового обслуживания с разными типами заявок. Построение математической модели, постановка задачи оптимизации среднего времени ожидания. Решение задачи оптимизации системы. Разработка программного кода для оптимизации системы.

    дипломная работа [581,7 K], добавлен 27.10.2017

  • Исследование методов оптимизации программного кода на языке Си с помощью компилятора. Тестирование результатов утилитой optbench.c. Определение особенностей оптимизации компилятора на собственной программе. Удачные примеры быстроты и компактности кода.

    лабораторная работа [26,5 K], добавлен 17.12.2012

  • Назначение и классификация методов поисковой оптимизации. Эффективность поискового метода. Методы поиска нулевого порядка: исходные данные, условия, недостатки и применение. Структура градиентного метода поиска. Основная идея метода наискорейшего спуска.

    лекция [137,8 K], добавлен 04.03.2009

  • Выделение объектов. Работа с объектами. Форматирование данных. Автоматизация ввода данных. Форматирование ячеек. Абсолютные и относительные адреса. Присваивание имен ячейкам и блокам ячеек. Работа с книгами.

    реферат [15,0 K], добавлен 17.11.2002

  • Общее описание и особенности использования программы, предназначенной для определения нечетных чисел, находящихся в массиве чисел. Листинг и методы оптимизации данной компьютерной программы. Источники оптимизации кода, описание выполненных команд.

    лабораторная работа [17,4 K], добавлен 25.03.2011

  • Работа с фигурным текстом. Форматирование и редактирование текста. Редактирование узлов фигурного текста. Привязка текста к фигурам. Выравнивание текста на фигуре. Перспектива, оболочки и выдавливание. Работа с простым текстом.

    реферат [12,7 K], добавлен 21.12.2003

  • Программирование численных методов одномерной оптимизации. Решение одномерных задач оптимизации методами последовательного поиска. Градиентные методы и их применение для оптимизации на ЭВМ математических моделей объектов. Методы нулевого порядка.

    контрольная работа [257,9 K], добавлен 15.01.2009

  • Базовый синтаксис языка программирования С#. Объявление переменных и присваивание им значений. Управление порядком выполнения программы. Выполнение преобразований с помощью команд преобразования. Определение классов, конструктора, работа с файлами.

    курс лекций [692,5 K], добавлен 23.11.2009

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.