Автоматизация работы 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