1 (изменено: DnsIs, 2013-04-26 10:23:12)

Тема: AutoIt3: Парсер HTML

Утра доброго.

Оказывается парсить HTML c помощью regexp-ов нельзя.


Подскажите пожалуйста какие существуют библиотеки для парсинга HTML, которые можно было бы использовать в cmd, bat файлах, в autoit3, в wsh.

В Linux имеется HTML-XML-utils - пакет утилит для работы из командной строки с HTML и XML документами. Аналога для Windows я к сожалению не нашел, а так хотелось.

Заранее благодарю.

Нас невозможно сбить с пути, нам пофигу куда идти.

2

Re: AutoIt3: Парсер HTML

Да почему же нельзя - можно. Но проявлять осторожность в этом деле. Возможно ли озвучить цели разбора html? Хотя сам когда-то интересовался такой задачей, но забросил, потому что глобального парсинга не требовалось - в основном что-то найти и преобразовать. Возможно xslt как-то может помочь. Но, учитывая насколько html может быть не well-formed, ожидать чуда не приходится.

( 2 * b ) || ! ( 2 * b )

3

Re: AutoIt3: Парсер HTML

Мне нужно погоду выковыривать с HTML страницы, хотя на самом деле может сайт и предоставит мне готовый XML (я еще не проверял). И наверняка я легко обойдусь регулярками.

Но ведь суть в том, что хочется знать "правильные" способы парсинга.

Нас невозможно сбить с пути, нам пофигу куда идти.

4

Re: AutoIt3: Парсер HTML

предоставит мне готовый XML

Не знаю, какой погодный сайт есть желание использовать. Помню, раньше брал информацию с гисметео, который предоставлял xml-файл для самостоятельного разбора и отображения погодной информации. Например, для Москвы - http://informer.gismeteo.ru/xml/27612_1.xml. Этот файл отображал с помощью xslt+css. Раньше у них было описание, как пользоваться этой услугой, сейчас информацию они не анонсируют, но и генерацию xml не убрали. Помню, что информация о погоде обновляется 4 раза в течение суток, и была рекомендация кешировать локально текущие показания и обновлять данные не чаще 4 раз.

Мне нужно погоду выковыривать с HTML страницы

Регулярки справятся с этой задачей - найти теги в которых выводится искомая информация и получить ее. Но есть потенциальная возможность смены дизайна сайта и тогда ничего работать не будет.

( 2 * b ) || ! ( 2 * b )

5

Re: AutoIt3: Парсер HTML

Круто было бы использовать xslt+css, но я кропаю autoit-скрип и не хочу вставлять туда IE-фреймы.
А погода мне нравится на http://www.intellicast.com

Нас невозможно сбить с пути, нам пофигу куда идти.

6

Re: AutoIt3: Парсер HTML

Здесь простенький (совсем простенький) пример парсинга типа "выдрать нужное".

7

Re: AutoIt3: Парсер HTML

Я так умею, но все равно спасибо.

Поднял я тему после прочтения этого.

Нас невозможно сбить с пути, нам пофигу куда идти.

8

Re: AutoIt3: Парсер HTML

Serge Yolkin пишет:

Здесь простенький (совсем простенький) пример парсинга типа "выдрать нужное".

Требуется регистрация. Большинство не увидит.

DnsIs пишет:

Круто было бы использовать xslt+css, но я кропаю autoit-скрип и не хочу вставлять туда IE-фреймы.

Если в AutoIt есть средства работы с XML (загрузка, парсинг, процессинг), то задача может быть решена средствами самого AutoIt без привлечения третьих сторон.

( 2 * b ) || ! ( 2 * b )

9

Re: AutoIt3: Парсер HTML

Rumata пишет:

Требуется регистрация. Большинство не увидит.

В таких случаях спасает http://www.bugmenot.com/

Не нашел я в autoit таких функций пока. Ищу.

Нас невозможно сбить с пути, нам пофигу куда идти.

10

Re: AutoIt3: Парсер HTML

Rumata пишет:

Требуется регистрация. Большинство не увидит.

Блин! Это же во флейме было... Да, в общем, и смотреть там особо нечего... Лучше вот (на правах шутки):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <script type="text/jscript" language="JScript">
    self.resizeTo(250,257);
    self.moveTo(screen.width-250,0);
  </script>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <meta http-equiv="X-UA-Compatible" content="IE=8" />
  <meta http-equiv="imagetoolbar" content="no" />
  <hta:application
   applicationName="RP5z"
   border="thin"
   icon="http://rp5.ru/favicon.ico"
   innerBorder="no"
   maximizeButton="no"
   minimizeButton="no"
   scroll="no"
   selection="no"
   singleInstance="yes"
   />
  <style type="text/css">
   *{margin:0;overflow:hidden;}
  </style>
  <title>Саратов</title>
