значит пруфов не будет? короче очередной лолик, не осиливший регулярки. чтд.
ждём истории из серии bs4 работает быстрее, чем машинный код.
ждём истории из серии bs4 работает быстрее, чем машинный код.
Я тебе сказал - скачай исходники bs4 разберись подробнее в вопросе, пойми разницу между твоей наспех составленной кривой регуляркой и работой нормальной библиотеки. Так что следи за языком. Я лично такому как ты доказывать уже ничего не хочу. Учиться не хочешь, только спорить на форумах...значит пруфов не будет? короче очередной лолик, не осиливший регулярки. чтд.
ждём истории из серии bs4 работает быстрее, чем машинный код.
сохранил это в закладки. лол. спс за беседу.Я тебе сказал - скачай исходники bs4 разберись подробнее в вопросе, пойми разницу между твоей наспех составленной кривой регуляркой и работой нормальной библиотеки.
Ну наконец ты понял хоть что то, мелкое ничтожествосохранил это в закладки. лол. спс за беседу.
Ну наконец ты понял хоть что то, мелкое ничтожество![]()
ты всё-таки сказочный долбаёб. бс4 сам юзает регулярки. да и про скорость вообще не было ни слова, ибо на такой задаче на неё вообще похуй, если ты, конечно, не собираешься парсить курс валют миллион раз в минуту. жду от тебя бенч с пруфом - как бс4, который юзает re, парсит быстрее чем сам re.
Да по телу dom, но не по всей же странице. Я ничего объяснять лично вумпусу не буду, потому что у него как бы сказать все очень плохо с социальным взаимодействием... ему аргументы не нужны, только подтверждения его правоты.тащемта суп юзает три разных парсера, и два (html5lib, htmlparser) из них юзают регулярки. Третий (lxml) компилится, и его сорцы я не смотрел, но и там есть применение вышеназванных библиотек.
немного пруфов (делайте поиск по tag_regexp и re.)
https://github.com/html5lib/html5li...ebb80e6feaff666/html5lib/treewalkers/etree.py
https://github.com/python/cpython/blob/3.8/Lib/html/parser.py
И насколько я понял, wumpus изначально имел ввиду, что тащить к этому маленькому скрипту две либы смысла вообще небыло.
Несомненно, если бы мы парсили дикое количество инфы, то на больших страницах регекспы проиграют, т.к. ведут поиск по не размеченным данным (и чем больше в теле страницы сорцев, тем медленнее)
ну про lxml речи не было. он кстати лидирует в q/a вида "how to improve performance" по тегу bs4. у супа одно из узких мест - построение деревьев, которое в нашем случае вообще не нужно, если рассматриваем конкретный таск - дёрнуть страницу и вытащить из неё одно единственное значение, которое размещено статично в теге вида <div ... id="last_last" ...></div>. парсить это как html вообще не имеет смысла. на такой задаче бенчи bs4 + lxml против re будут в пользу последнего.тащемта суп юзает три разных парсера, и два (html5lib, htmlparser) из них юзают регулярки. Третий (lxml) компилится, и его сорцы я не смотрел, но и там есть применение вышеназванных библиотек.
немного пруфов (делайте поиск по tag_regexp и re.)
https://github.com/html5lib/html5li...ebb80e6feaff666/html5lib/treewalkers/etree.py
https://github.com/python/cpython/blob/3.8/Lib/html/parser.py
И насколько я понял, wumpus изначально имел ввиду, что тащить к этому маленькому скрипту две либы смысла вообще небыло.
Несомненно, если бы мы парсили дикое количество инфы, то на больших страницах регекспы проиграют, т.к. ведут поиск по не размеченным данным (и чем больше в теле страницы сорцев, тем медленнее)
Если прям уж статично все, кроме цены, не проще ли из HTTP респонса вытянуть ответ по определённому смещению?конкретный таск - дёрнуть страницу и вытащить из неё одно единственное значение, которое размещено статично в теге вида <div ... id="last_last" ...></div>.
_https://ru.investing.com/currencies/usd-rubЕсли прям уж статично все, не проще ли из HTTP респонса вытянуть ответ по определённому смещению?
Статья очень зачётная. Много нового узнал. Много по времени заняло?Парсер - это программа которая собирает данные с интернета, анализирует их и выдает в нужном формате.
В этом уроке мы напишем парсер, который будет отслеживать курс доллара. Использовать будем python (один из лучших языков программирования для работы с информацией).
Для начала нужно скачать библиотеки (введите код ниже в коммандной строке)
Код:pip install requests pip install bs4
requests - библиотека для получения кода веб сайта (информация о курсе есть в коде веб страницы)
bs4 - библиотека для работы с HTML, CSS кодом (с помощью него мы будем искать в коде нужную нам информацию)
Создаём файл dollar.py (можете назвать его по-другому) и имртируем все нужные библиотеки:
Python:import requests from bs4 import BeautifulSoup
Парсить будем с сайта investing.com, поэтому нужно сохранить URL страницы с курсом доллара (https://ru.investing.com/currencies/usd-rub) в виде переменной
Python:# import ... URL = 'https://ru.investing.com/currencies/rub-usd'
Также сначала нужно узнать свой User Agent. Просто введите в google "my user agent" и скопируйте строку в переменную:
Python:# import ... # URL ... HEADERS = {'user-agent' : '*ваш user agent*'}
Теперь нам нужно получить код страницы:
Python:# ... page = requests.get (URL, headers = HEADERS)
Переходим на сайт и нажимаем Ctrl+Shift+I. Теперь мы видим код страницы прямо в браузере. Нажимаем на кнопку слева сверху (для выбора элемента на странице) и выбираем текст с курсом доллара (если мы будем знать, где в коде находится текст с курсом доллара, мы можем каждый раз обращаться к этой части кода и выводить этот текст). Узнаём, что курс храниться в теге с id равным "late-late". Теперь создадим переменную soup, чтобы найти тег с нужным нам id:
Код:# ... # page.content - код страницы soup = BeautifulSoup (page.content, 'html.parser') currency = soup.find (id = 'late-late') # находим тег с id 'late-late' (в этом теге хранится курс доллара) print (currency.text) # выводим текст, хранящийся в этом теге
Вот весь код парсера:
Python:import requests from bs4 import BeautifulSoup URL = 'https://ru.investing.com/currencies/usd-rub' HEADERS = {'user-agent' : '*ваш user agent*'} page = requests.get (URL, headers = HEADERS) soup = BeautifulSoup (page.content, 'html.parser') currency = soup.find (id = 'late-late').text print (currency)
Извини, но ты, видимо, не до конца понимаешь что такое DOM (либо я не понял, зачем ты это написал). DOM как раз таки и строится благодаря этому "парсингу регулярками", чтобы потом ты уже мог применять селекторы и различные методы для управления содержимым. До парсинга, страница это просто набор текста с разметкой (не всегда валидной).Да по телу dom, но не по всей же странице.
perl -MLWP::Simple -MJSON -e '$ref = decode_json(get("https://www.cbr-xml-daily.ru/daily_json.js")); print $ref->{"Valute"}->{"USD"}->{"Value"}."\n"'
добавь декодинг JSON однострочником (вместо либы) и голосую за тебяPerl:perl -MLWP::Simple -MJSON -e '$ref = decode_json(get("https://www.cbr-xml-daily.ru/daily_json.js")); print $ref->{"Valute"}->{"USD"}->{"Value"}."\n"'
добавь декодинг JSON однострочником (вместо либы) и голосую за тебя
curl https://www.cbr-xml-daily.ru/daily_jsonp.js --silent | perl -ne 'print($_ =~ m/USD.*?Value":(\d+\.\d+)/m);print("\n")'