{"componentChunkName":"component---src-templates-material-js","path":"/workshops/2021/09/20/parsing-s-pomoshchyu-python-urok-2/index.html","result":{"pageContext":{"pageParameters":{"isPreview":false,"isMirror":true,"delay_to_show_donate_popup_seconds":7,"about_page":false,"games_page":true,"games_page_link_in_header":false,"donate_popup_show_ru":true,"donate_popup_title_ru":"Без вас — нас не будет","donate_popup_content_ru":"Помогите нам добывать и рассказывать важные истории. Участие каждого — важно!","donate_popup_show_en":true,"donate_popup_title_en":"We can’t do it alone!","donate_popup_content_en":"Help us uncover and share the stories that matter. Every contribution makes a difference","display_regular_donors_banner":false,"showPatreonMethod":true,"useNewMaterialDonationBanner":true,"new_donations_page_design":true,"donations_popup_variants":{"ru":[{"id":"kc19b","title":"Сохраните журналистику для людей в России ","subtitle":"Читают нас прежде всего люди в России, но будущее «Важных историй» зависит от тех, кто живет за пределами страны. Поддержите нас ежемесячным донатом — сохраните независимую журналистику для ваших близких, которые остаются в России.","is_active":true,"background":"linear-gradient(10deg, #421f20 5%, #994146)"},{"id":"33tc9","title":"У пропаганды есть миллиарды из бюджета. У нас — только вы","subtitle":"Перемены возможны, если независимые от власти журналисты продолжают свою работу день за днем, год за годом. Мы рассказываем важные истории уже шесть лет. Помогите нам продолжать.","is_active":true,"background":"linear-gradient(10deg, #421f20 5%, #994146)"}],"en":[{"id":"nj1py","title":"Important stories don’t tell themselves","subtitle":"Independent journalism comes at a cost. We answer to no owners or advertisers — only to you, our readers.  Your ongoing support allows us to keep exposing the truth. Without you, we won’t be here.","is_active":true,"background":"linear-gradient(10deg, #421f20 5%, #994146)"},{"id":"xdfc1","title":"Help us outlast the Kremlin censorship","subtitle":"Censorship lose to journalism that keeps showing up, year after year. Monthly donors are what make that possible","is_active":true,"background":"linear-gradient(10deg, #421f20 5%, #994146)"},{"id":"ck121","title":"State propaganda has billions to spend. We have only you to rely on","subtitle":"Change happens when independent journalists keep showing up — day after day, year after year. Six years in, we're still showing up. Help us keep going with a monthly donation.","is_active":true,"background":"linear-gradient(10deg, #421f20 5%, #994146)"}]},"feedback_page":true,"donorsCount":0,"showAuthorsRequestAfterMaterial":true,"radioPage":true,"radioExists":{"ru":true,"en":false},"singlePlaylistPath":{"ru":"/radio/2025/12/22/razgovori-ovazhnikh/index.html"},"with_bookmarks":true,"news_feed":true,"news_feed_skeleton":false,"news_page_redesign":true,"with_topics":true,"materials_topics":false,"topics_page":true,"with_pdf_share":false,"with_native_share":false,"preferred_source_page":true,"charon_new_form":true,"preferred_source_promos":true,"charon_en_page":true},"pk":337,"header":"Парсинг с помощью Python. Урок 2","lead":"Учимся скрейпить сайты с помощью библиотеки Selenium","category":"workshops","entry_image":[{"format":"webp","url_1x":"https://static.istories.media/uploaded/images/7ffb9d1516414e3cb0cec39b809dbc04-1920x960px_1x.webp","url_2x":"https://static.istories.media/uploaded/images/7ffb9d1516414e3cb0cec39b809dbc04-1920x960px_2x.webp","for_width":1920,"for_height":960,"real_width_1x":1920,"real_width_2x":3840,"real_height_1x":960,"real_height_2x":1920},{"format":"jpg","url_1x":"https://static.istories.media/uploaded/images/7ffb9d1516414e3cb0cec39b809dbc04-1920x960px_1x.jpg","url_2x":"https://static.istories.media/uploaded/images/7ffb9d1516414e3cb0cec39b809dbc04-1920x960px_2x.jpg","for_width":1920,"for_height":960,"real_width_1x":1920,"real_width_2x":3840,"real_height_1x":960,"real_height_2x":1920},{"format":"webp","url_1x":"https://static.istories.media/uploaded/images/7ffb9d1516414e3cb0cec39b809dbc04-1272x636px_1x.webp","url_2x":"https://static.istories.media/uploaded/images/7ffb9d1516414e3cb0cec39b809dbc04-1272x636px_2x.webp","for_width":1272,"for_height":636,"real_width_1x":1272,"real_width_2x":2544,"real_height_1x":636,"real_height_2x":1272},{"format":"jpg","url_1x":"https://static.istories.media/uploaded/images/7ffb9d1516414e3cb0cec39b809dbc04-1272x636px_1x.jpg","url_2x":"https://static.istories.media/uploaded/images/7ffb9d1516414e3cb0cec39b809dbc04-1272x636px_2x.jpg","for_width":1272,"for_height":636,"real_width_1x":1272,"real_width_2x":2544,"real_height_1x":636,"real_height_2x":1272},{"format":"webp","url_1x":"https://static.istories.media/uploaded/images/7ffb9d1516414e3cb0cec39b809dbc04-912x456px_1x.webp","url_2x":"https://static.istories.media/uploaded/images/7ffb9d1516414e3cb0cec39b809dbc04-912x456px_2x.webp","for_width":912,"for_height":456,"real_width_1x":912,"real_width_2x":1824,"real_height_1x":456,"real_height_2x":912},{"format":"jpg","url_1x":"https://static.istories.media/uploaded/images/7ffb9d1516414e3cb0cec39b809dbc04-912x456px_1x.jpg","url_2x":"https://static.istories.media/uploaded/images/7ffb9d1516414e3cb0cec39b809dbc04-912x456px_2x.jpg","for_width":912,"for_height":456,"real_width_1x":912,"real_width_2x":1824,"real_height_1x":456,"real_height_2x":912},{"format":"webp","url_1x":"https://static.istories.media/uploaded/images/7ffb9d1516414e3cb0cec39b809dbc04-600x400px_1x.webp","url_2x":"https://static.istories.media/uploaded/images/7ffb9d1516414e3cb0cec39b809dbc04-600x400px_2x.webp","for_width":600,"for_height":400,"real_width_1x":600,"real_width_2x":1200,"real_height_1x":400,"real_height_2x":800},{"format":"jpg","url_1x":"https://static.istories.media/uploaded/images/7ffb9d1516414e3cb0cec39b809dbc04-600x400px_1x.jpg","url_2x":"https://static.istories.media/uploaded/images/7ffb9d1516414e3cb0cec39b809dbc04-600x400px_2x.jpg","for_width":600,"for_height":400,"real_width_1x":600,"real_width_2x":1200,"real_height_1x":400,"real_height_2x":800},{"format":"webp","url_1x":"https://static.istories.media/uploaded/images/7ffb9d1516414e3cb0cec39b809dbc04-360x360px_1x.webp","url_2x":"https://static.istories.media/uploaded/images/7ffb9d1516414e3cb0cec39b809dbc04-360x360px_2x.webp","for_width":360,"for_height":360,"real_width_1x":360,"real_width_2x":720,"real_height_1x":360,"real_height_2x":720},{"format":"jpg","url_1x":"https://static.istories.media/uploaded/images/7ffb9d1516414e3cb0cec39b809dbc04-360x360px_1x.jpg","url_2x":"https://static.istories.media/uploaded/images/7ffb9d1516414e3cb0cec39b809dbc04-360x360px_2x.jpg","for_width":360,"for_height":360,"real_width_1x":360,"real_width_2x":720,"real_height_1x":360,"real_height_2x":720}],"entry_image_credit":"","blocks":[{"data":"Продолжаем изучать парсинг с Python. В <a href=\"https://istories.media/workshops/2021/09/10/parsing-s-pomoshchyu-python-urok-1/\" data-type=\"usual\" target=\"_blank\">прошлый раз</a> мы использовали библиотеки <strong>Requests</strong> и <strong>Beautifulsoup</strong> — но не всегда можно обойтись только ими. Сегодня поговорим о библиотеке <strong>Selenium</strong>. ","type":"p","className":""},{"data":{"id":2937,"data":{"url":"https://www.youtube.com/embed/oqS-bR5m1bI","text":"Съемка и монтаж: Глеб Лиманский","provider":"youtube","rawInput":"https://www.youtube.com/watch?v=oqS-bR5m1bI","ratio_mobile":"16:9","ratio_desktop":"16:9"},"category":"video-embed"},"type":"video-embed"},{"data":"С ее помощью мы можем имитировать действия пользователя в браузере, —&nbsp;то есть, сайт действительно будет открываться на компьютере, а затем скрипт будет выполнять прописанные нами действия.","type":"p","className":""},{"data":"В <a href=\"https://istories.media/workshops/2021/09/10/parsing-s-pomoshchyu-python-urok-1/\" data-type=\"usual\" target=\"_blank\">первом уроке по парсингу</a> мы работали с сайтом «КиноПоиск» и его списком топ-250 фильмов. Это было довольно просто: при переходе со страницы на страницу ссылка менялась предсказуемо, и мы смогли прописать это условие в коде. Но есть сайты, где все работает иначе.&nbsp;","type":"p","className":""},{"data":"Например, <a href=\"https://bus.gov.ru/registry\" data-type=\"usual\" target=\"_blank\">реестр с информацией о государственных муниципальных учреждениях</a>. Попробуем найти в нем онкологические диспансеры и посмотрим, как будет выглядеть ссылка.","type":"p","className":""},{"data":{"id":2938,"data":{"images":[{"imagesList":[{"format":"webp","url_1x":"https://static.istories.media/uploaded/images/af9af4e8317345dbbfc68f3746e84d48-1200xautopx_1x.webp","url_2x":"https://static.istories.media/uploaded/images/af9af4e8317345dbbfc68f3746e84d48-1200xautopx_2x.webp","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":616,"real_height_2x":1234},{"format":"png","url_1x":"https://static.istories.media/uploaded/images/af9af4e8317345dbbfc68f3746e84d48-1200xautopx_1x.png","url_2x":"https://static.istories.media/uploaded/images/af9af4e8317345dbbfc68f3746e84d48-1200xautopx_2x.png","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":616,"real_height_2x":1234}]}]},"category":"image-embed"},"type":"image-embed"},{"data":"На скриншоте видно, что после нашего запроса ссылка не изменилась. Она не изменится и когда мы перейдем на следующую страницу. Как раз для таких случаев пригодится библиотека <strong>Selenium</strong>,— скрипт сам забьет нужный запрос в поисковую строку, нажмет «Показать», начнет собирать нужные нам данные и так далее.","type":"p","className":""},{"data":"Чтобы воспользоваться этой библиотекой, необходимо <a href=\"https://chromedriver.chromium.org/downloads\" data-type=\"usual\" target=\"_blank\">скачать ChromeDriver</a> под вашу версию браузера Chrome (если версии не будут совпадать, ваш код не сработает). Распакуйте файл <strong>chromedriver</strong>, для удобства можно положить его в корневую директорию или на рабочий стол.&nbsp;","type":"p","className":""},{"data":"Далее через <strong>Jupyter</strong> установим саму библиотеку с помощью <strong>pip install</strong>.","type":"p","className":""},{"data":{"id":2939,"data":{"images":[{"imagesList":[{"format":"webp","url_1x":"https://static.istories.media/uploaded/images/4f6bf3f79cbb4d02a82bf64a9ab1d20b-1200xautopx_1x.webp","url_2x":"https://static.istories.media/uploaded/images/4f6bf3f79cbb4d02a82bf64a9ab1d20b-1200xautopx_2x.webp","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":176,"real_height_2x":352},{"format":"png","url_1x":"https://static.istories.media/uploaded/images/4f6bf3f79cbb4d02a82bf64a9ab1d20b-1200xautopx_1x.png","url_2x":"https://static.istories.media/uploaded/images/4f6bf3f79cbb4d02a82bf64a9ab1d20b-1200xautopx_2x.png","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":176,"real_height_2x":352}]}]},"category":"image-embed"},"type":"image-embed"},{"data":"Теперь импортируем из <strong>Selenium</strong> все необходимые нам команды и функции.&nbsp;Также нам сегодня пригодятся библиотеки <strong>Beautifulsoup</strong>, <strong>sleep</strong> и <strong>tqdm</strong> — импортируем и их.&nbsp;","type":"p","className":""},{"data":{"id":2940,"data":{"images":[{"credit":"Библиотека tqdm нужна для того, чтобы в Jupyter отображалась полоска, заполняемая по мере прогресса работы основного скрипта","imagesList":[{"format":"webp","url_1x":"https://static.istories.media/uploaded/images/287f38ced1004dae97c120b699f8afef-1200xautopx_1x.webp","url_2x":"https://static.istories.media/uploaded/images/287f38ced1004dae97c120b699f8afef-1200xautopx_2x.webp","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":184,"real_height_2x":367},{"format":"png","url_1x":"https://static.istories.media/uploaded/images/287f38ced1004dae97c120b699f8afef-1200xautopx_1x.png","url_2x":"https://static.istories.media/uploaded/images/287f38ced1004dae97c120b699f8afef-1200xautopx_2x.png","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":184,"real_height_2x":367}]}]},"category":"image-embed"},"type":"image-embed"},{"data":"Следующие шаги будут похожи на то, что мы делали в <a href=\"https://istories.media/workshops/2021/09/10/parsing-s-pomoshchyu-python-urok-1/\" data-type=\"usual\" target=\"_blank\">прошлом уроке</a>, но у библиотеки будет другой синтаксис. Сначала запустим наш ChromeDriver, на macOS это делается так: создаем переменную <strong>browser</strong>, указываем команду Chrome и в кавычках прописываем путь до ранее распакованного ChromeDriver.","type":"p","className":""},{"data":{"id":2941,"data":{"images":[{"imagesList":[{"format":"webp","url_1x":"https://static.istories.media/uploaded/images/531b0c478357481aa14dd1f1a1616670-1200xautopx_1x.webp","url_2x":"https://static.istories.media/uploaded/images/531b0c478357481aa14dd1f1a1616670-1200xautopx_2x.webp","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":78,"real_height_2x":156},{"format":"png","url_1x":"https://static.istories.media/uploaded/images/531b0c478357481aa14dd1f1a1616670-1200xautopx_1x.png","url_2x":"https://static.istories.media/uploaded/images/531b0c478357481aa14dd1f1a1616670-1200xautopx_2x.png","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":78,"real_height_2x":156}]}]},"category":"image-embed"},"type":"image-embed"},{"data":"После выполнения команды откроется сам браузер.","type":"p","className":""},{"data":{"id":2942,"data":{"images":[{"imagesList":[{"format":"webp","url_1x":"https://static.istories.media/uploaded/images/966292be70014e35b3a15fca551e9bf1-1200xautopx_1x.webp","url_2x":"https://static.istories.media/uploaded/images/966292be70014e35b3a15fca551e9bf1-1200xautopx_2x.webp","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":302,"real_height_2x":604},{"format":"png","url_1x":"https://static.istories.media/uploaded/images/966292be70014e35b3a15fca551e9bf1-1200xautopx_1x.png","url_2x":"https://static.istories.media/uploaded/images/966292be70014e35b3a15fca551e9bf1-1200xautopx_2x.png","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":302,"real_height_2x":604}]}]},"category":"image-embed"},"type":"image-embed"},{"data":"Теперь мы можем управлять браузером с помощью команд. Чтобы попасть на сайт, создадим переменную <strong>url</strong> и укажем нужный сайт (в нашем примере: <a href=\"https://bus.gov.ru/registry\" data-type=\"usual\" target=\"_blank\">https://bus.gov.ru/registry</a>). По аналогии с <strong>Requests</strong>, воспользуемся методом <strong>get</strong> и передаем на вход эту переменную.","type":"p","className":""},{"data":{"id":2943,"data":{"images":[{"imagesList":[{"format":"webp","url_1x":"https://static.istories.media/uploaded/images/a42251d979f84fe6b939ef25454d5e70-1200xautopx_1x.webp","url_2x":"https://static.istories.media/uploaded/images/a42251d979f84fe6b939ef25454d5e70-1200xautopx_2x.webp","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":202,"real_height_2x":405},{"format":"png","url_1x":"https://static.istories.media/uploaded/images/a42251d979f84fe6b939ef25454d5e70-1200xautopx_1x.png","url_2x":"https://static.istories.media/uploaded/images/a42251d979f84fe6b939ef25454d5e70-1200xautopx_2x.png","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":202,"real_height_2x":405}]}]},"category":"image-embed"},"type":"image-embed"},{"data":"Сайт должен загрузиться в нашем Chrome. Забьем критерий поиска — чтобы это сделать, как и в прошлый раз, изучим HTML-код страницы с помощью функции «Посмотреть код» (делать это лучше в обычном браузере, а не в управляемом <strong>Selenium</strong>).","type":"p","className":""},{"data":{"id":2944,"data":{"images":[{"imagesList":[{"format":"webp","url_1x":"https://static.istories.media/uploaded/images/d5a94939bca14da89cab5d09aca63be6-1200xautopx_1x.webp","url_2x":"https://static.istories.media/uploaded/images/d5a94939bca14da89cab5d09aca63be6-1200xautopx_2x.webp","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":408,"real_height_2x":816},{"format":"png","url_1x":"https://static.istories.media/uploaded/images/d5a94939bca14da89cab5d09aca63be6-1200xautopx_1x.png","url_2x":"https://static.istories.media/uploaded/images/d5a94939bca14da89cab5d09aca63be6-1200xautopx_2x.png","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":408,"real_height_2x":816}]}]},"category":"image-embed"},"type":"image-embed"},{"data":"Как видно в панели разработчика, здесь всё достаточно приятно и понятно, тег и класс выглядят уникальными. Но при этом стоит помнить об особенности <strong>Beautifulsoup</strong>, которая есть и в <strong>Selenium</strong> —&nbsp;если вы указываете запрос к какому-то элементу, запрос всегда будет выбирать первый элемент из кода.&nbsp;","type":"p","className":""},{"data":"Поэтому сперва найдем этот тег на странице с помощью команды из группы <strong>find</strong>. Если после ввода <strong>find</strong> вы нажмете <strong>Tab</strong> на клавиатуре, появятся несколько параметров поиска на выбор: по имени класса, по CSS-селектору, по <strong>id</strong> и так далее.","type":"p","className":""},{"data":{"id":2945,"data":{"images":[{"imagesList":[{"format":"webp","url_1x":"https://static.istories.media/uploaded/images/33e6f78cc34a48eeabb9b5c587593bde-1200xautopx_1x.webp","url_2x":"https://static.istories.media/uploaded/images/33e6f78cc34a48eeabb9b5c587593bde-1200xautopx_2x.webp","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":407,"real_height_2x":814},{"format":"png","url_1x":"https://static.istories.media/uploaded/images/33e6f78cc34a48eeabb9b5c587593bde-1200xautopx_1x.png","url_2x":"https://static.istories.media/uploaded/images/33e6f78cc34a48eeabb9b5c587593bde-1200xautopx_2x.png","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":407,"real_height_2x":814}]}]},"category":"image-embed"},"type":"image-embed"},{"data":"Нам нужен<strong> tag_name</strong>, конкретно —&nbsp;<strong>input</strong>.&nbsp;","type":"p","className":""},{"data":{"id":2946,"data":{"images":[{"credit":"Вся страница теперь — объект Selenium","imagesList":[{"format":"webp","url_1x":"https://static.istories.media/uploaded/images/fdfd1c40ff2c48058f3ca0da309ca64e-1200xautopx_1x.webp","url_2x":"https://static.istories.media/uploaded/images/fdfd1c40ff2c48058f3ca0da309ca64e-1200xautopx_2x.webp","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":107,"real_height_2x":214},{"format":"png","url_1x":"https://static.istories.media/uploaded/images/fdfd1c40ff2c48058f3ca0da309ca64e-1200xautopx_1x.png","url_2x":"https://static.istories.media/uploaded/images/fdfd1c40ff2c48058f3ca0da309ca64e-1200xautopx_2x.png","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":107,"real_height_2x":214}]}]},"category":"image-embed"},"type":"image-embed"},{"data":"Сообщение, как на скриншоте выше, показывает, что пока мы всё сделали правильно — объект был найден браузером. Можем попробовать также поиск по <strong>class_name</strong>. Но будьте внимательны: если в HTML-коде внутри названия класса есть пробелы, то это на самом деле несколько разных названий. Поэтому, если скопировать всё целиком, то <strong>Selenium</strong> выдаст ошибку.&nbsp;","type":"p","className":""},{"data":{"id":2947,"data":{"images":[{"imagesList":[{"format":"webp","url_1x":"https://static.istories.media/uploaded/images/57ad7fefbf974c2fbc1b9ef0e3725e8a-1200xautopx_1x.webp","url_2x":"https://static.istories.media/uploaded/images/57ad7fefbf974c2fbc1b9ef0e3725e8a-1200xautopx_2x.webp","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":508,"real_height_2x":1016},{"format":"png","url_1x":"https://static.istories.media/uploaded/images/57ad7fefbf974c2fbc1b9ef0e3725e8a-1200xautopx_1x.png","url_2x":"https://static.istories.media/uploaded/images/57ad7fefbf974c2fbc1b9ef0e3725e8a-1200xautopx_2x.png","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":508,"real_height_2x":1016}]}]},"category":"image-embed"},"type":"image-embed"},{"data":"Для примера возьмем первый класс элемента (<strong>search-input</strong>) и снова получим ответ от <strong>Selenium</strong>.&nbsp;Есть еще способы найти нужный элемент. Например, кликнуть правой кнопкой мыши на нужный кусок кода и в контекстном меню <strong>Copy</strong> выбрать <strong>Copy XPath</strong>.","type":"p","className":""},{"data":{"id":2948,"data":{"images":[{"credit":"XPath — это прямой путь до элемента в дереве сайта","imagesList":[{"format":"webp","url_1x":"https://static.istories.media/uploaded/images/9ddbdd12aa814a018936524fd425093e-1200xautopx_1x.webp","url_2x":"https://static.istories.media/uploaded/images/9ddbdd12aa814a018936524fd425093e-1200xautopx_2x.webp","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":588,"real_height_2x":1175},{"format":"png","url_1x":"https://static.istories.media/uploaded/images/9ddbdd12aa814a018936524fd425093e-1200xautopx_1x.png","url_2x":"https://static.istories.media/uploaded/images/9ddbdd12aa814a018936524fd425093e-1200xautopx_2x.png","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":588,"real_height_2x":1175}]}]},"category":"image-embed"},"type":"image-embed"},{"data":"Снова воспользуемся командой <strong>find</strong>, но выберем поиск по <strong>xpath</strong>.","type":"p","className":""},{"data":{"id":2949,"data":{"images":[{"imagesList":[{"format":"webp","url_1x":"https://static.istories.media/uploaded/images/977c52bf05394fd8b0da9fba21064c7d-1200xautopx_1x.webp","url_2x":"https://static.istories.media/uploaded/images/977c52bf05394fd8b0da9fba21064c7d-1200xautopx_2x.webp","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":100,"real_height_2x":202},{"format":"png","url_1x":"https://static.istories.media/uploaded/images/977c52bf05394fd8b0da9fba21064c7d-1200xautopx_1x.png","url_2x":"https://static.istories.media/uploaded/images/977c52bf05394fd8b0da9fba21064c7d-1200xautopx_2x.png","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":100,"real_height_2x":202}]}]},"category":"image-embed"},"type":"image-embed"},{"data":"По аналогии в контекстном меню <strong>Copy</strong> можно выбрать <strong>Copy selector</strong> — тогда соответственно меняем критерий в <strong>find</strong> на <strong>css_selector</strong>.","type":"p","className":""},{"data":"Таким же образом можно искать ссылки по тексту на странице. В шапке виден, например, кликабельный текст «Результаты независимой оценки». Критерий для команды <strong>find</strong> в таком случае будет <strong>link_text</strong>. Чтобы вытащить саму ссылку, добавим команду <strong>get</strong> по атрибуту <strong>href</strong>.","type":"p","className":""},{"data":{"id":2950,"data":{"images":[{"imagesList":[{"format":"webp","url_1x":"https://static.istories.media/uploaded/images/5345dce4bde9400fba078536f0e13a04-1200xautopx_1x.webp","url_2x":"https://static.istories.media/uploaded/images/5345dce4bde9400fba078536f0e13a04-1200xautopx_2x.webp","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":110,"real_height_2x":220},{"format":"png","url_1x":"https://static.istories.media/uploaded/images/5345dce4bde9400fba078536f0e13a04-1200xautopx_1x.png","url_2x":"https://static.istories.media/uploaded/images/5345dce4bde9400fba078536f0e13a04-1200xautopx_2x.png","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":110,"real_height_2x":220}]}]},"category":"image-embed"},"type":"image-embed"},{"data":"Вернемся к полю ввода. Выберем одну из наших поисковых функций и зададим этой переменной название <strong>input_tab</strong>. Добавим в нее наш поисковый запрос с помощью функции <strong>send_keys</strong> и проверим, выполнился ли запрос в окне браузера, которым управляет ChromeDriver.","type":"p","className":""},{"data":{"id":2951,"data":{"images":[{"credit":"Просим Selenium поискать «онкологический диспансер»...","imagesList":[{"format":"webp","url_1x":"https://static.istories.media/uploaded/images/c7958dbd8a54419dba237a004be631b8-1200xautopx_1x.webp","url_2x":"https://static.istories.media/uploaded/images/c7958dbd8a54419dba237a004be631b8-1200xautopx_2x.webp","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":287,"real_height_2x":574},{"format":"png","url_1x":"https://static.istories.media/uploaded/images/c7958dbd8a54419dba237a004be631b8-1200xautopx_1x.png","url_2x":"https://static.istories.media/uploaded/images/c7958dbd8a54419dba237a004be631b8-1200xautopx_2x.png","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":287,"real_height_2x":574}]},{"credit":"...и он ищет","imagesList":[{"format":"webp","url_1x":"https://static.istories.media/uploaded/images/bea98332744640a886081164f220e49b-1200xautopx_1x.webp","url_2x":"https://static.istories.media/uploaded/images/bea98332744640a886081164f220e49b-1200xautopx_2x.webp","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":648,"real_height_2x":1296},{"format":"png","url_1x":"https://static.istories.media/uploaded/images/bea98332744640a886081164f220e49b-1200xautopx_1x.png","url_2x":"https://static.istories.media/uploaded/images/bea98332744640a886081164f220e49b-1200xautopx_2x.png","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":648,"real_height_2x":1296}]}]},"category":"two-images-embed"},"type":"two-images-embed"},{"data":"Следующий шаг — клик по кнопке «Показать». Посмотрим ее код.&nbsp;","type":"p","className":""},{"data":{"id":2970,"data":{"images":[{"imagesList":[{"format":"webp","url_1x":"https://static.istories.media/uploaded/images/0632e1a149da48ca9eed909ceafc020f-1200xautopx_1x.webp","url_2x":"https://static.istories.media/uploaded/images/0632e1a149da48ca9eed909ceafc020f-1200xautopx_2x.webp","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":542,"real_height_2x":1084},{"format":"png","url_1x":"https://static.istories.media/uploaded/images/0632e1a149da48ca9eed909ceafc020f-1200xautopx_1x.png","url_2x":"https://static.istories.media/uploaded/images/0632e1a149da48ca9eed909ceafc020f-1200xautopx_2x.png","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":542,"real_height_2x":1084}]}]},"category":"image-embed"},"type":"image-embed"},{"data":"У кнопки есть тег <strong>button</strong> и несколько классов. Чаще всего (и в нашем примере тоже) не стоит надеяться, что мы просто вызовем тег <strong>button</strong>, и это окажется именно нужная нам кнопка. Лучше вытащить конкретный <strong>XPath</strong> элемента самим. ","type":"p","className":""},{"data":"Для этого воспользуемся уже знакомой командой<strong> find_element_by_xpath</strong>, пропишем название тега, в котором хотим найти нужный <strong>XPath</strong>, и в квадратных скобках через <strong>@</strong> добавим атрибут, по которому уточним запрос. В нашем случае самый удачный атрибут — <strong>type</strong> и его подходящее значение <strong>submit</strong>.&nbsp;","type":"p","className":""},{"data":{"id":2952,"data":{"images":[{"credit":"Обратите внимание на синтаксис и особенно на кавычки: сначала одинарные, затем двойные","imagesList":[{"format":"webp","url_1x":"https://static.istories.media/uploaded/images/165365df15f047cdb39795c5cc3e4850-1200xautopx_1x.webp","url_2x":"https://static.istories.media/uploaded/images/165365df15f047cdb39795c5cc3e4850-1200xautopx_2x.webp","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":150,"real_height_2x":299},{"format":"png","url_1x":"https://static.istories.media/uploaded/images/165365df15f047cdb39795c5cc3e4850-1200xautopx_1x.png","url_2x":"https://static.istories.media/uploaded/images/165365df15f047cdb39795c5cc3e4850-1200xautopx_2x.png","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":150,"real_height_2x":299}]}]},"category":"image-embed"},"type":"image-embed"},{"data":"Назовем эту переменную <strong>button</strong>, и следующим шагом просто кликнем на нее командой <strong>click</strong>.","type":"p","className":""},{"data":{"id":2953,"data":{"images":[{"imagesList":[{"format":"webp","url_1x":"https://static.istories.media/uploaded/images/6c92a011963444658ed46550b61c3a69-1200xautopx_1x.webp","url_2x":"https://static.istories.media/uploaded/images/6c92a011963444658ed46550b61c3a69-1200xautopx_2x.webp","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":180,"real_height_2x":359},{"format":"png","url_1x":"https://static.istories.media/uploaded/images/6c92a011963444658ed46550b61c3a69-1200xautopx_1x.png","url_2x":"https://static.istories.media/uploaded/images/6c92a011963444658ed46550b61c3a69-1200xautopx_2x.png","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":180,"real_height_2x":359}]}]},"category":"image-embed"},"type":"image-embed"},{"data":"В браузере должна появиться выдача по ранее введенному запросу.","type":"p","className":""},{"data":"Кстати, в этом случае можно было не искать кнопку, а с помощью команды <strong>send_keys</strong> имитировать нажатие <strong>Enter</strong> на клавиатуре, чтобы запустить поиск. Так можно имитировать нажатие любых клавиш или их сочетаний.","type":"p","className":""},{"data":{"id":2954,"data":{"images":[{"imagesList":[{"format":"webp","url_1x":"https://static.istories.media/uploaded/images/dc54bb53e8cc4e93b3639eb83949f545-1200xautopx_1x.webp","url_2x":"https://static.istories.media/uploaded/images/dc54bb53e8cc4e93b3639eb83949f545-1200xautopx_2x.webp","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":159,"real_height_2x":318},{"format":"png","url_1x":"https://static.istories.media/uploaded/images/dc54bb53e8cc4e93b3639eb83949f545-1200xautopx_1x.png","url_2x":"https://static.istories.media/uploaded/images/dc54bb53e8cc4e93b3639eb83949f545-1200xautopx_2x.png","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":159,"real_height_2x":318}]}]},"category":"image-embed"},"type":"image-embed"},{"data":"Теперь, когда у нас есть отсортированная база, можем начать ее парсить. Например, попробуем получить ссылки на регистрационные данные каждой компании и сделать таблицу из этих ссылок и названий соответствующих компаний.&nbsp;","type":"p","className":""},{"data":"Вытянем название по уже привычной схеме: кликнем на «Посмотреть код»&nbsp;и найдем тег (<strong>a</strong>) и класс (<strong>result__title</strong>). Дальше воспользуемся сразу двумя библиотеками, <strong>Selenium</strong> и <strong>Beautifulsoup</strong>. Код страницы, который мы читаем с помощью <strong>Selenium</strong>, передаем в <strong>Beautifulsoup</strong> через команду <strong>browser.page_source</strong>. Теперь, если вызвать эту команду, мы увидим код страницы целиком.","type":"p","className":""},{"data":{"id":2956,"data":{"images":[{"credit":"Раньше мы получали код с помощью r.text","imagesList":[{"format":"webp","url_1x":"https://static.istories.media/uploaded/images/0970e20460eb4df1be8dd1301ebacfbe-1200xautopx_1x.webp","url_2x":"https://static.istories.media/uploaded/images/0970e20460eb4df1be8dd1301ebacfbe-1200xautopx_2x.webp","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":260,"real_height_2x":520},{"format":"png","url_1x":"https://static.istories.media/uploaded/images/0970e20460eb4df1be8dd1301ebacfbe-1200xautopx_1x.png","url_2x":"https://static.istories.media/uploaded/images/0970e20460eb4df1be8dd1301ebacfbe-1200xautopx_2x.png","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":260,"real_height_2x":520}]}]},"category":"image-embed"},"type":"image-embed"},{"data":"С помощью <strong>Beautifulsoup</strong> и команды <strong>find</strong> найдем тег <strong>a</strong> и класс <strong>result__title</strong>, сразу переведя результат в текст и убрав лишние пробельные символы (командой <strong>strip</strong>). Назовем переменную <strong>name</strong>.","type":"p","className":""},{"data":{"id":2955,"data":{"images":[{"imagesList":[{"format":"webp","url_1x":"https://static.istories.media/uploaded/images/c1ef1799073e4a28b451ce4d495246cf-1200xautopx_1x.webp","url_2x":"https://static.istories.media/uploaded/images/c1ef1799073e4a28b451ce4d495246cf-1200xautopx_2x.webp","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":95,"real_height_2x":190},{"format":"png","url_1x":"https://static.istories.media/uploaded/images/c1ef1799073e4a28b451ce4d495246cf-1200xautopx_1x.png","url_2x":"https://static.istories.media/uploaded/images/c1ef1799073e4a28b451ce4d495246cf-1200xautopx_2x.png","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":95,"real_height_2x":190}]}]},"category":"image-embed"},"type":"image-embed"},{"data":"Следующий шаг — ссылка на регистрационные данные. Снова кликнем на «Посмотреть код», находим тег и класс. Классов указано несколько, возьмем только второй, потому что он выглядит уникальным для этого элемента.","type":"p","className":""},{"data":{"id":2957,"data":{"images":[{"imagesList":[{"format":"webp","url_1x":"https://static.istories.media/uploaded/images/05f24bda212240e8a24eee379a345c73-1200xautopx_1x.webp","url_2x":"https://static.istories.media/uploaded/images/05f24bda212240e8a24eee379a345c73-1200xautopx_2x.webp","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":382,"real_height_2x":765},{"format":"png","url_1x":"https://static.istories.media/uploaded/images/05f24bda212240e8a24eee379a345c73-1200xautopx_1x.png","url_2x":"https://static.istories.media/uploaded/images/05f24bda212240e8a24eee379a345c73-1200xautopx_2x.png","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":382,"real_height_2x":765}]}]},"category":"image-embed"},"type":"image-embed"},{"data":"Создаем переменную <strong>link</strong>, вводим необходимые тег и класс, запросим <strong>href</strong> командой <strong>get</strong>. В начало добавим домен, чтобы получить ссылку целиком.","type":"p","className":""},{"data":{"id":2958,"data":{"images":[{"imagesList":[{"format":"webp","url_1x":"https://static.istories.media/uploaded/images/61bf2c0878804544ba56754944f85e17-1200xautopx_1x.webp","url_2x":"https://static.istories.media/uploaded/images/61bf2c0878804544ba56754944f85e17-1200xautopx_2x.webp","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":120,"real_height_2x":241},{"format":"png","url_1x":"https://static.istories.media/uploaded/images/61bf2c0878804544ba56754944f85e17-1200xautopx_1x.png","url_2x":"https://static.istories.media/uploaded/images/61bf2c0878804544ba56754944f85e17-1200xautopx_2x.png","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":120,"real_height_2x":241}]}]},"category":"image-embed"},"type":"image-embed"},{"data":"Мы разобрались с первым элементом из списка поисковой выдачи. Но нам нужно пройтись по всем, а еще не забыть про следующие страницы. Посмотрим, в каких тегах лежат все наши данные.&nbsp;","type":"p","className":""},{"data":{"id":2960,"data":{"images":[{"credit":"В нашем случае это тег div с классом result","imagesList":[{"format":"webp","url_1x":"https://static.istories.media/uploaded/images/ed8933b84554447db5cf86a1825889a4-1200xautopx_1x.webp","url_2x":"https://static.istories.media/uploaded/images/ed8933b84554447db5cf86a1825889a4-1200xautopx_2x.webp","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":404,"real_height_2x":809},{"format":"png","url_1x":"https://static.istories.media/uploaded/images/ed8933b84554447db5cf86a1825889a4-1200xautopx_1x.png","url_2x":"https://static.istories.media/uploaded/images/ed8933b84554447db5cf86a1825889a4-1200xautopx_2x.png","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":404,"real_height_2x":809}]}]},"category":"image-embed"},"type":"image-embed"},{"data":"По карточкам можно пройтись как с помощью <strong>Beautifulsoup</strong>, так и с помощью <strong>Selenium</strong>. Сначала сделаем так, как уже делали в <a href=\"https://istories.media/workshops/2021/09/10/parsing-s-pomoshchyu-python-urok-1/\" data-type=\"usual\" target=\"_blank\">прошлом уроке</a>. Введем команду <strong>findAll</strong>, чтобы найти все нужные <strong>div</strong>-ы с классом <strong>result</strong>.&nbsp;Проверим с помощью <strong>len</strong>, сколько их на странице. Должно получиться <strong>10</strong>.&nbsp;","type":"p","className":""},{"data":{"id":2961,"data":{"images":[{"imagesList":[{"format":"webp","url_1x":"https://static.istories.media/uploaded/images/dff77cdc8fae44f4badf119e2ff626c9-1200xautopx_1x.webp","url_2x":"https://static.istories.media/uploaded/images/dff77cdc8fae44f4badf119e2ff626c9-1200xautopx_2x.webp","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":164,"real_height_2x":328},{"format":"png","url_1x":"https://static.istories.media/uploaded/images/dff77cdc8fae44f4badf119e2ff626c9-1200xautopx_1x.png","url_2x":"https://static.istories.media/uploaded/images/dff77cdc8fae44f4badf119e2ff626c9-1200xautopx_2x.png","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":164,"real_height_2x":328}]}]},"category":"image-embed"},"type":"image-embed"},{"data":"Если выполнять то же через <strong>Selenium</strong>, нужно использовать переменную <strong>browser</strong>, команду <strong>find_elements_by_class_name</strong> (обратите внимание: <strong>elements </strong>сейчас во множественном числе, а не в единственном, как мы писали ранее сегодня) и название класса <strong>result</strong>. Для уверенности можно снова перепроверить длину списка.","type":"p","className":""},{"data":{"id":2962,"data":{"images":[{"imagesList":[{"format":"webp","url_1x":"https://static.istories.media/uploaded/images/219a93d41dc043ddaa32f7a5661e66ef-1200xautopx_1x.webp","url_2x":"https://static.istories.media/uploaded/images/219a93d41dc043ddaa32f7a5661e66ef-1200xautopx_2x.webp","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":156,"real_height_2x":312},{"format":"png","url_1x":"https://static.istories.media/uploaded/images/219a93d41dc043ddaa32f7a5661e66ef-1200xautopx_1x.png","url_2x":"https://static.istories.media/uploaded/images/219a93d41dc043ddaa32f7a5661e66ef-1200xautopx_2x.png","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":156,"real_height_2x":312}]}]},"category":"image-embed"},"type":"image-embed"},{"data":"Соберем все необходимые команды в одну ячейку, чтобы с ними было удобнее работать. Организации, которые мы собираем со страницы сайта, положим в переменную <strong>orgs</strong>.&nbsp;","type":"p","className":""},{"data":{"id":2963,"data":{"images":[{"imagesList":[{"format":"webp","url_1x":"https://static.istories.media/uploaded/images/0950d6c921c24082a4bbf53ffb4ab063-1200xautopx_1x.webp","url_2x":"https://static.istories.media/uploaded/images/0950d6c921c24082a4bbf53ffb4ab063-1200xautopx_2x.webp","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":314,"real_height_2x":627},{"format":"png","url_1x":"https://static.istories.media/uploaded/images/0950d6c921c24082a4bbf53ffb4ab063-1200xautopx_1x.png","url_2x":"https://static.istories.media/uploaded/images/0950d6c921c24082a4bbf53ffb4ab063-1200xautopx_2x.png","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":314,"real_height_2x":627}]}]},"category":"image-embed"},"type":"image-embed"},{"data":"Создаем цикл. Для каждой организации будем доставать сначала название, затем ссылку. В цикле не забудьте заменить <strong>soup</strong> на <strong>org</strong>. Добавим в начало ячейки переменную <strong>data</strong>, куда запишем все результаты.&nbsp;","type":"p","className":""},{"data":{"id":2964,"data":{"images":[{"imagesList":[{"format":"webp","url_1x":"https://static.istories.media/uploaded/images/1b2be7ae3d4f4c52907af562d7182676-1200xautopx_1x.webp","url_2x":"https://static.istories.media/uploaded/images/1b2be7ae3d4f4c52907af562d7182676-1200xautopx_2x.webp","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":408,"real_height_2x":818},{"format":"png","url_1x":"https://static.istories.media/uploaded/images/1b2be7ae3d4f4c52907af562d7182676-1200xautopx_1x.png","url_2x":"https://static.istories.media/uploaded/images/1b2be7ae3d4f4c52907af562d7182676-1200xautopx_2x.png","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":408,"real_height_2x":818}]}]},"category":"image-embed"},"type":"image-embed"},{"data":"Теперь запускаем код. Но он вернет нам ошибку.","type":"p","className":""},{"data":{"id":2965,"data":{"images":[{"imagesList":[{"format":"webp","url_1x":"https://static.istories.media/uploaded/images/4e962c3f84e24d4aa66191536b7130cb-1200xautopx_1x.webp","url_2x":"https://static.istories.media/uploaded/images/4e962c3f84e24d4aa66191536b7130cb-1200xautopx_2x.webp","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":351,"real_height_2x":702},{"format":"png","url_1x":"https://static.istories.media/uploaded/images/4e962c3f84e24d4aa66191536b7130cb-1200xautopx_1x.png","url_2x":"https://static.istories.media/uploaded/images/4e962c3f84e24d4aa66191536b7130cb-1200xautopx_2x.png","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":351,"real_height_2x":702}]}]},"category":"image-embed"},"type":"image-embed"},{"data":"Дело в том, что <strong>Selenium</strong> устроен таким образом, что пока страница не прогрузится целиком, функции <strong>Beautifulsoup</strong> не смогут ничего найти. Здесь нам поможет библиотека <strong>sleep</strong> —&nbsp;сделаем небольшую задержку между поисковым запросом и непосредственно сбором данных со страницы.","type":"p","className":""},{"data":{"id":2966,"data":{"images":[{"credit":"В конце дописали print(len(data)), чтобы проверить работоспособность кода. Напечаталось 10 — значит, скрипт прошелся по всем карточкам","imagesList":[{"format":"webp","url_1x":"https://static.istories.media/uploaded/images/91d8b030cee84936b0776bf6319aa5f5-1200xautopx_1x.webp","url_2x":"https://static.istories.media/uploaded/images/91d8b030cee84936b0776bf6319aa5f5-1200xautopx_2x.webp","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":546,"real_height_2x":1092},{"format":"png","url_1x":"https://static.istories.media/uploaded/images/91d8b030cee84936b0776bf6319aa5f5-1200xautopx_1x.png","url_2x":"https://static.istories.media/uploaded/images/91d8b030cee84936b0776bf6319aa5f5-1200xautopx_2x.png","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":546,"real_height_2x":1092}]}]},"category":"image-embed"},"type":"image-embed"},{"data":"Запросим содержание <strong>data</strong> — и увидим, что в этот раз всё получилось.","type":"p","className":""},{"data":{"id":2967,"data":{"images":[{"imagesList":[{"format":"webp","url_1x":"https://static.istories.media/uploaded/images/86e96ec0b34a4242a9a80fc1c8d15bbe-1200xautopx_1x.webp","url_2x":"https://static.istories.media/uploaded/images/86e96ec0b34a4242a9a80fc1c8d15bbe-1200xautopx_2x.webp","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":405,"real_height_2x":810},{"format":"png","url_1x":"https://static.istories.media/uploaded/images/86e96ec0b34a4242a9a80fc1c8d15bbe-1200xautopx_1x.png","url_2x":"https://static.istories.media/uploaded/images/86e96ec0b34a4242a9a80fc1c8d15bbe-1200xautopx_2x.png","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":405,"real_height_2x":810}]}]},"category":"image-embed"},"type":"image-embed"},{"data":"Осталось дописать только автопереходы между страницами. Проверим код кнопки&nbsp;«Следующая», чтобы дописать эту команду в цикл.&nbsp;","type":"p","className":""},{"data":{"id":2968,"data":{"images":[{"credit":"Очень удобный класс","imagesList":[{"format":"webp","url_1x":"https://static.istories.media/uploaded/images/78a61da91feb43ab9d86ae6faef3e2fa-1200xautopx_1x.webp","url_2x":"https://static.istories.media/uploaded/images/78a61da91feb43ab9d86ae6faef3e2fa-1200xautopx_2x.webp","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":286,"real_height_2x":571},{"format":"png","url_1x":"https://static.istories.media/uploaded/images/78a61da91feb43ab9d86ae6faef3e2fa-1200xautopx_1x.png","url_2x":"https://static.istories.media/uploaded/images/78a61da91feb43ab9d86ae6faef3e2fa-1200xautopx_2x.png","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":286,"real_height_2x":571}]}]},"category":"image-embed"},"type":"image-embed"},{"data":"Страниц в нашем случае 9 — значит, необходимо 9 раз кликнуть на кнопку «Следующая» и собрать данные. Воспользуемся, как и в прошлом уроке, циклом<strong> for p in range 10</strong> (на 1 больше, чем нужно). Попросим скрипт печатать не только количество собранных карточек, но и пройденную страницу.","type":"p","className":""},{"data":"Допишем команду <strong>find</strong> по названию класса <strong>pagination_next </strong>и непосредственно <strong>click</strong>. После перехода добавим задержку с помощью <strong>sleep</strong>, чтобы данные успели прогрузиться.","type":"p","className":""},{"data":{"id":2969,"data":{"images":[{"credit":"Лучше ставить задержку в районе 10 секунд","imagesList":[{"format":"webp","url_1x":"https://static.istories.media/uploaded/images/7bc169e4fcb94601812da209c30a549b-1200xautopx_1x.webp","url_2x":"https://static.istories.media/uploaded/images/7bc169e4fcb94601812da209c30a549b-1200xautopx_2x.webp","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":574,"real_height_2x":1148},{"format":"png","url_1x":"https://static.istories.media/uploaded/images/7bc169e4fcb94601812da209c30a549b-1200xautopx_1x.png","url_2x":"https://static.istories.media/uploaded/images/7bc169e4fcb94601812da209c30a549b-1200xautopx_2x.png","for_width":1200,"for_height":"auto","real_width_1x":1200,"real_width_2x":2400,"real_height_1x":574,"real_height_2x":1148}]}]},"category":"image-embed"},"type":"image-embed"},{"data":"Теперь можно снова запросить содержание <strong>data</strong>, чтобы получить все названия организаций и ссылки, который выводит сайт по нашему запросу. После этого их можно сохранить в таблицу, как мы делали в <a href=\"https://istories.media/workshops/2021/09/10/parsing-s-pomoshchyu-python-urok-1/\" data-type=\"usual\" target=\"_blank\">прошлый раз</a>, и работать с ними дальше.","type":"p","className":""},{"data":"Остались вопросы? Задавайте их в нашем <a href=\"https://t.me/istories_helloworld\" data-type=\"usual\" target=\"_blank\">Telegram-чате</a>, постараемся ответить.","type":"p","className":""}],"created_at_date":"2021-09-20","updated_at_date":null,"created_at_date_time":null,"updated_at_date_time":null,"is_exclusive":false,"is_urgent":false,"initially_published_at":"2021-09-22T17:08:52.665Z","has_additional_facts":false,"locale":"ru","has_visualization_without_fallback":false,"spec_project":null,"header_secondary":"","warning":"","is_translated_by_ai":false,"with_donation_banner":true,"donation_banner_header":"","donation_banner_text":"","media_outlet__codename":null,"with_authors_request_banner":false,"faq":[],"_path":"/workshops/2021/09/20/parsing-s-pomoshchyu-python-urok-2/","is_published":true,"authors_list":[{"id":8,"lead":"Главная редакторка «Важных историй»","_path":"alesya-marokhovskaya","avatar":[{"format":"webp","url_1x":"https://static.istories.media/uploaded/images/12285015ded6416c9ce475e3a939d7f7-896x504px_1x.webp","url_2x":"https://static.istories.media/uploaded/images/12285015ded6416c9ce475e3a939d7f7-896x504px_2x.webp","for_width":896,"for_height":504,"original_url":"https://static.istories.media/uploaded/images/12285015ded6416c9ce475e3a939d7f7-original.jpg","real_width_1x":896,"real_width_2x":1792,"real_height_1x":504,"real_height_2x":1008},{"format":"jpg","url_1x":"https://static.istories.media/uploaded/images/12285015ded6416c9ce475e3a939d7f7-896x504px_1x.jpg","url_2x":"https://static.istories.media/uploaded/images/12285015ded6416c9ce475e3a939d7f7-896x504px_2x.jpg","for_width":896,"for_height":504,"original_url":"https://static.istories.media/uploaded/images/12285015ded6416c9ce475e3a939d7f7-original.jpg","real_width_1x":896,"real_width_2x":1792,"real_height_1x":504,"real_height_2x":1008},{"format":"webp","url_1x":"https://static.istories.media/uploaded/images/12285015ded6416c9ce475e3a939d7f7-688x387px_1x.webp","url_2x":"https://static.istories.media/uploaded/images/12285015ded6416c9ce475e3a939d7f7-688x387px_2x.webp","for_width":688,"for_height":387,"original_url":"https://static.istories.media/uploaded/images/12285015ded6416c9ce475e3a939d7f7-original.jpg","real_width_1x":688,"real_width_2x":1376,"real_height_1x":387,"real_height_2x":774},{"format":"jpg","url_1x":"https://static.istories.media/uploaded/images/12285015ded6416c9ce475e3a939d7f7-688x387px_1x.jpg","url_2x":"https://static.istories.media/uploaded/images/12285015ded6416c9ce475e3a939d7f7-688x387px_2x.jpg","for_width":688,"for_height":387,"original_url":"https://static.istories.media/uploaded/images/12285015ded6416c9ce475e3a939d7f7-original.jpg","real_width_1x":688,"real_width_2x":1376,"real_height_1x":387,"real_height_2x":774},{"format":"webp","url_1x":"https://static.istories.media/uploaded/images/12285015ded6416c9ce475e3a939d7f7-416x234px_1x.webp","url_2x":"https://static.istories.media/uploaded/images/12285015ded6416c9ce475e3a939d7f7-416x234px_2x.webp","for_width":416,"for_height":234,"original_url":"https://static.istories.media/uploaded/images/12285015ded6416c9ce475e3a939d7f7-original.jpg","real_width_1x":416,"real_width_2x":832,"real_height_1x":234,"real_height_2x":468},{"format":"jpg","url_1x":"https://static.istories.media/uploaded/images/12285015ded6416c9ce475e3a939d7f7-416x234px_1x.jpg","url_2x":"https://static.istories.media/uploaded/images/12285015ded6416c9ce475e3a939d7f7-416x234px_2x.jpg","for_width":416,"for_height":234,"original_url":"https://static.istories.media/uploaded/images/12285015ded6416c9ce475e3a939d7f7-original.jpg","real_width_1x":416,"real_width_2x":832,"real_height_1x":234,"real_height_2x":468},{"format":"webp","url_1x":"https://static.istories.media/uploaded/images/12285015ded6416c9ce475e3a939d7f7-336x189px_1x.webp","url_2x":"https://static.istories.media/uploaded/images/12285015ded6416c9ce475e3a939d7f7-336x189px_2x.webp","for_width":336,"for_height":189,"original_url":"https://static.istories.media/uploaded/images/12285015ded6416c9ce475e3a939d7f7-original.jpg","real_width_1x":336,"real_width_2x":672,"real_height_1x":188,"real_height_2x":378},{"format":"jpg","url_1x":"https://static.istories.media/uploaded/images/12285015ded6416c9ce475e3a939d7f7-336x189px_1x.jpg","url_2x":"https://static.istories.media/uploaded/images/12285015ded6416c9ce475e3a939d7f7-336x189px_2x.jpg","for_width":336,"for_height":189,"original_url":"https://static.istories.media/uploaded/images/12285015ded6416c9ce475e3a939d7f7-original.jpg","real_width_1x":336,"real_width_2x":672,"real_height_1x":188,"real_height_2x":378}],"lead_en":"Editor-in-chief","ordering":null,"position":"Редакторка","is_public":true,"last_name":"Мароховская","first_name":"Алеся","position_en":"Editor","last_name_en":"Marokhovskaya","first_name_en":"Alesya"}],"external_authors_list":[],"editors_list":[],"external_editors_list":[],"participants_list":[],"external_participants_list":[],"partners_list":[],"case":null,"translated_material":null,"audio_material":null,"text_material":null,"id":337,"topics":[],"meta":{"og_title":"","og_description":"","twitter_title":"","twitter_description":"","og_image":"https://static.istories.media/uploaded/images/share/9624756815504b07bfd1d07404896be1.jpg","twitter_image":"https://static.istories.media/uploaded/images/share/9624756815504b07bfd1d07404896be1.jpg","vk_image":"https://static.istories.media/uploaded/images/share/vk/2bb6514b62284ec49d66ab9d15fa1b1c.jpg"},"tags":["beautifulsoup","скрейпинг","сбор данных","парсинг","selenium","python","ddj"],"playlist":null,"socialMediaBanners":[{"id":10,"text":"У пропаганды есть миллиарды из бюджета. У нас — только вы","link":"","codename":"donation"},{"id":14,"text":"Список погибших и пропавших без вести российских военных","link":"","codename":"haron"},{"id":18,"text":"","link":"","codename":"mobile_app"},{"id":6,"text":"Оставайтесь на связи: подпишитесь на нашу рассылку","link":"","codename":"newsletter"}]}},"staticQueryHashes":["764694655"],"slicesMap":{}}