<?xml version="1.0" encoding="utf-8" ?><rss version="2.0" xmlns:tt="http://teletype.in/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>БАСЕР в КРИПТЕ</title><generator>teletype.in</generator><description><![CDATA[YouTube - https://www.youtube.com/@baser_crypto
ТГ - @baser_crypto]]></description><image><url>https://img2.teletype.in/files/59/ed/59eda821-be85-4b06-b2b7-dffe75e31279.png</url><title>БАСЕР в КРИПТЕ</title><link>https://teletype.in/@baser_crypto</link></image><link>https://teletype.in/@baser_crypto?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=baser_crypto</link><atom:link rel="self" type="application/rss+xml" href="https://teletype.in/rss/baser_crypto?offset=0"></atom:link><atom:link rel="next" type="application/rss+xml" href="https://teletype.in/rss/baser_crypto?offset=10"></atom:link><atom:link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></atom:link><pubDate>Fri, 29 May 2026 17:23:28 GMT</pubDate><lastBuildDate>Fri, 29 May 2026 17:23:28 GMT</lastBuildDate><item><guid isPermaLink="true">https://teletype.in/@baser_crypto/noQ5zJ9uEYq</guid><link>https://teletype.in/@baser_crypto/noQ5zJ9uEYq?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=baser_crypto</link><comments>https://teletype.in/@baser_crypto/noQ5zJ9uEYq?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=baser_crypto#comments</comments><dc:creator>baser_crypto</dc:creator><title>Как я искал квартиру и зачем мне понадобился BAS</title><pubDate>Sun, 03 Aug 2025 12:10:23 GMT</pubDate><media:content medium="image" url="https://img4.teletype.in/files/71/70/7170b8a7-7864-4904-bcf5-e111b57d7cd5.png"></media:content><description><![CDATA[<img src="https://img2.teletype.in/files/53/fe/53fea1f5-3eed-41b8-bb1d-c7df6e93c045.png"></img>Это было еще в 2022 году, когда я искал квартиру. Очень быстро понял простую вещь: хорошие варианты держались пару минут. Ты только видишь новое объявление, думаешь «о, надо звонить», а оно уже сдано.]]></description><content:encoded><![CDATA[
  <p id="WAtp">Это было еще в <em>2022 году</em>, когда я искал квартиру. Очень быстро понял простую вещь: <strong>хорошие варианты держались пару минут</strong>. Ты только видишь новое объявление, думаешь <em>«о, надо звонить»</em>, а оно уже <strong>сдано</strong>.</p>
  <p id="UBjX">Первые дни я реально сидел и обновлял страницу вручную. Но это быстро превратилось в пытку. Вроде занимаешься своими делами, потом вспоминаешь что надо чекнуть сайт, бросаешь все, обновляешь и там пусто. А потом отвлекся всего на полчаса и как назло именно в этот момент появляется хорошая квартира.</p>
  <p id="AIAx">Короче стало понятно, что если продолжать так, то квартиру я найду только чудом.</p>
  <h2 id="kXid">Решаю зайти в BAS</h2>
  <p id="WLok">В какой-то момент я вспомнаю про <strong>BAS</strong>. На тот момент я уже около полугода учился работать с ним, делал простые парсеры, регеры и разные мелкие штуки. Но всё это было больше ради практики. Тогда мне захотелось попробовать применить BAS в <em>реальном кейсе из жизни</em>.</p>
  <p id="hzml">Про запросы и API я тогда еще толком не знал, поэтому пошел по самому простому пути через браузер. Идея была простая: <strong>скрипт открывает сайт, проверяет новые объявления и если что-то появляется, сразу шлет мне сообщение в ТГ</strong>.</p>
  <h2 id="I6zl">Как это выглядело</h2>
  <p id="XcNl">В BAS я накидал цикл, который каждые пару минут обновлял страницу с заданными параметрами квартиры. Скрипт вытаскивал заголовки и ссылки, брал ID из ссылки и сохранял их в глобальную переменную. После обновления страницы скрипт сравнивал ID последнего объявления на странице с переменной тем самым проверяя новое ли объявление появилось или висит старое. После чего присылал мне <strong>уведомление в ТГ.</strong></p>
  <p id="18m3">Работало это достаточно стабильно. Я спокойно занимался своими делами, а уведомления приходили сами.</p>
  <figure id="ObHK" class="m_custom">
    <img src="https://img2.teletype.in/files/14/81/14815bd4-abb2-4d9c-aa77-83e635895633.png" width="396" />
  </figure>
  <p id="ZDil">Кстати, <em>на скриншоте видно как часто появлялись новые объявления</em>, и это была ночь.</p>
  <h2 id="IpiA">Что из этого вышло</h2>
  <p id="tibw">Так я начал получать <strong>ссылки на новые квартиры прямо в телеграм</strong>. Приходило уведомление, я сразу переходил по ссылке, смотрел объявление и звонил хозяину раньше многих других чтобы договориться.</p>
  <p id="0QO4">Это дало <strong>огромную разницу во времени</strong>. Даже если квартира появлялась ночью, бот всё равно присылал мне уведомление. На скрине видно как часто выкладывали новые объявления, и это реально была ночь.</p>
  <p id="Z1YH">В итоге именно с помощью этого скрипта я и нашел себе квартиру. <strong>BAS сэкономил мне кучу времени и нервов</strong>.</p>
  <h2 id="Y3up">Что бы я сделал сейчас</h2>
  <p id="A26V">Сейчас я уже лучше разбираюсь в BAS и понимаю, что тогда можно было сделать всё проще и быстрее. Я бы использовал <em>запросы вместо браузера</em>, это работало бы быстрее и легче. Сохранял бы данные в БД прямо в BAS, чтобы удобно проверять историю.</p>
  <p id="s21n">Еще добавил бы, чтобы сразу видеть, <strong>фото, описание, номер телефона</strong> а не только ссылку и цену. И подключил бы сразу несколько сайтов. Тогда вероятность найти квартиру была бы еще выше.</p>
  <p id="548f"><em>Но даже тот первый вариант, собранный кое-как, отлично сработал.</em></p>
  <h2 id="30uY">Вывод</h2>
  <p id="SebC">Для меня это был реально полезный опыт. <strong>BAS смог помочь не только в сложных проектах, но и в самых простых бытовых задачах</strong>. Хочешь найти квартиру, билеты или какой-то редкий товар, пишем простенький скрипт тем самым <em>экономя свое драгоценное время</em>.</p>
  <p id="kTTC"></p>
  <p id="Cn9l"></p>
  <p id="6Dj8">YouTube - <a href="https://www.youtube.com/@baser_crypto" target="_blank">https://www.youtube.com/@baser_crypto</a><br />ТГ - @baser_crypto</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@baser_crypto/8KJSrKt7EQV</guid><link>https://teletype.in/@baser_crypto/8KJSrKt7EQV?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=baser_crypto</link><comments>https://teletype.in/@baser_crypto/8KJSrKt7EQV?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=baser_crypto#comments</comments><dc:creator>baser_crypto</dc:creator><title>Самое важное о селекторах в BAS</title><pubDate>Sat, 10 May 2025 16:55:18 GMT</pubDate><media:content medium="image" url="https://img4.teletype.in/files/f5/5a/f55a234c-c19c-41bb-b754-07618f0e6c0c.png"></media:content><description><![CDATA[<img src="https://img3.teletype.in/files/a1/7f/a17f143f-05ae-4e35-bf20-99592f29cb24.jpeg"></img>Большинство новичков при создании скриптов даже не задумываются, насколько важен выбор селектора — берут первый попавшийся, чаще всего CSS, и не знают, что есть другие, часто более удобные варианты.]]></description><content:encoded><![CDATA[
  <p id="CGnP">Большинство новичков при создании скриптов даже не задумываются, насколько важен выбор селектора — берут первый попавшийся, чаще всего CSS, и не знают, что есть другие, часто более удобные варианты. </p>
  <p id="HMjt">В итоге селекторы получаются ненадёжными (сломаются при первом же обновлении сайта). Давайте разберёмся, какие способы выбора элементов вообще есть в BAS, и какие из них действительно стоит использовать.</p>
  <figure id="JxJ9" class="m_original">
    <img src="https://img1.teletype.in/files/43/b7/43b7c7d7-3157-4de1-a1ec-63bb866fbebe.png" width="684" />
  </figure>
  <h2 id="XiNe">1. CSS. Что такое DOM и откуда берутся классы и ID</h2>
  <p id="ayoh">Когда ты открываешь сайт ты видишь кнопки, поля, тексты. </p>
  <p id="NNuz">Но под капотом у каждой страницы есть <strong>структура</strong>, которая описывает всё это. <s>Она называется <strong>DOM</strong> — Document Object Model</s> (да не важно как она называется)</p>
  <p id="vb0k">Проще говоря, это <strong>дерево из элементов</strong>: <code>div</code>, <code>button</code>, <code>input</code> и так далее</p>
  <p id="1WZk">DOM - это структура, по которой построена любая страница. Она выглядит как <strong>вложенные &quot;контейнеры&quot;</strong> — один элемент находится внутри другого. Всё это описывается с помощью <strong>HTML-тегов</strong>: <code>div</code>, <code>span</code>, <code>input</code>, <code>button</code>, и так далее.</p>
  <p id="GlDY">Пример простого фрагмента:</p>
  <pre id="mNIv" data-lang="html">&lt;div class=&quot;form&quot;&gt;
  &lt;input id=&quot;email&quot; placeholder=&quot;Email&quot;&gt;
  &lt;button&gt;Отправить&lt;/button&gt;
