Jump to content
  • 0

как вытаскивать информацию с чужого сайта на свой?


gameviktor
 Share

Question

Здравствуйте, я пробывал вытаскивать текст с сайта на свой сайт, через php, но не получается подскажите как это можно реализовать.

Вот код, которым я пробывал:

<?php
$url = "http://battlelog.battlefield.com/bf3/ru/soldier/gameviktor/stats/353186188/";
$file = file_get_contents($url);
preg_match("#<tbody.*><tr.*><td.*><span.*>(.*)</span></td></tr></tbody>#u", $file, $usr);
$u = $usr[1];
echo $u;
?>

Нужно вытащить вот это:

gj6Z9XmRkEY.jpg

Сайт: http://battlelog.battlefield.com/bf3/ru/soldier/gameviktor/stats/353186188/

Link to comment
Share on other sites

20 answers to this question

Recommended Posts

  • 0

вроде идея правильная

ошибка может быть в двух случаях

во-первых: file_get_contents($url) не возвращает текст страницы (например из-за настроек хостинга)

во-вторых: неверное регулярное выражение

так ещё я там может быть проблема из-за того что эта статистика подгружается через Ajax

Edited by CalvinKlein
Link to comment
Share on other sites

  • 0

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

Во-вторых, никакого tbody в коде нет. Это, как его.. опять забыл :)... анонимный элемент?

Link to comment
Share on other sites

  • 0

насчёт tbody кстати да

но там всё через ajax так что тут регулярка не поможет

В общем нужно разобраться в скриптах и найти что за запрос там идёт

Edited by CalvinKlein
Link to comment
Share on other sites

  • 0

насчёт tbody кстати да

но там всё через ajax так что тут регулярка не поможет

В общем нужно разобраться в скриптах и найти что за запрос там идёт

Луше тогда промониторить через FireBug :rolleyes: Быстрее получится

  • Like 1
Link to comment
Share on other sites

  • 0

Угу

<?php
var_dump(json_decode(file_get_contents('http://battlelog.battlefield.com/bf3/ru/overviewPopulateStats/353186188/bf3-ru-engineer/1/')));
?>

ну если ему только кол-во убийств в с винтовки то можно регуляркой быстрее справиться

Link to comment
Share on other sites

  • 0

ну если ему только кол-во убийств в с винтовки то можно регуляркой быстрее справиться

Вы уверены, что регулярное выражение сработает быстрее, чем встроенная функция? Особенно с учетом построения автором? <_<

К тому же меньше геморроя. Достаточно крикнуть переменную.

Edited by Radiocity
Link to comment
Share on other sites

  • 0

Вы уверены, что регулярное выражение сработает быстрее, чем встроенная функция? Особенно с учетом построения автором? <_<

думаю да, хотя тут не принципиально

Link to comment
Share on other sites

  • 0

Угу

<?php
var_dump(json_decode(file_get_contents('http://battlelog.battlefield.com/bf3/ru/overviewPopulateStats/353186188/bf3-ru-engineer/1/')));
?>

ну если ему только кол-во убийств в с винтовки то можно регуляркой быстрее справиться

чёто не получилось, пишет "NULL". что делать?

Link to comment
Share on other sites

  • 0
<?php
$stats = json_decode(file_get_contents('http://battlelog.battlefield.com/bf3/ru/overviewPopulateStats/353186188/bf3-us-assault/1/'));

foreach ($stats->data->topStats as $weapon) {
printf(
"%d kills with %s (%d headshots)\n",
$weapon->kills,
$weapon->name,
$weapon->headshots
);
}
?>

Link to comment
Share on other sites

  • 0

<?php
$stats = json_decode(file_get_contents('http://battlelog.battlefield.com/bf3/ru/overviewPopulateStats/353186188/bf3-us-assault/1/'));

foreach ($stats->data->topStats as $weapon) {
printf(
"%d kills with %s (%d headshots)\n",
$weapon->kills,
$weapon->name,
$weapon->headshots
);
}
?>

Пишет "Warning: Invalid argument supplied for foreach(), это тут "foreach ($stats->data->topStats as $weapon)""

Link to comment
Share on other sites

  • 0

<?php
$stats = json_decode(file_get_contents('http://battlelog.battlefield.com/bf3/ru/overviewPopulateStats/353186188/bf3-us-assault/1/'));

foreach ($stats->data->topStats as $weapon) {
printf(
"%d kills with %s (%d headshots)\n",
$weapon->kills,
$weapon->name,
$weapon->headshots
);
}
?>

Пишет "Warning: Invalid argument supplied for foreach(), это тут "foreach ($stats->data->topStats as $weapon)""

А ты сначала так сделай

var_dump( file_get_contents('http://battlelog.battlefield.com/bf3/ru/overviewPopulateStats/
353186188/bf3-us-assault/1/') )

и посмотри, что тебе сервер возвращает.

Средствами отладки кто будет пользоваться? Мы не ясновидящие.

Link to comment
Share on other sites

  • 0

А ты сначала так сделай

var_dump( file_get_contents('http://battlelog.battlefield.com/bf3/ru/overviewPopulateStats/
353186188/bf3-us-assault/1/') )

и посмотри, что тебе сервер возвращает.

Средствами отладки кто будет пользоваться? Мы не ясновидящие.

в браузере всё содержимое 'http://battlelog.battlefield.com/bf3/ru/overviewPopulateStats/

353186188/bf3-us-assault/1/' выводится.

<?php
$stats = json_decode(file_get_contents('http://battlelog.battlefield.com/bf3/ru/overviewPopulateStats/353186188/bf3-us-assault/1/'));

foreach ($stats->data->topStats as $weapon) {
printf(
"%d kills with %s (%d headshots)\n",
$weapon->kills,
$weapon->name,
$weapon->headshots
);
}
?>

всё заработало. всем спасибо за помошь!

Не работал из-за того, что в коде запутался, который в 2 км.:)

Link to comment
Share on other sites

  • 0

А может подумать над использованием cURL + DOMDocument... и загрузка страниц будет менее требовательная к настройкам сервера, да и через DOM я думаю будет быстрее нужный элемент вытащить

Edited by Gold Dragon
Link to comment
Share on other sites

  • 0

А может подумать над использованием cURL + DOMDocument... и загрузка страниц будет менее требовательная к настройкам сервера, да и через DOM я думаю будет быстрее нужный элемент вытащить

Через DOM? На странице текста нет. Данные приходят в JSON формате, обрабатываются и выводятся на страницу.

Да и curl не везде стоит.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy