Использование Xpath с PHP для анализа HTML

В настоящее время я пытаюсь разобрать некоторые данные с форума. Вот код:

$xml = simplexml_load_file('https://forums.eveonline.com'); $names = $xml->xpath("html/body/div/div/form/div/div/div/div/div[*]/div/div/table//tr/td[@class='topicViews']"); foreach($names as $name) { echo $name . "<br/>"; } 

Во всяком случае, проблема в том, что я использую расширение google xpath, чтобы помочь мне получить путь, и я предполагаю, что Google меняет html достаточно, чтобы он не появлялся, когда я использую свой сайт для этого поиска. Есть ли какой-то способ, по которому я могу заставить хоста посмотреть сайт через google chrome, чтобы он получил правильный код? Что ты предлагаешь?

Благодаря!

Мое предложение состоит в том, чтобы всегда использовать DOMDocument в отличие от SimpleXML, так как это более приятный интерфейс для работы и делает задачи более интуитивными.

В следующем примере показано, как загрузить HTML в объект DOMDocument и запросить DOM с помощью XPath. Все, что вам действительно нужно сделать, это найти все td- элементы с именем класса topicViews, и это выведет каждый из элементов nodeValue, найденный в DOMNodeList, возвращенный этим запросом XPath.

 /* Use internal libxml errors -- turn on in production, off for debugging */ libxml_use_internal_errors(true); /* Createa a new DomDocument object */ $dom = new DomDocument; /* Load the HTML */ $dom->loadHTMLFile("https://forums.eveonline.com"); /* Create a new XPath object */ $xpath = new DomXPath($dom); /* Query all <td> nodes containing specified class name */ $nodes = $xpath->query("//td[@class='topicViews']"); /* Set HTTP response header to plain text for debugging output */ header("Content-type: text/plain"); /* Traverse the DOMNodeList object to output each DomNode's nodeValue */ foreach ($nodes as $i => $node) { echo "Node($i): ", $node->nodeValue, "\n"; } 

Двойной '/' сделает поиск по xpath. Поэтому, если вы будете использовать xpath '// table', вы получите все таблицы. Вы также можете использовать это глубже в своей структуре xpath, например, «html / body / div / div / form // table», чтобы получить все таблицы под xpath «html / body / div / div / form».

Таким образом, вы можете сделать свой код немного более устойчивым к изменениям в источнике html.

Я предлагаю немного узнать о xpath, если вы хотите его использовать. Скопировать пасту только добирается до вас.

Простое объяснение синтаксиса можно найти по адресу http://www.w3schools.com/xpath/xpath_syntax.asp