&lt;/div&gt;</pre>
  <ul id="1qtK">
    <li id="smFD"><code>div</code> — это просто блок (контейнер), в нём могут быть другие элементы.</li>
    <li id="tjXt"><code>input</code> — поле ввода</li>
    <li id="Lcww"><code>button</code> — кнопка</li>
  </ul>
  <h3 id="wQMR">Частая ошибка: селекторы вида <code>:nth-child(...)</code></h3>
  <p id="otw6">Многие новички, не зная, за что зацепиться, просто берут путь до элемента, который генерирует BAS по умолчанию. Получается что-то вроде:</p>
  <pre id="T65y" data-lang="html">&gt;CSS&gt; :nth-child(1) &gt; :nth-child(1) &gt; :nth-child(2) &gt; :nth-child(1) &gt; img</pre>
  <p id="cLXk">Когда ты используешь <code>:nth-child(...)</code>, ты говоришь: &quot;дай мне второй элемент внутри вот этого блока, внутри другого блока и тд&quot;.<br />Если туда случайно добавят ещё один <code>div</code>, то счёт <strong>сдвинется</strong>, и BAS нажмёт не туда. Поэтому такие селекторы — <strong>хрупкие</strong>.</p>
  <p id="5M19"><strong>На первый взгляд - работает. Но на деле:</strong></p>
  <ul id="11FU">
    <li id="mlmP">Такой селектор <strong>зависит от точной структуры страницы</strong>, и если добавится хоть один новый <code>div</code> — он <strong>перестанет находить элемент</strong>.</li>
    <li id="BVer">Невозможно понять, что он делает.</li>
    <li id="4UYJ">При обновлении сайта он почти наверняка сломается.</li>
  </ul>
  <p id="YcLN"><strong><u>Вот простой пример:</u></strong></p>
  <pre id="T9cj" data-lang="html">&lt;div class=&quot;form&quot;&gt;
  &lt;input id=&quot;email&quot; type=&quot;text&quot;&gt;
  &lt;button class=&quot;btn-submit&quot;&gt;Отправить&lt;/button&gt;
