имя и получите его значение
name_box = soup.find ('h1', attrs = {'class': 'name'})
После того, как у нас есть тег, мы можем получить данные, получив его текст.
name = name_box.text.strip () # strip () используется для удаления стартового и конечного
имя печати
Точно так же мы можем получить и цену.
# получить индексную цену
price_box = soup.find ('div', attrs = {'class': 'price'})
price = price_box.text
цена печати
Когда вы запускаете программу, вы должны увидеть, что она печатает текущую цену индекса S & P 500.
Экспорт в Excel CSV
Теперь, когда у нас есть данные, пришло время его сохранить. Формат Excel Comma Separated Format - отличный выбор. Его можно открыть в Excel, чтобы вы могли легко просматривать данные и обрабатывать их.
Но сначала нам нужно импортировать модуль csv Python и модуль datetime, чтобы получить дату записи. Вставьте эти строки в свой код в разделе импорта.
импорт csv
from datetime import datetime
В нижней части кода добавьте код для записи данных в файл csv.
# открыть файл csv с добавлением, поэтому старые данные не будут удалены
с открытым ('index.csv', 'a') как csv_file:
writer = csv.writer (csv_file)
writer.writerow ([имя, цена, datetime.now ()])
Теперь, если вы запустите свою программу, вы можете экспортировать файл index.csv, который затем можно открыть с помощью Excel, где вы должны увидеть строку данных.
Поэтому, если вы запускаете эту программу каждый день, вы сможете легко получить цену индекса S & P 500 без перерывов через веб-сайт!
Далее (расширенное использование). Множественные индексы
Так что вам не хватает одного индекса, верно? Мы можем попытаться извлечь несколько индексов одновременно.
Сначала измените quote_page в массив URL-адресов.
quote_page = ['http://www.bloomberg.com/quote/SPX:IND', 'http://www.bloomberg.com/quote/CCMP:IND']
Затем мы меняем код извлечения данных в цикл for, который будет обрабатывать URL-адреса один за другим и хранить все данные в переменных данных в скобках.
# для цикла
data = []
для pg в quote_page:
# запросить веб-сайт и вернуть html в переменную 'page'
page = urllib2.urlopen (pg)
# разобрать html с помощью красивого мыла и сохранить в переменной `soup`
soup = BeautifulSoup (страница, 'html.parser')
# Выньте
имя и получите его значение
name_box = soup.find ('h1', attrs = {'class': 'name'})
name = name_box.text.strip () # strip () используется для удаления стартового и конечного
# получить индексную цену
price_box = soup.find ('div', attrs = {'class': 'price'})
price = price_box.text
# сохранить данные в кортеже
data.append ((имя, цена))
Кроме того, измените секцию сохранения, чтобы сохранить данные подряд за строкой.
# открыть файл csv с добавлением, поэтому старые данные не будут удалены
с открытым ('index.csv', 'a') как csv_file:
writer = csv.writer (csv_file)
# Цикл for
для имени, цены в данных:
writer.writerow ([имя, цена, datetime.now ()])
Перезапустите программу, и вы сможете одновременно извлекать два индекса!
Продвинутые методы парсинга
BeautifulSoup прост и удобен для мелкомасштабного веб-парсинга. Но если вы заинтересованы в парсинге данных в большем масштабе, вам следует подумать об использовании этих других альтернатив:
Попытайтесь интегрировать свой код с некоторыми общедоступными API. Эффективность поиска данных намного выше, чем парсинг веб-страниц.
Например, ознакомьтесь с API-интерфейсом Facebook Graph, который поможет вам получить скрытые данные, которые не отображаются на веб-страницах Facebook.
Рассмотрите возможность использования базы данных, такой как MySQL, для хранения ваших данных, когда она становится слишком большой.
Антон Гаген
?нформационное Агентство "Финансовый Юрист"