</head>
<body id="b">
</body>
<script type="text/jscript" language="JScript">
  self.resizeBy(0,220-document.documentElement.clientHeight);
  with(new ActiveXObject("Msxml2.XMLHTTP")){
    open(
     'get',
     'http://rp5.ru/htmla.php?id=7303&lang=ru&bg=silver&c=navy&f=Arial&s=12&sc=4',
     true
    );
    onreadystatechange=function(){
      if(readyState==4)if(status==200)b.innerHTML=responseText;
    };
    send(null);
  }
</script>
</html>

Сохранять в UTF-8.

11

Re: AutoIt3: Парсер HTML

DnsIs пишет:

Не нашел я в autoit таких функций пока. Ищу.

Первая попавшаяся тема из яндекса: Weather & XML. Это был запрос вида "AutoIt XML".

( 2 * b ) || ! ( 2 * b )

12

Re: AutoIt3: Парсер HTML

DnsIs, посмотрите на возможности ActiveX "HTMLFile". Очень удобная вещь.

13

Re: AutoIt3: Парсер HTML

Всем спасибо, определился с методом. На выходных постараюсь доделать и выложить, мож кому пригодится.

Нас невозможно сбить с пути, нам пофигу куда идти.

14

Re: AutoIt3: Парсер HTML

Встал в тупик. Хотел погоду грабить с http://www.intellicast.com, но он показывает не точно. Мне нужен не прогноз погоды, а погода в настоящем времени.
Теперь вот не могу найти достойный источник. Сравниваю со своим градустником за стеклом и с датчиками народного мониторинга. Толку ноль. Беда.

Нас невозможно сбить с пути, нам пофигу куда идти.

15

Re: AutoIt3: Парсер HTML

?

16 (изменено: SviZ, 2013-05-21 18:15:13)

Re: AutoIt3: Парсер HTML

Парсить можно, только для такой работы надо хорошо знать RegExp'ы JavaScript и разбираемый материал д.б. на строгом синтаксисе XML. Если надо грабить через AJAX прямо в браузере, то проще полученную страницу оборачивать в элемент (тупо пихать в innerHTML) и далее работать как с DOM.

17

Re: AutoIt3: Парсер HTML

SviZ
Чтобы парсить строгий XML, знать регулярные выражения как раз--таки не обязательно. "Хороший" XML разбирается и загружается средствами XML (DOM, XPAth).

( 2 * b ) || ! ( 2 * b )

18

Re: AutoIt3: Парсер HTML

Rumata, в том и дело - либо парсите RegExp'ами, либо браузер парсит за вас. Не надо говорить, что "парсите" если это делаете через построение DOM браузером.

19

Re: AutoIt3: Парсер HTML

XML, в отличие от html, не является прерогативой браузеров. Делать разбор XML самостоятельно — при наличии идущей в комплекте ОС библиотеки — по меньшей мере нецелесообразно.

20 (изменено: SviZ, 2013-05-17 17:13:05)

Re: AutoIt3: Парсер HTML

alexii пишет:

XML, в отличие от html, не является прерогативой браузеров.

А это и не принципиально. innerHTML сожрёт любую хрень и построит DOM, но если исходные данные будут в XML, то получаемый элемент будет иметь более предсказуемую структуру.

Впрочем, пардон, я не дочитал первый пост, от этого и понесло на браузеры. А как удалить свой, я не вижу.

21 (изменено: DnsIs, 2013-05-21 15:01:59)

Re: AutoIt3: Парсер HTML

Доброго дня.

Выходные длились очень долго. )

Если вернуться назад, то началось все с того, что мне очень нравился скринсейвер с часами на весь экран. У нас на работе один из компьютеров стоит в зале и всем очень удобно видеть на экране время. На своем рабочем компьютере я использую Samurize и как то вдруг, мне захотелось видеть на рабочем столе погоду, даже не погоду, а просто температуру за окном. Только только я стал сооружать погодный скрипт, как в голову пришла идея написать скринсейвер с часами, датой и погодой.
Потом я завел эту ветку форума, понял что мне понадобится, но наступили праздники майские и я все позабыл.

Пару дней назад собрался с силами и наклепал на скорую руку код. Не долго думая взял Autoit - как же мне не нравится он. Вроде все есть, но очень уж он несуразный какой-то. За 2 дня выкроенного времени на работе, смастерил глючную версию и устал.

Были идеи сделать поиск городов, добавить  всяческих опций, но нет. Очень уж меня сильно отталкивает autoit этот. Устал от него. Если кому интересно, то вот тут наброски.

Нас невозможно сбить с пути, нам пофигу куда идти.