&lt;/div&gt;</pre>
  <p id="Ujfm"><strong><u>Каждый элемент может иметь:</u></strong></p>
  <ul id="zk35">
    <li id="V898"><strong>ID</strong> — уникальный идентификатор (<code>id=&quot;email&quot;</code>),</li>
    <li id="ZQQM"><strong>Class</strong> — класс или группа (например, <code>class=&quot;btn-submit&quot;</code>),</li>
    <li id="FrDn"><strong>Атрибуты</strong> — всё остальное (<code>type=&quot;text&quot;</code>, <code>placeholder=&quot;Ваш e-mail&quot;</code> и т.д.).</li>
  </ul>
  <p id="sfKJ">Ты не видишь этого на сайте, но BAS видит. Именно по этой структуре BAS может понять, куда нажать или что заполнить.</p>
  <p id="pGwz">Вот пример надежных селекторов которые можно не стесняться использовать они скорее всего, не поменяются при следующем обновлении сайта:</p>
  <pre id="OV1Y" data-lang="html">id=&quot;login&quot;
id=&quot;userpassword&quot;
class=&quot;email&quot;
class=&quot;password&quot;</pre>
  <p id="7y9C">В BAS они будут выглядеть так:</p>
  <pre id="2H1K" data-lang="html">&gt;CSS&gt; #login
