Сап двач, как проще всего распарсить страницу? Есть базовые знания Python, JS, Java, Selenium, jQuery. На странице просто таблица с названиями и ценами предметов, я хочу получать уведомление когда в таблице появится предмет с более дешевой или дорогой ценой.
>>216467802 Я через htmlunit парсил парсю и буду парсить сайты с хентаем. В реализации просто, если хтмл вообще не понимаешь иксМл ващет но пох то лучше посмотри базовые принципы там, воооот хз че сказать все тут
>>216468302 потому что на js мне привычнее всего с сайтами работать, хотя кто-то говорит что python это топ язык для парса. хочу понять как проще всего это сделать. опыт только учебный, на практике таким не занимался еще.
Может ли существовать какая-то защита против парса? Почему-то не могу выбрать элемент по id и class (с помощью getElementById и через cssQuery тоже). По тэгу получается. На другом ссайте все как по маслу по классу выбралось.
>>216469212 Если решишь делать на пистоне, то Beautiful Soup лучше всего для этого подходит Про защиту от парса никогда не слышал, спарси целиком страницу да посмотри, есть там те теги, что ты ищешь или нет
>>216467736 (OP) Станица какая? В инете? Тогда вот говнокод-алгоритм за 60 секунд while (true) { // Качаешь страницу (метод get), десериализуешь нужный <table>, сравниваешь со скачанной до этого if (новая скачанная отличается) { // мапишь в модель, сравниваешь цены } Thread.Sleep(10000) // раз в 10 секунд }
Все это заливаешь куда нить на vps, идёшь пить чай
>>216470564 спасибо. блин, может ты знаешь как это можно решить? Вот страница http://l2on.net/?c=market&a=item&id=92236. Почему-то и BeautifulSoup и jsoup на джаве видят все кроме собственно самой таблицы(а точнее раздела <div id="shops">). Почему такое может быть? Я подумал что из-за того что таблица грузится позже чем происходит парс, но таймер никак не помагает.
>>216470955 Так, я понял. Это происходит потому-что по дефолту ищет на другом сервере. URL один и тот же то есть мне нужно сначала коннектнутся к странице, выбрать сервер, а потом уже парсить.
>>216471136 Я не у пекарни щас, так бы нахуярил что нить. Правда я по с#, но для таких вещей простых тут от жавы отличий минимум. А касательно автовыбора - открой консоль в браузере, раздел network, да посмотри что происходит при выборе >>216470564 кун
На nodeJs либа есть, cheerio. В нее просто загружаешь хтмл, можно простым гет запросом его получить. Далее работаешь как с jquery просто. Успешно парсил этой хуйней один сайтец
>>216471358 играю в l2 essence и хочу следить за рынком что бы успевать купить всякую хуйню по дешовке. На этом сайте какие-то гении программирования научились собирать информацию с ин-гейм рынка.
короче json файла там не было, зато была ссылка на загрузку этой страницы с нужным выбранным миром
>>216471349 Да зачем либа для каждой мелочи? Почему блин джуны современные любят библиотеки юзать, и тянуть дохуя из сети из за мелочи? Можно ж всю страницу записать в стрингу, и регуляркой что угодно дергать
>>216471349 Еще проще вариант, если у них через жс данные для твоей таблицы тянутся просто найти этот запрос во вкладке сеть в браузере, и на него ломиться в коде, теоретически сразу получишь json какой-нибудь со всей инфой. Если там токены какие-то защитные есть, типа csrf, его можно так же через cheerio вытянуть со страницы, предварительно загрузив ее.
>>216471456 Ну да, хотя бы страница с выбранным миром, тоже хорошо и говорит что СКОРЕЕ ВСЕГО их сайт делал говнокодер, а значит СКОРЕЕ ВСЕГО никакой защиты от парминга там нет
>>216471524 Потому что это удобно и экономит время. Если мне нужно просто говносайт спарсить для личных нужд, то нахуй мне ебаться с составлением регулярок, когда можно подтянуть либу и работать с DOM с таким же синтаксисом как на старом добром жидквери?
>>216467736 (OP) А ты уверен, что это именно страница с сервер-сайд рендерингом и не более того? Если эта страница запрашивает данные с API в формате типа JSON, то работать с этим апи-эндпоинтом будет куда проще. Если такого нету и придётся работать с html - поищи для своего любимого языка либу для парсинга xml/html или адаптер селениума. Последний более громоздкий, но работу точно сделает.
>>216471810 >>216471544 Сукко, для следующего проекта ради лулзов сделаю чтоб данные с апиконтроллера возвращались в бинарном формате типа tlv(stlv) в виде массива байт, лол
>>216471544 насколько я понимаю ссылка с &setworld=3502 инициирует загрузку страницы с нужным мне куки, в результате чего страница грузится уже со всей нужной информацией. То что ты говоришь может мне как-то помочь? Подгрузки json-ов не наблюдаю.
Я вроде знаю что делать дальше, всем спасибо. Если есть еще советы, то я прочитаю.
>>216471718 Ну конечно, для каждого сата будем АСТ строить и токенайзер писать. Че мы как лохи. А регуляркой парсить что то сложнеее <p>hello world</p> то еще.
Так, вроде написал почти все, подскажите плз как из <td class="right" order="8900000">8 900 000</td> вытянуть 8900000 с помощью css селектора? Это же не аттрибут, верно?
Есть базовые знания Python, JS, Java, Selenium, jQuery.
На странице просто таблица с названиями и ценами предметов, я хочу получать уведомление когда в таблице появится предмет с более дешевой или дорогой ценой.