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

Парсинг веб-сайтов позволяет извлекать информацию с сотен или тысяч веб-страниц одновременно. Вы можете искать вакансии на таких сайтах, как Indeed, или твиты в Twitter. В этом кратком введении в парсинг веб-страниц мы рассмотрим базовый код для парсинга веб-сайтов, чтобы любой, независимо от опыта, мог извлекать и анализировать такие результаты.

Начиная

Используя мой репозиторий GitHub для веб-скрейпинга, вы можете установить программное обеспечение и запустить скрипты в соответствии с инструкциями. Нажмите на каталог на странице репозитория, чтобы увидеть файл, который объясняет каждый скрипт и как их запускать.

Изучение сайта

Вы можете использовать файл карты сайта, чтобы определить, куда веб-сайты загружают контент, не сканируя каждую веб-страницу. Вот образец. Вы также можете узнать, насколько велик сайт и сколько информации вы можете извлечь из него. Вы можете выполнить поиск по сайту с помощью Расширенного поиска Google, чтобы выяснить, сколько страниц вам может понадобиться очистить. Это пригодится при создании веб-скребка, которому может потребоваться приостановка для обновлений или действие по-другому после достижения определенного количества страниц.

Вы также можете запустить скрипт identify.py в каталоге, чтобы узнать больше о том, как был создан каждый сайт. Это должно предоставить информацию о фреймворках, языках программирования и серверах, используемых при создании каждого веб-сайта, а также о зарегистрированном владельце домена. Это также использует robotparser для проверки ограничений.

На многих веб-сайтах есть файл robots.txt с ограничениями сканирования. Убедитесь, что вы проверили этот файл для веб-сайта для получения дополнительной информации о том, как сканировать веб-сайт или какие-либо правила, которым вы должны следовать. Образец протокола можно найти здесь.

Сканирование сайта

Существует три основных подхода к сканированию сайта: сканирование карты сайта, повторение идентификатора для каждой веб-страницы и переход по ссылкам веб-страницы. download.py показано, как загрузить веб-страницу с помощью методов сканирования карты сайта, показано, как извлечь эти результаты при повторении идентификаторов веб-страницы, а indeedScrape.py использует ссылки веб-страницы для сканирования. download.py также содержит информацию о вставке задержек, возвращении списка ссылок из HTML и поддержке прокси-серверов, которые могут позволить вам получить доступ к веб-сайтам через заблокированные запросы.

Скрапинг данных

В файле вы можете сравнить эффективность трех методов парсинга веб-страниц.

Вы можете использовать регулярные выражения (известные как регулярное выражение или регулярное выражение) для выполнения изящных трюков с текстом для получения информации с веб-сайтов. Скрипт показывает, как это делается.

Вы также можете использовать расширение браузера Firebug Lite для получения информации с веб-страницы. В Chrome вы можете нажать View ›› Developer ›› View Source, чтобы получить исходный код веб-страницы.

Beautiful Soup, один из необходимых пакетов для запуска indeedScrape.py, анализирует веб-страницу и предоставляет удобный интерфейс для навигации по содержимому, как показано на рис. Lxml также делает это в lxmltest.py. Сравнение этих трех методов очистки приведено в следующей таблице.

Скрипт callback.py позволяет очищать данные и сохранять их в выходной файл .csv.

Кэширование загрузок

Кэширование просканированных веб-страниц позволяет хранить их в управляемом формате, при этом загружать их нужно только один раз. В download.py есть класс Python Downloader, который показывает, как кэшировать URL-адреса после загрузки их веб-страниц. имеет класс Python, который сопоставляет URL-адрес с именем файла при кэшировании.

В зависимости от того, какую операционную систему вы используете, существует ограничение на объем кэширования.

Хотя cache.py прост в использовании, вы можете использовать хэш самого URL-адреса в качестве имени файла, чтобы ваши файлы напрямую отображались на URL-адреса сохраненного кеша. Используя MongoDB, вы можете строить поверх текущей системы баз данных файловой системы и избегать ограничений файловой системы. Этот метод можно найти в mongocache.py с использованием pymongo, оболочки Python для MongoDB.

Протестируйте другие сценарии, например, для загрузки информации с лучших сайтов по рейтингу Alexa. mongoqueue.py имеет функциональность для постановки в очередь запросов MongoDB, которые можно импортировать в другие скрипты.

Вы можете работать с динамическими веб-страницами, используя код из browserrender.py. Большинство ведущих веб-сайтов используют JavScript для функциональности, а это означает, что вы не можете просматривать весь их контент в простом HTML.

Любитель науки и философии

Первоначально опубликовано на https://hussainather.com 14 декабря 2019 г.