&gt;CSS&gt; #userpassword
&gt;CSS&gt; .email
&gt;CSS&gt; .password</pre>
  <hr />
  <h3 id="56a5">Почему так?</h3>
  <p id="QoGP">Это особенность HTML и CSS:</p>
  <ul id="mHgs">
    <li id="Hfqn"><strong><code>id=&quot;...&quot;</code></strong> - это <strong>уникальный идентификатор</strong>. В CSS (и в BAS) он обозначается <strong>через решётку <code>#</code></strong>.</li>
    <li id="xlW1"><strong><code>class=&quot;...&quot;</code></strong> - это <strong>группа или категория</strong>, и она обозначается <strong>через точку <code>.</code></strong></li>
  </ul>
  <p id="siyS"><strong>Примеры:</strong></p>
  <ul id="R5Jg">
    <li id="tlO3"><code>#login</code> - означает: &quot;элемент с id <code>login</code>&quot;</li>
    <li id="mSMp"><code>.email</code> - означает: &quot;элемент с классом <code>email</code>&quot;</li>
  </ul>
  <p id="oC6s">Когда мы пишем:</p>
  <pre id="gC2c">&gt;CSS&gt; #login</pre>
  <p id="cy9l">это значит — найти элемент с <strong>id=&quot;login&quot;</strong>. Символ <code>#</code> — это стандарт в CSS.</p>
  <p id="STqW">А если так:</p>
  <pre id="0fxz">&gt;CSS&gt; .email</pre>
  <p id="AuHv">это элемент с <strong>class=&quot;email&quot;</strong>. Символ <code>.</code> — для классов.</p>
  <p id="Wj1v">Также можно обратиться к атрибутам:</p>
  <pre id="hSXm">&gt;CSS&gt; input[placeholder=&quot;Email&quot;]</pre>
  <p id="xZeA">Это значит: найти <code>input</code>, у которого есть <code>placeholder=&quot;Email&quot;</code>. Атрибут <code>placeholder</code> — это <strong>текст-подсказка</strong>, который отображается внутри поля ввода до того, как пользователь начнёт что-то печатать</p>
  <p id="8ae6"><strong>Пример: </strong></p>
  <figure id="UzIo" class="m_original">
    <img src="https://img3.teletype.in/files/ad/2a/ad2aad85-8a20-4044-ab4b-06d977da197a.png" width="423" />
  </figure>
  <p id="22AY">На сайте ты увидишь это как серый текст внутри поля.</p>
  <p id="jekN"><strong>Этот атрибут очень удобно использовать в BAS, потому что:</strong></p>
  <ul id="tdE4">
    <li id="hMxv">Он часто бывает <strong>уникальным и стабильным</strong>.</li>
    <li id="C4wu">Его <strong>видно на экране</strong>, и ты можешь сразу понять, к чему он относится.</li>
    <li id="Q312">Он не меняется от структуры страницы, как классы или id.</li>
  </ul>
  <p id="mXoi"><strong>Важно:</strong> ты не обязан использовать всё подряд. Не нужно писать сразу <code>div &gt; span &gt; input</code>. Достаточно <strong>одного хорошего признака</strong>, который стабилен.</p>
  <h3 id="5Fcq"><strong>Если на элементе есть и <code>id</code>, и <code>class</code>, лучше использовать <code>id</code>.</strong></h3>
  <p id="Rqsb"><strong>Пример:</strong></p>
  <pre id="srxD">&lt;input id=&quot;emailInput&quot; class=&quot;input email&quot;&gt;</pre>
  <p id="sdEc">Селектор <code>&gt;CSS&gt; #emailInput</code> будет <strong>более точным</strong> и уникальным, чем <code>&gt;CSS&gt; .email</code>.<br />В HTML <code>id</code> должен быть <strong>уникальным на странице</strong>, а вот классы часто повторяются.</p>
  <p id="5Q50"><strong>Поэтому правило простое:</strong></p>
  <blockquote id="xmzG">Если у элемента есть <code>id</code> - используй его. Если нет - ищи по <code>class</code> или другим атрибутам (<code>placeholder</code>, <code>name</code> и т.д.)</blockquote>
  <p id="9uO7"><strong>Когда это работает хорошо?</strong></p>
  <ul id="MolT">
    <li id="xgke">Когда <code>id</code> и <code>class</code> звучат логично, а не сгенерированы автоматически</li>
    <li id="flhF">Когда они не меняются от запуска к запуску и не зависят от языка или содержимого</li>
  </ul>
  <h3 id="Yzhw">А вот так делать не стоит:</h3>
  <pre id="PRIT" data-lang="html">class=&quot;x9s7q3d&quot;
