Web-scraping: сбор данных из баз данных и интернет-источников: различия между версиями

Материал из MathINFO
Перейти к навигации Перейти к поиску
(Новая страница: «Это страница обязательного курса '''«Web-scraping: сбор данных из баз данных и интернет-источни...»)
 
 
(не показаны 44 промежуточные версии этого же участника)
Строка 1: Строка 1:
Это страница обязательного курса '''«Web-scraping: сбор данных из баз данных и интернет-источников»''', читаемого на программе «Психология» 3 курса бакалавриата в '''2022/2023''' учебном году.
+
Это страница курса '''«Web-scraping: сбор данных из баз данных и интернет-источников»''', читаемого на программе «Психология» 3 курса бакалавриата в '''2022/2023''' учебном году.
  
 
Практические занятия ведёт: Тамбовцева Алла Андреевна.
 
Практические занятия ведёт: Тамбовцева Алла Андреевна.
Строка 5: Строка 5:
 
==Правила игры==
 
==Правила игры==
  
* Формула оценки: '''0.5 × ДЗ + 0.5 × Экзамен'''.
+
* Формула оценки: '''0.5 × ДЗ + 0.5 × Проект''', [https://www.hse.ru/edu/courses/646467620 программа] курса.
 
* Домашние задания, сданные после срока, оцениваются с использованием понижающих коэффициентов: опоздание в пределах часа – штраф 10% от полученной оценки, в пределах суток – штраф 30%, в пределах недели – штраф 70%. Домашние задания, сданные через неделю после указанного срока и позже, не принимаются и не оцениваются.
 
* Домашние задания, сданные после срока, оцениваются с использованием понижающих коэффициентов: опоздание в пределах часа – штраф 10% от полученной оценки, в пределах суток – штраф 30%, в пределах недели – штраф 70%. Домашние задания, сданные через неделю после указанного срока и позже, не принимаются и не оцениваются.
* [https://www.hse.ru/edu/courses/470884252 Программа] курса.
 
  
 
==Среда для работы==
 
==Среда для работы==
  
На данном курсе мы используем язык Python версии не ниже 3.5 и среду Jupyter Notebook. Скачать дистрибутив Anaconda, который установит интерпретатор Python, среду Jupyter Notebook и основные библиотеки для работы с данными, можно [https://www.anaconda.com/products/individual здесь]. Если вы никогда не работали в Jupyter Notebook, предлагаем посмотреть небольшое [https://www.dropbox.com/s/9zku0zb6ttq71f5/intro-jupyter.mp4?dl=0 видео] и почитать [https://allatambov.github.io/icef/seminars/instruction-JN.pdf инструкцию].
+
На данном курсе мы используем язык Python версии не ниже 3.5 и среду Jupyter Notebook. Скачать дистрибутив Anaconda, который установит интерпретатор Python, среду Jupyter Notebook и основные библиотеки для работы с данными, можно [https://www.anaconda.com/products/individual здесь]. Если вы никогда не работали в Jupyter Notebook, предлагаем посмотреть небольшое [https://www.dropbox.com/s/9zku0zb6ttq71f5/intro-jupyter.mp4?dl=0 видео] и почитать [https://allatambov.github.io/icef/seminars/instruction-JN.pdf инструкцию]. В течение первой половины курса вместо Jupyter Notebook можно использовать онлайн-среду [https://colab.research.google.com/ Google Colab], она бесплатна, но для работы нужен аккаунт Gmail.  
  
Если вы имеете мало опыта работы с Python, рекомендуем обратиться к следующим курсам на DataCamp (бесплатный доступ предоставлен всем слушателям этого курса): [https://app.datacamp.com/learn/courses/intro-to-python-for-data-science Introduction to Python], [https://app.datacamp.com/learn/courses/python-data-science-toolbox-part-1 Python Data Science Toolbox (Part 1)] и [https://app.datacamp.com/learn/courses/python-data-science-toolbox-part-2 Python Data Science Toolbox (Part 2)].
+
==Для практики==
 +
 
 +
Если вы имеете мало опыта работы с Python, рекомендуем обратиться к следующим курсам на DataCamp (бесплатный доступ предоставлен всем слушателям этого курса): [https://app.datacamp.com/learn/courses/intro-to-python-for-data-science Introduction to Python], [https://app.datacamp.com/learn/courses/python-data-science-toolbox-part-1 Python Data Science Toolbox (Part 1)], [https://app.datacamp.com/learn/courses/python-data-science-toolbox-part-2 Python Data Science Toolbox (Part 2)], [https://app.datacamp.com/learn/courses/data-manipulation-with-pandas Data Manipulation with pandas].
 +
 
 +
Если хочется освежить в памяти разные сведения о конструкциях и структурах в Python, можно почитать материалы курса [http://math-info.hse.ru/s21/n Python для сбора и анализа данных].
 +
 
 +
==Материалы курса==
 +
 
 +
===Занятие 01. Язык HTML и его особенности. Знакомство с BeautifulSoup (10 января)===
 +
 
 +
* Язык HTML и его особенности: [https://www.dropbox.com/s/igzv6fb0l5fd5dz/Intro_HTML.pdf?dl=0 слайды], [https://codepen.io/allatambov/pen/QWOwJmN файл] на codepen.
 +
* Практикум 1 ([https://github.com/allatambov/WebScrape23/blob/main/psy-practice01.ipynb читать], [https://www.dropbox.com/s/m38gnwm5gm8v0no/psy-practice01.ipynb?dl=0 скачать]), решения практикума ([https://github.com/allatambov/WebScrape23/blob/main/psy-practice01-solutions.ipynb читать], [https://www.dropbox.com/s/sxepupb8bcaa8eh/psy-practice01-solutions.ipynb?dl=0 скачать]).
 +
 
 +
'''Дополнительно'''
 +
 
 +
* [https://www.w3schools.com/html/ Тьюториал] по HTML от w3schools.
 +
* [https://html5book.ru/html-tags/ Учебник] от html5book.ru.
 +
 
 +
===Занятие 02. Парсинг HTML-файлов с BeautifulSoup (17 января)===
 +
 
 +
* Практикум 2 ([https://github.com/allatambov/WebScrape23/blob/main/psy-practice02.ipynb читать], [https://www.dropbox.com/s/hrnnv2l4uriuj3t/psy-practice02.ipynb?dl=0 скачать]), решения практикума ([https://github.com/allatambov/WebScrape23/blob/main/psy-practice02-solutions.ipynb читать], [https://www.dropbox.com/s/2ja4g8pmf5gkdx5/psy-practice02-solutions.ipynb?dl=0 скачать]).
 +
 
 +
===Занятие 03. Веб-скреппинг с BeautifulSoup, pandas и json (24 января)===
 +
 
 +
* Практикум 3: о некоторых нюансах работы с BeautifulSoup (читать, сырой [https://www.dropbox.com/s/yy5wgcnyitsd131/extra-soup.ipynb?dl=0 ipynb]).
 +
* Обработка таблиц внутри HTML с BeautifulSoup и pandas ([https://github.com/allatambov/WebScrape23/blob/main/bs-pandas.ipynb читать], [https://www.dropbox.com/s/d9o064aguiy2vzy/bs-pandas.ipynb?dl=0 ipynb]).
 +
* Извлечение кода JavaScript из HTML и обработка JSON-строк ([https://github.com/allatambov/WebScrape23/blob/main/bs-js-json.ipynb читать], [https://www.dropbox.com/s/pnh74mv4jiwnp98/bs-js-json.ipynb?dl=0 ipynb]).
 +
 
 +
'''Дополнительно'''
 +
 
 +
* [https://www.crummy.com/software/BeautifulSoup/bs4/doc/ Документация] BeautifulSoup.
 +
* [https://habr.com/ru/post/349860/ Обзор] регулярных выражений на habr.com, [https://docs.python.org/3/library/re.html документация] модуля re.
 +
 
 +
===Занятие 04. Работа с API ВКонтакте (31 января)===
 +
 
 +
* [https://allatambov.github.io/pypolit/vk-auth.pdf Инструкция] по получению доступа к API.
 +
* Практикум 4: Работа с API ВКонтакте: ([https://github.com/allatambov/WebScrape23/blob/main/psy-practice04.ipynb читать], [https://www.dropbox.com/s/epd2mjxgo065dvu/psy-practice04.ipynb?dl=0 скачать]), решения практикума ([https://github.com/allatambov/WebScrape23/blob/main/psy-practice04-solutions.ipynb читать], [https://www.dropbox.com/s/dpxfbf2erlr208u/psy-practice04-solutions.ipynb?dl=0 скачать]).
 +
 
 +
===Занятие 05. Работа с текстами: анализ тональности и облака слов (07 февраля)===
 +
 
 +
* Практикум 5: анализ тональности и облака слов ([https://github.com/allatambov/WebScrape23/blob/main/practice-texts.ipynb читать], [https://www.dropbox.com/s/fo44rw1cl0f6rph/practice-texts.ipynb?dl=0 скачать]), файл [https://www.dropbox.com/s/o4q1c13d7gnxj18/comments-as-rows.csv?dl=0 comments-as-rows.csv]
 +
* [https://github.com/bureaucratic-labs/dostoevsky Документация] библиотеки dostoevsky, [https://pymorphy2.readthedocs.io/en/stable/ документация] библиотеки pymorphy2, [https://countwordsfree.com/stopwords/russian стоп-слова] для русского языка.
 +
* [https://www.datacamp.com/tutorial/wordcloud-python Тьюториал] по облакам слов от DataCamp.
 +
 
 +
'''Дополнительно'''
 +
 
 +
* Визуализация с matplotlib: [https://nbviewer.org/github/allatambov/PyGoOn/blob/main/VISUALIZATION-PART01.ipynb часть 1], [https://nbviewer.org/github/allatambov/PyGoOn/blob/main/VISUALISATION-PART02.ipynb часть 2].
 +
* Введение в классы в Python: [https://nbviewer.org/github/allatambov/allatambov.github.io/blob/master/pydj/seminars/classes.ipynb конспект].
 +
 
 +
===Занятие 06. Управление браузером с Selenium (14 февраля)===
 +
 
 +
* Установка Selenium и драйверов для Chrome: [https://github.com/allatambov/WebScrape23/blob/main/selenium.pdf инструкция], [https://chromedriver.chromium.org/downloads ссылка] на драйвера.
 +
* Практикум 6: управление браузером с Selenium на примере ВКонтакте ([https://github.com/allatambov/WebScrape23/blob/main/psy-practice06.ipynb читать], [https://www.dropbox.com/s/elijmhgyde0vyw8/psy-practice06.ipynb?dl=0 скачать]), решения практикума ([https://github.com/allatambov/WebScrape23/blob/main/psy-practice06-solutions.ipynb читать], [https://www.dropbox.com/s/iog89xvy3kiwpzk/psy-practice06-solutions.ipynb?dl=0 ipynb]).
 +
* Неофициальная [https://selenium-python.readthedocs.io/ документация] библиотеки Selenium.
 +
 
 +
===Занятие 07. Управление браузером с Selenium: продолжение (21 февраля)===
 +
 
 +
* Практикум 7: управление браузером с Selenium: скроллинг и извлечение ссылок ([https://github.com/allatambov/WebScrape23/blob/main/psy-practice07.ipynb читать], [https://www.dropbox.com/s/4m7s7jcfb6tlnjz/psy-practice07.ipynb?dl=0 скачать]), решения практикума ([https://github.com/allatambov/WebScrape23/blob/main/psy-practice07-solutions.ipynb читать], [https://www.dropbox.com/s/dv55z3yajocpmcg/psy-practice07-solutions.ipynb?dl=0 скачать]).
 +
 
 +
===Занятие 08. Управление браузером с Selenium: завершение (28 февраля)===
 +
 
 +
* Практикум 8: управление браузером с Selenium: XPATH и скачивание файлов ([https://github.com/allatambov/WebScrape23/blob/main/psy-practice08.ipynb читать], [https://www.dropbox.com/s/cyofm4nge0bl1zy/psy-practice08.ipynb?dl=0 скачать]), решения практикума ([https://github.com/allatambov/WebScrape23/blob/main/psy-practice08-solutions.ipynb читать], [https://www.dropbox.com/s/tm0k4tdg4e23iyo/psy-practice08-solutions.ipynb?dl=0 скачать]).
 +
 
 +
===Занятие 09. Более продвинутый парсинг с BeautifulSoup (7 марта)===
 +
 
 +
* Практикум 9: справляемся с кодировками и капчами ([https://github.com/allatambov/WebScrape23/blob/main/psy-practice09.ipynb читать], [https://www.dropbox.com/s/rxjo5zk3f0qejyx/psy-practice09.ipynb?dl=0 скачать]), решения ([https://github.com/allatambov/WebScrape23/blob/main/psy-practice09-solutions.ipynb читать]).
 +
 
 +
===Занятие 10. Создание приложений со streamlit (14 марта)===
 +
 
 +
* [https://streamlit.io/ Страница] проекта Streamlit, [https://docs.streamlit.io/library/cheatsheet перечень] основных функций.
 +
* Инструкция по работе со streamlit ([https://github.com/allatambov/WebScrape23/blob/main/instruct-streamlit.ipynb читать], [https://www.dropbox.com/s/467qopy9b0ajcvz/instruct-streamlit.ipynb?dl=0 ipynb]).
 +
* Исполняемый файл myapp.py ([https://github.com/allatambov/WebScrape23/blob/main/myapp.py читать], [https://www.dropbox.com/s/nyaqp9d6h9vklrz/myapp.py?dl=0 скачать]), [https://www.dropbox.com/scl/fo/dn6ifkzn3grb272186o1d/h?dl=0&rlkey=ezus3g9yloetkce1rg3em9qe5 txt-файлы] с текстами.
 +
* [https://carpentries-incubator.github.io/python-interactive-data-visualizations/08-publish-your-app/index.html Инструкция] по публикации приложения (сначала создать аккаунт и репозиторий на Github).
 +
 
 +
==Домашние задания==
 +
 
 +
Домашнее задание №3 объёмное, за него ставится две оценки. Итого за четыре домашних задания студенты получают пять оценок, что равносильно выполнению пяти заданий, заявленных в программе курса.
 +
 
 +
{| class="wikitable"
 +
|-
 +
! Домашнее задание !! Файл !! Дедлайн
 +
|-
 +
| [https://github.com/allatambov/WebScrape23/blob/main/psy-hw01.ipynb Домашнее задание 1]|| [https://www.dropbox.com/s/jpie1wyrwjzj1xu/psy-hw01.ipynb?dl=0 ipynb] || 17.01 23:59
 +
|-
 +
| [https://github.com/allatambov/WebScrape23/blob/main/psy-hw02.ipynb Домашнее задание 2]|| [https://www.dropbox.com/s/j4pvrz46eqsy8xm/psy-hw02.ipynb?dl=0 ipynb] || 23.01 23:59
 +
|-
 +
| [https://github.com/allatambov/WebScrape23/blob/main/psy-hw03.ipynb Домашнее задание 3] || [https://www.dropbox.com/s/03scyvwthqbxwuq/psy-hw03.ipynb?dl=0 ipynb] || 25.02 23:59
 +
|-
 +
| [https://github.com/allatambov/WebScrape23/blob/main/psy-hw04.ipynb Домашнее задание 4] || [https://www.dropbox.com/s/mc8nr2uojm2g8mt/psy-hw04.ipynb?dl=0 ipynb] || 23.03 23:59
 +
|}

Текущая версия на 08:30, 19 января 2024

Это страница курса «Web-scraping: сбор данных из баз данных и интернет-источников», читаемого на программе «Психология» 3 курса бакалавриата в 2022/2023 учебном году.

Практические занятия ведёт: Тамбовцева Алла Андреевна.

Правила игры

  • Формула оценки: 0.5 × ДЗ + 0.5 × Проект, программа курса.
  • Домашние задания, сданные после срока, оцениваются с использованием понижающих коэффициентов: опоздание в пределах часа – штраф 10% от полученной оценки, в пределах суток – штраф 30%, в пределах недели – штраф 70%. Домашние задания, сданные через неделю после указанного срока и позже, не принимаются и не оцениваются.

Среда для работы

На данном курсе мы используем язык Python версии не ниже 3.5 и среду Jupyter Notebook. Скачать дистрибутив Anaconda, который установит интерпретатор Python, среду Jupyter Notebook и основные библиотеки для работы с данными, можно здесь. Если вы никогда не работали в Jupyter Notebook, предлагаем посмотреть небольшое видео и почитать инструкцию. В течение первой половины курса вместо Jupyter Notebook можно использовать онлайн-среду Google Colab, она бесплатна, но для работы нужен аккаунт Gmail.

Для практики

Если вы имеете мало опыта работы с Python, рекомендуем обратиться к следующим курсам на DataCamp (бесплатный доступ предоставлен всем слушателям этого курса): Introduction to Python, Python Data Science Toolbox (Part 1), Python Data Science Toolbox (Part 2), Data Manipulation with pandas.

Если хочется освежить в памяти разные сведения о конструкциях и структурах в Python, можно почитать материалы курса Python для сбора и анализа данных.

Материалы курса

Занятие 01. Язык HTML и его особенности. Знакомство с BeautifulSoup (10 января)

Дополнительно

Занятие 02. Парсинг HTML-файлов с BeautifulSoup (17 января)

Занятие 03. Веб-скреппинг с BeautifulSoup, pandas и json (24 января)

  • Практикум 3: о некоторых нюансах работы с BeautifulSoup (читать, сырой ipynb).
  • Обработка таблиц внутри HTML с BeautifulSoup и pandas (читать, ipynb).
  • Извлечение кода JavaScript из HTML и обработка JSON-строк (читать, ipynb).

Дополнительно

Занятие 04. Работа с API ВКонтакте (31 января)

Занятие 05. Работа с текстами: анализ тональности и облака слов (07 февраля)

Дополнительно

Занятие 06. Управление браузером с Selenium (14 февраля)

Занятие 07. Управление браузером с Selenium: продолжение (21 февраля)

Занятие 08. Управление браузером с Selenium: завершение (28 февраля)

Занятие 09. Более продвинутый парсинг с BeautifulSoup (7 марта)

Занятие 10. Создание приложений со streamlit (14 марта)

Домашние задания

Домашнее задание №3 объёмное, за него ставится две оценки. Итого за четыре домашних задания студенты получают пять оценок, что равносильно выполнению пяти заданий, заявленных в программе курса.

Домашнее задание Файл Дедлайн
Домашнее задание 1 ipynb 17.01 23:59
Домашнее задание 2 ipynb 23.01 23:59
Домашнее задание 3 ipynb 25.02 23:59
Домашнее задание 4 ipynb 23.03 23:59