Вернуться   D3Scene.Ru Софт портал игр | Хаки | Проги | Статьи > Другое > Информационные технологии > Программирование > С++/C#
Присоединяйся к нам



Ответ
 
Опции темы Опции просмотра
Старый 11.11.2011, 12:11   #1
Старожил


 
Аватар для gg.Groove
 
Регистрация: 21.08.2010
Адрес: Almaty
Сообщений: 1,054
Репутация: 212
Автор По умолчанию

Пишем парсер для сайта


Сегодня я покажу вам как написать парсер UID'ов для phpBB. Сегодня нашей целью будет megatorrents.org
  • Изначально спасибо Neo с d3scene.ru, за то толкнул на мысль на регулярных выр-ях.
  • Ладно сначала теория. Как мы будем получать список уидов и писать его в файл.
  • Прочитаем саму страницу, в данном случае это target.txt
  • Найдем в добавим в список все что будет соответствовать Рег. Выр. u=\d{6}
  • Потом за###рим список в строку и с###рим рег. выр. \d{6} в список
  • Потом опять за###рим список в строку и запишем строку в файл.

Для облегчения состаления RegEX я использовал RegexBuddy
Некоторые куски кода взял с гугла. Код не очень оптимален, писал ночью

using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;

namespace MT.Parser
{
internal class Program
{
private static void Main(string[] args)
{

//читаем файл
StreamReader streamReader = new StreamReader("target.txt");
string subjectString = streamReader.ReadToEnd();
streamReader.Close();

//парсим первый раз
StringCollection resultList = new StringCollection();
try
{
Regex regexObj = new Regex(@"u=\d{6}");
Match matchResult = regexObj.Match(subjectString);
while (matchResult.Success)
{
resultList.Add(matchResult.Value);
matchResult = matchResult.NextMatch();
}
}
catch (ArgumentException ex)
{
//MessageBox.Show("Fuck yourself", "Error");
}


var list = resultList.Cast<string>().ToList();
//список в строку
string dogCsv = string.Join(Environment.NewLine, list.ToArray());

//парсим второй раз
StringCollection resultList2 = new StringCollection();
try
{
Regex regexObj = new Regex(@"\d{6}");
Match matchResult = regexObj.Match(dogCsv);
while (matchResult.Success)
{
resultList2.Add(matchResult.Value);
matchResult = matchResult.NextMatch();
}
}
catch (ArgumentException ex)
{
// Syntax error in the regular expression
}

//второй парс в строку
var list2 = resultList2.Cast<string>().ToList();
string dogCsv2 = string.Join(Environment.NewLine, list2.ToArray());
//
if (File.Exists(path: "result.txt"))
{
File.Delete("result.txt");
}
StreamWriter file = new System.IO.StreamWriter("result.txt");
file.WriteLine(dogCsv2);
file.Close();
Console.ReadKey();
}
}
}


--------------------------------------
Colored with [Ссылки скрыты от гостей.]
__________________

[Ссылки скрыты от гостей.]
  Ответить с цитированием Наверх
Старый 16.11.2011, 21:43   #2
Рядовой
 
Аватар для Seo
 
Регистрация: 11.02.2010
Сообщений: 49
Репутация: 156
Отправить сообщение для Seo с помощью ICQ
По умолчанию

Могу натолкнуть на идею парсера vkontakte на php, ну и еще может быть чем-то.

Добавлено через 33 секунды
Естественно с авторизацией.
__________________
[Ссылки скрыты от гостей.]

Последний раз редактировалось Seo; 16.11.2011 в 21:43. Причина: Добавлено сообщение
  Ответить с цитированием Наверх
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Powered by vBulletin
Copyright © 2017 vBulletin Solutions, Inc.
Перевод: zCarot | Дизайн: G-A | Верстка: OldEr
Текущее время: 01:14. Часовой пояс GMT +4.