class=&quot;input-98af_x&quot;
id=&quot;b12&quot;</pre>
  <ul id="NDgS">
    <li id="ornF">Случайные символы, автогенерация, ничего не говорят о назначении элемента</li>
    <li id="5OTl">Сегодня это поле для пароля, а завтра уже что-то другое</li>
    <li id="29pN">Такие селекторы ломаются при любой правке фронтенда, а могут быть динамичными, и меняться каждый день</li>
  </ul>
  <h2 id="RJ7c">TL;DR по CSS</h2>
  <p id="mCX4"><strong><u>CSS-селекторы отлично подходят, когда:</u></strong></p>
  <ul id="rlAv">
    <li id="4VUB">У элемента есть стабильный и осмысленный <code>id</code> или <code>class</code></li>
    <li id="VSD7">Есть логичный атрибут (<code>name</code>, <code>type</code>, <code>placeholder</code>, <code>value</code>)</li>
    <li id="iies">Ты хочешь задать точное и универсальное правило</li>
  </ul>
  <p id="p5ia">Избегай всего, что выглядит как автоматически сгенерированное, и не строй селекторы только на структуре.</p>
  <p id="Zchn">CSS хорош тем, что <strong>быстрее, чем MATCH</strong>, но требует чуть больше внимания и понимания, что именно ты выбираешь.</p>
  <p id="wqn9"></p>
  <h2 id="FIPq">2. MATCH — самый простой способ находить элементы в BAS</h2>
  <p id="6FyN"><strong><u>Возьмем пример, у нас в коде элемента есть вот такое:</u></strong></p>
  <pre id="ndaz" data-lang="html">&lt;input id=&quot;input-98af_x&quot; 
