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

webdriver
locators
Теги: #<Tag:0x00007fedc414a0f0> #<Tag:0x00007fedc4149fb0>

(Nikitoz777) #1

првиет всем!

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


(Nik Sidorenko) #2

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

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


(Nikitoz777) #3

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


(Nik Sidorenko) #4

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


(Nikitoz777) #5

я на си шарпе(


(Nik Sidorenko) #6

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


(Nikitoz777) #7

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


(Nik Sidorenko) #8

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


(Fuji F) #9

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


(Bolatbek) #10

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


(Сергей Кузьмин) #11

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


(Oleksandr Khotemskyi) #12

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


(Nikitoz777) #13

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


(Oleksandr Khotemskyi) #14

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


(Nikitoz777) #15

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


(Oleksandr Khotemskyi) #16

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

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

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


(Nikitoz777) #17

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

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


(Oleksandr Khotemskyi) #18

Ну ок :slight_smile:


(Nikitoz777) #19

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


(Bohdan B) #20

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

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