t.me/atinfo_chat Telegram группа по автоматизации тестирования

Порнокейс! поиск по DOM в виде string, средствами WD

Теги: #<Tag:0x00007f748b6da108> #<Tag:0x00007f748b6da018>

првиет всем!

есть такой порнокейс:
имеется DOM в виде string. как можно испольтзовать такую стрингу, чтобы искать в ней с помощью всех встреонных методов FindElement и тд?

А что потом планируется делать с найденными элементами?

Если цель искать элементы и не обязательно средствами WD. То попробуйте библиотеку https://jsoup.org/

планируется доставать только текст

Тогда jsoup в помощь. Селекторы очень схожы с xpath + есть свои псевдо селекторы. Мне эта библиотечка зашла. Пользуюсь до сих пор.

я на си шарпе(

Тогда поможет биндинг этой библиотеки на C# https://nsoup.codeplex.com/

о , круто, спс попробую но уже в след году:) а как либа относится к знакам разметки? /r/n

Это внутри полученного текста? Вроде нормально. Ничего не съедает и не прячет самостоятельно

Когда работал на с# проекте мы использовали html-agility-pack

Вдогону, кому надо работать в JS:
https://github.com/cheeriojs/cheerio - отличная либа.

а кто нибудь пользовался https://github.com/jamietre/CsQuery ?

Я бы попытался спарсить в XML, а потом уже намного удобней работать.

не получится ибо страница содержит скрипты со спецсимволами которые содержатся в скриптах

Можно пример такой ноды с спецсимволами в HTML?

сейчас не могу . список запрещенных символов в хмл можете найти в гугле

Спасибо за предложение погуглить, но по моему это вы просили помощь как вам работать с дом деревом а не я )

Современные парсеры номрально все это преобразовывают, да и скрипты по сути не нужны - если уж на то пошло их можно просто вырезать перед парсингом.

Вот допустим - https://github.com/fb55/htmlparser2 тут даже встроенный DomUtils есть.

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

хотелось бы работать с ДОМом через селекторы

1 Симпатия

Ну ок :slight_smile:

да, могу объяснть почему DOM в виде стринги:
мне нужно вытягивать информацию с одного ресурса у которого нет апи, а на запросы приходит html страница. запросы я научился делать, а вот как лучше спарсить такую страницу я еще думаю. в идеале было бы сделать так чтобы запихнуть в вебдрайвер такую структуру и работать с ним как обычно

Мне кажется что это код делает то что вам нужно:

import requests
import lxml.html as parser


def main():
    url = 'url'
    response = requests.get(url)
    html = response.text
    root = parser.fromstring(html)
    items = root.cssselect('collection_selector')

    for i in items:
        print i.cssselect("item_selector").text