class=&quot;x9s7q3d&quot; 
placeholder=&quot;Email/Sub-Account&quot;
type=&quot;text&quot; value=&quot;&quot;&gt;=&quot;&quot;&gt;</pre>
  <p id="8WkO">ID и класс нам не подойдут, так как они содержат набор случайных букв и цифр, которые будут меняться. Что я предлагаю: взять атрибут <code>placeholder</code> и использовать метод MATCH. Вот как в итоге будет выглядеть структура в самом BAS, чтобы найти нужный элемент среди кучи бессмысленных классов:</p>
  <figure id="yW6G" class="m_column">
    <img src="https://img1.teletype.in/files/87/a5/87a5e30c-e934-462b-afbe-25974616236e.png" width="1045" />
  </figure>
  <h3 id="0EQm">Что это за <code>&gt;AT&gt;0</code> в конце?</h3>
  <p id="Ofkp">Дело в том, что <strong>MATCH может найти сразу несколько элементов</strong>, подходящих под условие. Например, если на странице есть два поля с одинаковым <code>placeholder</code>, BAS не знает, какое из них выбрать и может нажать не туда.</p>
  <p id="pjGQ"><code>&gt;AT&gt;0</code> означает: <strong>использовать первый подходящий элемент</strong>.<br /> В программировании отсчёт начинается с нуля, поэтому:</p>
  <ul id="QBkA">
    <li id="cR2m"><code>&gt;AT&gt;0</code> — это первый элемент</li>
    <li id="fQLq"><code>&gt;AT&gt;1</code> — второй</li>
    <li id="qOhL"><code>&gt;AT&gt;2</code> — третий и так далее</li>
  </ul>
  <p id="67uc">Если не указать <code>AT</code>, BAS может сработать нестабильно и сегодня нажмёт на нужный элемент, завтра на соседний.</p>
  <p id="K2T3"></p>
  <h2 id="ut0L">3. РАЗБИРАЕМ НА ПРИМЕРЕ</h2>
  <p id="o3wh"><strong>К примеру возьмем Ютуб:</strong></p>
  <figure id="psga" class="m_original">
    <img src="https://img1.teletype.in/files/cf/47/cf473c10-cfd5-4926-92f1-91e0af46ec6a.png" width="837" />
  </figure>
  <p id="3Nud"><strong>Если мы наведемся на кнопку лайка и откроем правой кнопкой мышки код элемента в структуре мы увидим следующее: </strong></p>
  <figure id="vMnQ" class="m_original">
    <img src="https://img2.teletype.in/files/9c/47/9c47ac7b-622a-4690-aa4f-70a15ce44725.png" width="601" />
  </figure>
  <p id="7z2p">Как мы видим у нас нет как такого явного класса, или же айди. Но это не значит, что элемент нельзя зацепить</p>
  <p id="eSBS"><strong>Что мы можем с этого достать: </strong></p>
  <p id="Rp1I"><u><strong>aria-label=&quot;like this video along with 10 other people&quot;</strong></u></p>
  <p id="kWOe"><u><strong>title=&quot;I like this&quot;</strong></u></p>
  <h4 id="9SjY"><strong><code>aria-label=&quot;like this video along with 10 other people&quot;</code></strong></h4>
  <p id="COeS">Использовать как есть - <strong>плохо</strong>, потому что часть <code>&quot;10 other people&quot;</code> будет меняться</p>
  <p id="IPzB">Но можно использовать Match с частью строки:</p>
  <pre id="adR1">&gt;MATCH&gt; like this video&gt;AT&gt;0</pre>
  <p id="frqN">или CSS с <code>*=</code> (содержит):</p>
  <pre id="uRDa">&gt;CSS&gt; button[aria-label*=&quot;like this video&quot;]</pre>
  <p id="7Utv">Пример кнопки входа:</p>
  <figure id="UHwl" class="m_original">
    <img src="https://img3.teletype.in/files/e5/4e/e54ea1ea-99d2-42a5-a153-2ac7e9e7b122.png" width="451" />
  </figure>
  <h3 id="7cHb">Код элемента: </h3>
  <pre id="NnV3" data-lang="html">&lt;button class=&quot;_root_79e1v_50 _primary_79e1v_85&quot; 
