.Net в 1С. Парсинг сайтов, multipart/form-data, gzip итд #767195


#0 by Serginio1
.Net в 1С. Асинхронные HTTP запросы, отправка Post нескольких файлов multipart/form-data, сжатие трафика с использованием gzip, deflate, удобный парсинг сайтов и т.д.   .Net в 1С. На примере использования HTTPClient,AngleSharp. Удобный парсинг сайтов с помощью библиотеки AngleSharp, в том числе с авторизацией аля JQuery с использованием CSS селекторов. Динамическая компиляция   Предыдущие темы Там же можно найти все необходимые ссылки.
#1 by Serginio1
Кто ни будь прочитал до конца?
#2 by spock
И iframe сможет?
#3 by Serginio1
Не знаю, но там есть HtmlFrameElement [DomName("HTMLIFrameElement")]     public interface IHtmlInlineFrameElement : IHtmlElement     {
#4 by spock
Интересно
#5 by Serginio1
Сегодня уже устал. Завтра посмотрю
#6 by Serginio1
Вот такой код WebsiteUrl = ПолучитьСтрокуЗапроса(";);
#7 by Serginio1
Надо отметить, что  QuerySelectorAll и QuerySelector можно применять к контейнерам поддерживающих интерфейс     public interface IParentNode     {                void Prepend(params INode[] nodes);         IElement QuerySelector(string selectors);     } } Мы можем например задать селектор для строки. Например получить первый и третий элемент строки
#8 by Serginio1
Добавлю еще про коллекци.   public interface IHtmlCollection<T> : IEnumerable<T>, IEnumerable where T : IElement     {              T this[int index] { get; }         T this[string id] { get; }         int Length { get; }     } К ним можно обращаться по номерк и по иде или атрибуту. Например
#9 by Serginio1
Еще один вариант ускорения это заполнения данных 1С в скрипте str = "public class ВычислительAngleSharp     |{      |public  static void ЗаполнитьТз(dynamic ТЗ)      |   {      |      |      |      |
#10 by Serginio1
Вот ссылка на DLL
#11 by Serginio1
Странно, я думал, что парсинг затронет людей. Аналогичная тема   собрала кучу просмотро, оценок комментариев. Здесь тишина. Или CSS сложен или название .Net в заголовке пугает лбдей. Или парсинг HTML нынче не актуален?
#12 by Garykom
"лбдей" все сложное пугает )) была бы статья по типу берем сайту мисту и парсим ее с целью получения самых интересных тем
#13 by Serginio1
Прошу прощения за опечатку. В примерах есть все, что бы это сделать самому. Кстати заодно вэб программисты могут помочь. Но почему то никого это не затронуло
#14 by torgm
Сейчас упали задачи написать парсеры для сайтов клиентов, самому лень.
#15 by Garykom
пофиг на опечатку просто прикольная получилась )) люди они сильно ленивые и хотят почти готовое которое можно тупо скопировать/вставить и чуток поправить а не писать с 0 используя инструмент
#16 by Serginio1
Так в примерах есть, как мне кажется достаточно материала, что бы использовать. Так я не против взять конкретную задачу и её решить. Только пусть дадут. Я помогу если что
#17 by Serginio1
Вот например парсинг мисты
#18 by Serginio1
В статье добавил описание
#19 by Serginio1
Один из основных интерфейсов [DomName("Node")]     public interface INode : IEventTarget, IMarkupFormattable     {         DocumentPositions CompareDocumentPosition(INode otherNode);         INode ReplaceChild(INode newChild, INode oldChild);     }
#20 by Tarzan_Pasha
а это бесплатная?
#21 by Serginio1
Да.
#22 by Serginio1
#23 by spock
Для моего понимания: а зачем есть необходимость парсить сайты с помощью 1с? Почему именно с помощью 1с? Это же жутко не удобно.
#24 by Serginio1
C помощью .Net, но для получения данных в 1С.
#25 by Конченный УТырок
А на этом можно как-то зарабатывать?
#26 by Serginio1
Н на новый ComОбъект можно зарабатывать? Расширяя функциональность 1С ты повышаешь свою производительность, а значит повышается твоя производительность итд.
#27 by spock
И все же?
#28 by Конченный УТырок
Какие-то общие слова. В 1С своих костылей хватает, нафига еще какой-то Net в голову засовывать? Проще направление сменить.
#29 by Garykom
Понятие бритвы/лезвия Оккама знакомо? Зачем плодить лишние сущности в виде каких то парсеров отдельных если данные нужно будет в 1С засунуть? В данном случае .net используется для расширения возможностей 1С с помощью бесплатного фреймворка
#30 by Конченный УТырок
Зачем плодить лишние сущности в виде фреймворка в 1С, если можно парсером выгрузить сайт в Ексел и загрузить в 1С?
#31 by Garykom
Сущности "Парсер" и "Ексел" из воздуха взялись?
#32 by Gary417
...Особенно эксель который денег стоит...
#33 by Кирпич
Ну вместо Ексел и текстовый файл подойдет. Он бесплатный. А по существу, всё равно, кому как удобнее, тот так и будет решать задачу. Мне так этот .NET пока нигде, ни разу не понадобился.
#34 by Serginio1
Тем, что нужно делать значительно меньше телодвижений. Каждый решает для себя как ему проще решить ту или иную задачу. Для примера отправка multipart/form-data можно решить и на Про асинхронность я вообще промолчу. Распарсить HTML легко и непринужденно с помощью AngleSharp очень легко. Аналогичная тема   Та же проблема с Вэб сервисами Итд.
#35 by crocop
а выполнить любой javascript на странице может?
#36 by Serginio1
Может но не полностью. Есть отдельная библиотека Вот примеры с использованием JavaScript
#37 by spock
Мнение про общие фразы я тоже разделяю. Почему я задаюсь вопросом о парсинге сайтов с помощью 1с? Потому что я имею к этой темой непосредственное отношение и мне это знакомо. Мой выбор пал на такой стек: ubuntu + python + selenium + phantomjs + sqlite. В 1с может быть можно было бы местами проще, но этот стек крутится круглосуточно на vps и выдает мне сграбленные данные, когда я цепляюсь к этому сервису из 1с. Причем этот стек проглатывает и js, и iframe'ы. Как будто открываю сайт из браузера. Реализовать бюджетно такие задачи полностью на 1с сложно. Оговорюсь: я не против .Net в 1с, я неожиданно удивлен тому, что кто-то пытается это сделать на 1с. Я к тому, что своим задачам, свой инструмент.
#38 by crocop
не очень силен в вебе, вот например сайт 5lb.ru необходимо спарсить, можно ли на этой страничке нажать на кнопку "показать всё"
#39 by Garykom
у вас немного не то, по сути поднят свой сервис парсинга и в подобном случае пилить еще что то в 1С уже лишнее, хватит загрузки csv но если ситуация не грабать 247 и только из 1С причем изредка решение на 1С вполне рабочее
#40 by spock
Не понятно к кому вопрос, но все же отвечу.  С помощью selenium можно.
#41 by Garykom
можно даже штатными средствами 1С 8 без ВК и .net
#42 by spock
как? о_О Интересуюсь профессионально.
#43 by Serginio1
Угу легкое такое решение. Берешь в руки браузер и F12 и ислледуешь, то что тебе нужно. Пробуешь парсить с помощью AngleSharp
#44 by Serginio1
#45 by crocop
штатными средствами? а есть пример кода?:)
#46 by spock
там есть про "нажать на кнопку "показать всё"?". Коллега спрашивает, как нажать на кнопку. Мне тоже интересно, как это можно сделать штатно.
#47 by spock
+46 Кстати, в дальше первой страницы тоже ничего не грабится.
#48 by Serginio1
Распарсить файл. Найти форму <form action="/cgi-bin/mp/page.pl" method="get Установить значения формы и послать Get запрос. В статье это выглядит так Форма=document.QuerySelector("form#searchform");
#49 by spock
Да, не легкое, но бюджетное решение. Кстати, именно эта нелегкость отталкивает и заставляет искать дополнительные пути решения.
#50 by Serginio1
Переходи по ссылкам. А что мешает?
#51 by Serginio1
Я предлагаю значительно более легкое решение. Правда пока в этой библиотеке не полностью реализован JavaScript. А так с ограничениями очень легко парсить в стиле JQuery. А приделают JavaScript полностью, то лучше ничего и не надо
#52 by Кирпич
да с этим парсингом сайтов только начни и закончишь "ubuntu + python + selenium + phantomjs + sqlite" как в
#53 by Serginio1
51+ Я опять же ничего не навязываю. Я описываю инструмент. А нужен он, или нет каждый решает сам
#54 by Serginio1
Добавлю, что библиотека очень понравилась, тем что можно использовать CSS селекторы и использовать в стиле JQuery. На самом деле их применять значительно проще чем регулярные выражения
#55 by crocop
спасибо, будем пробовать
#56 by Shamandafil
Что это за метод?
#57 by Serginio1
Это я в последней версии добавил public void ЗакрытьРесурс(Object Oбъект)         {             IDisposable d = объект as IDisposable;
#58 by Serginio1
#59 by romix
А для компиляции примеров подойдет бесплатный VS 2013?
#60 by Serginio1
Что касается 1C примеров, то нужна просто Фреймворк 4.6.1 Что касается C# то в принципе да. Просто у меня сделано под 4.6.1 на VS 2015 Просто бесплатную 2015 можно скачать А можно с  торрентов.
#61 by Garykom
для готовой ВК от ТС даже VS не требуется, чтобы на C# и .Net прямо из 1С кодить
#62 by Gary417
Есть ещё SharpDevelop, она полегче чем монстроподобная VS хотя VS конечно идеал...
#63 by Serginio1
Все грабится
#64 by mistеr
Писать шарповый код внутри строк это все-таки тупиковый путь. Напиши удобную нативную ВК и люди потянутся. Плюс есть еще более фундаментальная причина. Распыляться на два стека, да еще таких разных - для разработчика неэффективно экономически.
#65 by oleg_km
Плюс есть еще более фундаментальная причина. Распыляться на два стека, да еще таких разных - для разработчика неэффективно экономически. Сидеть и балаболить на Мисте еще более неефективно. А нормальные программисты прекрасно сочетают и 1С и .NET.
#66 by Serginio1
Писать ВК на все случаи жизни задолбаешься. Весь смысл использовать классы .Net внутри 1С. Ты же работаешь с Com объектами. Вот сегодня понадобилась работа с реестром рап=СоздатьОбъект("NetObjectToIDispatch45"); ...... Тут даже не нужно знать .Net. Есть куча примеров, уже многие кроме меня просто помогут кодом. А вообще программист должен постоянно совершенствоваться. Так, что это не распыление
#67 by mistеr
> Писать ВК на все случаи жизни задолбаешься. Тем не менее учетные системы пишут на 1С, а не на голом C++ или C#. Высокоурочневые API всегда вытесняют низкоуровневые (за исключением особых случаев). > Тут даже не нужно знать .Net. Есть куча примеров, уже многие кроме меня просто помогут кодом. Копипастить чудой код, не понимая, что он делает? Ты серьезно предлагаешь это? > А вообще программист должен постоянно совершенствоваться. Так, что это не распыление. Еще какое распыление. Потратить то же время на прокачку, скажем, в ERP 2.0 или КД3, — намного выгоднее, чем научиться парсить сайты или читать реестр. Если вдруг понадобится, раз в год. Пойми правильно, я сейчас не от своего имени говорю, а от имени "усредненного" 1С-ника. Который не ставит себе задачу стать гуру во всем, а просто хочет оставаться востребованным на рынке.
#68 by Serginio1
Для того, что бы использовать ВК нужно читать документацию к ней. А вот использовать ВК тебе постоянно приходится для интеграции с внешним миром. Если тебе нужно парсить сайты, то знание КД3 тебе ничем не поможет. Если у меня стоит задача то на stackoverflow.com/ куча примеров и документации на том же MSDN Усредненному 1С ку мало, что нужно. Он так же и копипастит 1С код. Просто есть огромный пласт задач, которые на 1С решить нельзя или это будет монструозный код. Я просто предлагаю решение для увеличения производительности. А уж использовать его или нет каждый решает сам.
#69 by Garykom
Примерно тоже самое уже пытался несколько раз сказать автору это замечательной штуки. Что "среднему 1С-нику" нужна просто некая ВК в которой "есть все". И вполне можно такое сделать написав "расширяемую ВК". К которой можно легко написать плагины/дополнения. Тогда останется только сделать механизм распространения этих дополнений.
#70 by Garykom
Для обычного 1С-ника слова MSDN и stackoverflow это какие то ругательства
#71 by oleg_km
Зачем делать расширяемую ВК, если ВК Сергея "расширяется" просто кодом 1С?
#72 by mistеr
> Я просто предлагаю решение для увеличения производительности. О какой производительности ты сейчас говоришь? Если о производительности радработки, доработки и поддержки, то ты жестоко ошибаешься. Для производительности мне нужна ВК с API как у HTTPСоединение, только расширенным. Чтобы я мог написать: А у этой таблицы API как у табличного документа, и я уже знаю как с ней работать. Если плюс к этому оно умеет и "JQuery с использованием CSS селекторов" - замечательно, но только как плюс. Вот это будет увеличение производительности. Подумай об этом. Если этого не сделаешь ты, а спрос будет, то сделает кто-то другой.
#73 by Garykom
а вот чтобы эти "расширения кодом 1С" можно было легко другим использовать готовые... а на заново с 0 писать изучив слегка .net
#74 by Serginio1
Так у меня есть пример.
#75 by Serginio1
Кстати Может пригодится Оппоненты говорят что у них не проходит. Вот где и .Net можешь применить
#76 by Serginio1
В составе AngleSharp.Scripting для парсинга сайтов с использованием JS Есть парсер Вот пример использования Engine=врап.ПолучитьТипИзСборки("Jint.Engine","d:Vs2015ProgramsWpfApplication1WpfApplication1inDebugJint.dll");
#77 by Serginio1
Можно передавать свои объекты и и использовать их при выполнении скриптов
#78 by Serginio1
Проверил работают такие конструкции поиска Поиск div с id начинающихся на "row" Найти аннотацию с классом pagenav и содеращую текст 'Вперёд' a.pagenav:contains('Вперёд')
#79 by Serginio1
Я бы еще добавил Silenium прежде всего как построитель DOM в заскриптованных таблицах Для того что бы добраться до сформированного DOM можно использовать вместо PageSource вычисляемый скрипт var pageSource = (string)driver.ExecuteScript("return document.body.outerHTML");
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С