DOMDocument атрибута класса для получения внутреннего HTML файла html.

  • Автор темы pash1987
  • 26
  • Обновлено
  • 16, May 2024
  • #1
Как использовать класс атрибута, чтобы получить внутренний HTML-файл по заданному URL-адресу и HTML-файлу? Я искал в Интернете четкое объяснение. Где я ошибаюсь (я не привык к «->» и «=>», поскольку не знаю, что они представляют или делают):
 

<?php

//should come back to here

function walkDOMForTagAndClass($element, $tagName, $class, $callback) {

if ($element->nodeType !== 1) return false; // invalid element

// we force case as XML vs. SGML are inconsistent on ths

$tagName = strtoupper($tagName);

if ($walk = $element->firstChild) do {

if (

($walk->nodeType == 1) &&

(strtoupper($walk->nodeName) == $tagName) &&

($walk->attributes->getNamedItem('class') == $class)

) $callback($walk);

} while (

$walk = $walk->firstChild || $walk->nextSibling || (

$walk->parentNode == $element ? false : $walk->parentNode.nextSibling

)

);

}

$file = "[URL='https://lumtu.com/yti/SL11LSlZodHRwczovL2JsdWVsZXR0ZXJiaWJsZS5vcmcvbGFuZy9sZXhpY29uL2xleGljb24uY2ZtP1N0cm9uZ3M9SDEmdDmED']https://www.blueletterbible.org/lang/lexicon/lexicon.cfm?Strongs=H1&t=KJV[/URL]";

$doc = new DOMDocument();

$doc->loadHTMLFile($file);

walkDOMForTagAndClass(

$doc,

'div',

//'columns tablet-8 small-10 tablet-order-3 small-order-2',

'nocrumbs',

function($file) {

// do whatever it is you want with the matches here.

}

);

/*$html = "[URL='https://lumtu.com/yti/SL11LSlZodHRwczovL2JsdWVsZXR0ZXJiaWJsZS5vcmcvbGFuZy9sZXhpY29uL2xleGljb24uY2ZtP1N0cm9uZ3M9SDEmdDmED']https://www.blueletterbible.org/lang/lexicon/lexicon.cfm?Strongs=H1&t=KJV[/URL]";

$dom = new DOMDocument();

$dom->loadHTML($html);*/

//Evaluate Anchor tag in HTML

$xpath = new DOMXPath($doc);

$hrefs = $xpath->evaluate("/html/body//a");

for ($i = 0; $i < $hrefs->length; $i++) {

$href = $hrefs->item($i);

$url = $href->getAttribute('href');

//remove and set target attribute

$href->removeAttribute('target');

$href->setAttribute("target", "_blank");

$newURL=$url."/newurl";

//remove and set href attribute

$href->removeAttribute('href');

$href->setAttribute("href", $newURL);

}

// save html

$file=$doc->saveHTML();

echo $file;

?>

Код (разметка):

pash1987


Рег
27 Nov, 2012

Тем
2

Постов
2

Баллов
22
  • 07, Jun 2024
  • #2
Вероятно, вам не удалось найти ответ на свой вопрос в Google, потому что вы вообще не понимаете, о чем спрашивать.

При понимании HTML и базовом понимании PHP использовать DomDocument легко.

Однако, если вы не имеете ни малейшего представления о том, как использовать объекты PHP, методы и свойства доступа, это будет немного утомительно.

Вы даже удосужились поискать «Что такое -> в php»? Это было бы хорошим началом, чтобы понять, что происходит. Трудно ответить на ваш вопрос, поскольку вы даже не уверены в том, о чем спрашиваете, или в коде, который публикуете.

Итак, я предполагаю, что вы хотите использовать DomDocument для извлечения 1. URL-адреса и 2. связанного текста между тегами.

Верно? Вот пример того, как извлечь все ссылки из Craigslist:
 

<?php

$url = "[URL='https://lumtu.com/yti/cv55vcmdodHRwOi8vY3JhaWdzbGlzdCzlG']http://www.craigslist.org[/URL]";

$htmlParser = new domDocument();

$htmlParser->preserveWhiteSpace = false;

@$htmlParser->loadHTML(file_get_contents($url));

foreach ($htmlParser->getElementsByTagName('a') as $aTag)

{

$linkSrc = $aTag->getAttribute('src');

$linkText = $aTag->childNodes->item(0)->nodeValue;

echo "<a href=\"" . $linkSrc . "\">" . $linkText . "</a>\n";

}

Код (разметка):
 

Ninja1


Рег
19 Jun, 2014

Тем
0

Постов
4

Баллов
4
  • 13, Jun 2024
  • #3
Спасибо за совет. Я спрашивал про -> и => в новом посте. Мои навыки кодирования довольно базовые: циклы for, операторы if и regex/preg_match_all.

Я не привык к таким функциям, и DOMDocument для меня совершенно новый.

Но я хочу извлечь определенные вещи со страниц Стронга и вставить их в свою таблицу БД. Самое сложное — найти новые цифры Стронга в разделе определений, а также подобрать эти определения.

А затем повторите цикл, просматривая числа Стронга, найденные в их определениях, до тех пор, пока не останется числа Стронга, которое можно было бы подобрать.

В этом случае я хочу перейти на следующую страницу Стронга.

Номера Стронга — от H0 до H6090.
 

Kytsor


Рег
02 Dec, 2011

Тем
1

Постов
2

Баллов
12
Тем
49554
Комментарии
57426
Опыт
552966

Интересно