Как очистить конкретные данные от очистки с помощью простого HTML-парсера DOM - PullRequest
1 голос
/ 09 апреля 2011

Я пытаюсь собрать данные о ценах продукта на веб-странице Amazon, но я получаю больше, чем просто данные о цене в переменной, я включаю другие элементы, такие как <span> и т. Д. Код ...

include 'simple_html_dom.php';
$html1 = file_get_html('http://www.amazon.co.uk/New-Apple-iPod-touch-Generation/dp/B0040GIZTI/ref=br_lf_m_1000333483_1_1_img?ie=UTF8&s=electronics&pf_rd_p=229345967&pf_rd_s=center-3&pf_rd_t=1401&pf_rd_i=1000333483&pf_rd_m=A3P5ROKL5A1OLE&pf_rd_r=1ZW9HJW2KN2C2MTRJH60');

$price_data1 = $html1->find('b[class=priceLarge]',0);

Переменная также содержит такие данные, как <b class="priceLarge">£163.00</b>

Есть ли способ обрезать ненужные данные? Мне просто нужно £ 163,00.

Я не уверен, если я сделаю это во время поиска или, возможно, когда я выведу переменную, тогда я укажу, что я хочу?

Приветствия

Ответы [ 4 ]

1 голос
/ 24 ноября 2012

просто используйте

$result=$price_data1->innertext;

, вы определенно получите вывод желаний.

1 голос
/ 09 апреля 2011

Измените свой XPath, чтобы выбрать text() дочерний элемент <b> вместо выбора самого элемента.

$price_data1 = $html1->find('b[class=priceLarge]/text()',0);
0 голосов
/ 17 сентября 2012

Вы можете попробовать онлайн API как Synthetics Web . Вы можете извлекать данные с минимальными усилиями по кодированию.

$url = urlencode('http://www.amazon.co.uk/New-Apple-iPod-touch-Generation/dp/B0040GIZTI/ref=br_lf_m_1000333483_1_1_img?ie=UTF8&s=electronics&pf_rd_p=229345967&pf_rd_s=center-3&pf_rd_t=1401&pf_rd_i=1000333483&pf_rd_m=A3P5ROKL5A1OLE&pf_rd_r=1ZW9HJW2KN2C2MTRJH60');
$wid = '160';

$data = json_decode(file_get_contents("http://www.syntheticsweb.com/resources/www.json?wid=$wid&url=$url"));

echo $data->price;
0 голосов
/ 02 мая 2012
<b class="priceLarge">£163.00</b>

Просто используйте следующее:

$p = "/b class=\"priceLarge\">(.*)<\/b>/";
preg_match($p, $html, $match)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...