Как сканировать веб-сайт или извлекать данные в базу данных с помощью python?

Я хотел бы создать webapp, чтобы помочь другим студентам в моем университете создать свои графики. Для этого мне нужно просканировать основные расписания (одну огромную страницу html), а также ссылку на подробное описание каждого курса в базу данных, предпочтительно на python. Кроме того, мне нужно войти в систему, чтобы получить доступ к данным.

  • Как это работает?
  • Какие инструменты/библиотеки можно использовать/я должен использовать?
  • Есть ли хорошие учебники по этому поводу?
  • Как лучше всего иметь дело с двоичными данными (например, довольно pdf)?
  • Есть ли для этого хорошие решения?

Ответ 1

  • requests для загрузки страниц.
  • lxml для очистки данных.

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

Ответ 2

Scrapy, вероятно, является лучшей библиотекой Python для обхода. Он может поддерживать состояние для аутентифицированных сеансов.

Работа с двоичными данными должна обрабатываться отдельно. Для каждого типа файла вам придется обрабатывать его по-разному в соответствии с вашей собственной логикой. Для практически любого формата вы, вероятно, сможете найти библиотеку. Например, посмотрите на PyPDF для обработки PDF файлов. Для файлов excel вы можете попробовать xlrd.

Ответ 3

Мне понравилось использовать BeatifulSoup для извлечения html-данных

Это так просто:

from BeautifulSoup import BeautifulSoup 
import urllib

ur = urllib.urlopen("http://pragprog.com/podcasts/feed.rss")
soup = BeautifulSoup(ur.read())
items = soup.findAll('item')

urls = [item.enclosure['url'] for item in items]

Ответ 4

Для этого есть очень полезный инструмент, называемый web-сбор Ссылка на их сайт http://web-harvest.sourceforge.net/ Я использую это для сканирования веб-страниц