Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Парсинг страниц


Автор: CyberTramp 13.6.2012, 21:49
Привет всем,

Подскажите в чем ошибка почему не удается получить данные
Код
        protected void Button1_Click(object sender, EventArgs e)
        {
            var request = WebRequest.Cre ate("view-source:http://www.cyprusjobs.com/index.php?module_page=my_jobs&jobs_step=jobs_details&job_jobs_id=16202");
            using (var responses = request.GetResponse())
            {
                using (var streams = responses.GetResponseStream())
                using (var readers = new StreamReader(streams))
                {
                    //в переменной html наш сайт
                    string html = readers.ReadToEnd();
                    //ищем определенное место
                    var UpdExp = new Regex(@"<td align=""left"">Job category:</td><td valign=""top"" align=""left"">(?<upd>\d.*)</tr>");
                    //в переменной upDate наша искомая дата обновления
                    string upDate = UpdExp.Match(html).Groups["upd"].Value; // дата
                    Label1.Text = upDate; //выводим значение на форму
                }
            }
        }


По логике вывод должен быть: "Marketing"

Автор: CyberTramp 13.6.2012, 22:27
Может можно как то парсить по номеру страки ?

Автор: CyberTramp 13.6.2012, 23:14
Если изменить стрoку 
var UpdExp = new Regex(@"<td align=""left"">Job category:</td><td valign=""top"" align=""left"">(?<upd>\d.*)</tr>");
на
var UpdExp = new Regex(@"<td align=""left"">(?<upd>.*) :</td>");

то парсит == Job title

есил добавить для более точного направления что то подомбное 
var UpdExp = new Regex(@"<tr>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<td align=""left"">(?<upd>.*) :</td>");
сразу труба
var UpdExp = new Regex(@"<tr><td align=""left"">(?<upd>.*) :</td>"); так же труба.

Что делать как правельно загнать в Label1 например 
<td align="left">Phone:</td>

Автор: xkor 15.6.2012, 20:34
CyberTramp, во первых "view-source:" в начале адреса явно лишнее, во вторых в вашем регулярном выражении пробельные символы между тегами не учитываются, в третьих непонятно где вы по той ссылке вообще дату нашли, Job category это категория а не дата. А "\n\t\t\t\t\t\t\t\t\t\t\t\t\t" лучше заменить на "\s*".
В общем как то так надо:
Код

var UpdExp = new Regex(@"<td align=""left"">Job category:</td>\s*<td valign=""top"" align=""left"">\s*(?<upd>.*?)\s*</td>");

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)