2013-04-27 4 views
1

Предположим, что я хочу извлечь текущий обменный курс биткойна (в евро) из немецкой биржи bitcoin.de, и значение будет взиматься каждый раз, когда я нахожусь на моем сайте (так что не кеширование). Я был в состоянии извлечь значение в PHP:Извлечение контента с внешнего сайта

// fetch contents from bitcoin.de 
$url = 'https://www.bitcoin.de/de/'; 
$content = file_get_contents($url); 

// cut everything before specified text 
$content = strstr($content, "Aktueller Bitcoin Kurs"); 

// extract rate 
$rate = strstr($content, "<b>"); 
$rate = substr($rate, 3); 
$rate = strstr($rate, "€", true); 

echo $rate . " EUR"; // e.g. 105,51 EUR 

Это прекрасно работает и печатает правильное значение тока, как это можно найти на веб-сайте bitcoin.de. Но я собираю весь контент веб-сайта, вычитаю все, что мне не нужно, и возвращаю его.

Мой вопрос: есть ли способ (возможно, также использовать jQuery) для решения этой задачи более эффективно; ergo не извлекает весь код сайта, а только значение скорости?

+0

они предоставляют API? – underscore

+0

Нет, я так не думаю. –

+0

Идентификатор, который вы хотите сделать в реальном времени, трудно использовать php, jquery. Попробуйте найти лучший API \ – underscore

ответ

2

Для доступа к этим данным доступно множество API-интерфейсов. Хотя есть способ более сложные интерфейсы, информация, которую вы ищете доступна на

http://data.mtgox.com/api/2/BTCUSD/money/ticker

+0

О, извините, я пропустил всю вещь в евро. http://data.mtgox.com/api/2/BTCEUR/money/ticker – ScottB

+0

Да, доллар США не был действительно полезным, так как мне пришлось бы использовать API-интерфейс для покрытия наличности. Но API Mt.Gox EUR отлично! Благодарю. –

+1

Отлично! Я точно не знаю, что вам нужно (скорость обновления, несколько обменов и т. Д.), Но, как я уже сказал, существует много API-интерфейсов, доступных для биткойнов на уровне пользователя и разработчика. Вот некоторые ссылки: Для торговой информации: http: // bitcoincharts.com/about/markets-api/ Для технической информации: http://blockexplorer.com/q – ScottB

1

Использование Document Object Model

И вам нужно прочитать: https://stackoverflow.com/a/3627553/2198378

+0

Насколько это было бы лучше? Разве это не принесло бы весь контент сайта и не выбрало бы то, что нужно? –

+0

Каждый обход требует всего содержимого как html-строки сразу. И проанализировать данные из обходных данных. По крайней мере, вам нужны целые данные сразу. –

+0

Хорошо, я вижу, поэтому, если API не доступен, мне придется забрать весь сайт и извлечь все, что мне нужно. Спасибо за ваш совет! –

2

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

+0

Звучит многообещающе. Я редактировал свой вопрос, чтобы понять, что кэширование явно не требуется. –

+0

Я знаю, что такие данные должны быть свежими, но даже кэширование в течение очень малого времени может иметь большой прирост производительности. –

+0

Хорошо, я думаю, что скорость обновляется каждые 15 или 30 минут. Я полагаю, что кэширование уже имело бы смысл в этом случае? Что ты предлагаешь? –

Смежные вопросы