aria-describedby=&quot;&quot; aria-disabled=&quot;false&quot; type=&quot;submit&quot; 
name=&quot;intent&quot; value=&quot;email&quot;&gt;Continue&lt;/button&gt;</pre>
  <p id="FVHA">Я вижу для себя 3 варианта, как мы можем использовать MATCH здесь, потому что class выглядит как 💩</p>
  <p id="Moxs">Вариант 1:</p>
  <pre id="kaW3">&gt;MATCH&gt;type=&quot;submit&quot;&gt;AT&gt;0</pre>
  <p id="n7O7"><strong>Почему:</strong></p>
  <ul id="HsRx">
    <li id="22Cn">Атрибут <code>type=&quot;submit&quot;</code> встречается только у кнопок отправки форм.</li>
    <li id="Jnp6">Если это <strong>единственная</strong> такая кнопка на странице — работает отлично.</li>
    <li id="vn8y">Если на странице есть несколько <code>submit</code>, <strong>обязательно указываем <code>&gt;AT&gt;</code></strong>.</li>
  </ul>
  <p id="8mEz">Вариант 2:</p>
  <pre id="avN0">&gt;MATCH&gt;value=&quot;email&quot;&gt;AT&gt;0</pre>
  <p id="3JBx"><strong>Почему:</strong></p>
  <ul id="Bl9F">
    <li id="v1f0">Атрибут <code>value=&quot;email&quot;</code> это скрытая &quot;цель&quot; кнопки, и на большинстве сайтов он остаётся стабильным.</li>
    <li id="lDnj">Хороший выбор, если на странице есть другие кнопки, но они с другими <code>value</code>.</li>
  </ul>
  <p id="um6U">Вариант 3:</p>
  <pre id="5urC">&gt;MATCH&gt;Continue&gt;AT&gt;0</pre>
  <p id="GVzu"><strong>Почему:</strong></p>
  <ul id="Hrsb">
    <li id="WJHv">Поиск по тексту кнопки самый читаемый и понятный способ.</li>
    <li id="5rmP">Но он зависит от <strong>языка страницы</strong> если пользователь сменит язык, кнопка может называться иначе.</li>
    <li id="V11k">Работает, если ты уверен, что текст стабилен.</li>
  </ul>
  <h2 id="w9oN">TL;DR по MATCH</h2>
  <p id="rlHd"><strong>1. Всегда указывай <code>&gt;AT&gt;0</code></strong></p>
  <ul id="xDGt">
    <li id="mIz9">Даже если на странице сейчас один элемент — завтра может появиться второй.</li>
    <li id="7HiA"><code>&gt;AT&gt;0</code> означает: возьми первый подходящий элемент.</li>
  </ul>
  <p id="5T2I"><strong>2. Используй смысловые атрибуты</strong></p>
  <ul id="iWL5">
    <li id="EQ2y">Ищи по <code>placeholder</code>, <code>name</code>, <code>type</code>, <code>value</code>, <code>title</code>, <code>aria-label</code>, если они содержат понятные и постоянные значения.<br /> Пример: <code>&gt;MATCH&gt;placeholder=&quot;Email address&quot;&gt;AT&gt;0 value=&quot;submit&quot;&gt;AT&gt;0 </code></li>
  </ul>
  <p id="wUaC"><strong>3. Можно искать по тексту, но с осторожностью</strong></p>
  <ul id="AGNP">
    <li id="Zy0o">Поиск по тексту (<code>&gt;MATCH&gt; Отправить</code>) работает, но может сломаться при смене языка или дизайна.</li>
    <li id="UCMa">Не злоупотребляй этим, если есть альтернативы.</li>
  </ul>
  <p id="VCmD"><strong>4. Избегай динамических значений</strong></p>
  <ul id="ilmM">
    <li id="sdvc">Не используй <code>id</code>, <code>class</code>, <code>aria-*</code>, если они выглядят как сгенерированные (например, <code>id=&quot;:r1:-xyz123&quot;</code> или <code>class=&quot;_root_ab123_4&quot;</code>).</li>
  </ul>
  <p id="BLHC"><strong>5. Минимизируй длину MATCH</strong></p>
  <ul id="0WKP">
    <li id="1dXf">Чем короче и точнее выражение — тем меньше шансов, что оно “сломается” при обновлении сайта.</li>
  </ul>
  <p id="1TTt"></p>
  <h2 id="2mR0">А что насчёт XPath?</h2>
  <p id="NMKi">XPath это ещё один способ находить элементы на странице. Он позволяет искать элементы по их <strong>положению в структуре DOM</strong>, по атрибутам, тексту и даже логике вложенности.</p>
  <p id="MLDk">Пример:</p>
  <pre id="RkDK">&gt;XPath&gt; //button[@type=&quot;submit&quot;]
</pre>
  <p id="D63U">Или:</p>
  <pre id="Dtja">&gt;XPath&gt; //input[contains(@placeholder, &quot;Email&quot;)]
</pre>
  <hr />
  <h3 id="Sach">Что умеет XPath:</h3>
  <ul id="sJ1f">
    <li id="4BBH">Искать элементы по частичному совпадению</li>
    <li id="KpHd">Навигировать вверх и вниз по дереву элементов</li>
  </ul>
  <hr />
  <h3 id="x0Nf">Но честно:</h3>
  <blockquote id="nmhU">За 3 года работы в BAS мне <strong>никогда не понадобился XPath, не говоря уже про AT и None (не встречал ниразу в скриптах чужих даже)</strong><br />Во всех проектах от простых до сложных всегда хватало <strong>MATCH и CSS</strong>.</blockquote>
  <p id="mZzJ">Я предпочитаю использовать самое простое. XPath требует времени на изучение, синтаксис у него специфичный, и если ты не работал с XML или HTML в ручную — он может показаться перегруженным. Если ты умеешь решать задачу с помощью MATCH или CSS - ПОЛНЫЙ ГАЗ<strong>!</strong></p>
  <p id="4qdX"></p>
  <p id="beWS">Мой Телеграм канал - @baser_crypto</p>
  <p id="C8NT">YouTube - youtube.com/@baser_crypto</p>

]]></content:encoded></item></channel></rss>