Как сканировать сайт / извлекать данные в базу данных с помощью Python? - PullRequest
11 голосов
/ 01 декабря 2011

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

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

Ответы [ 4 ]

11 голосов
/ 01 декабря 2011

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

3 голосов
/ 01 декабря 2011

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

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

2 голосов
/ 01 декабря 2011

Мне понравилось использовать 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]
0 голосов
/ 21 сентября 2014

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...