Nano Hash - криптовалюты, майнинг, программирование

Как разобрать содержимое веб-сайта, полученное с веб-сайта с помощью curl

Я пытаюсь прочитать содержимое веб-сайта, используя cURL, чтобы сравнить некоторые данные. Мне удалось получить содержимое веб-страницы с помощью cURL, но когда я хочу извлечь некоторые данные из содержимого, это не работает. Я анализирую содержимое с помощью DOMDocument, но кажется, что такие символы, как & и € и т. д., не преобразуются должным образом, поэтому происходит сбой. вот почему я поставил с ним htmlentities, но это тоже не работает.

Это одна из ошибок, которые я получаю: Предупреждение: DOMDocument::loadHTML() [domdocument.loadhtml]: htmlParseEntityRef: ожидается ';' в Entity, строка: 37 в URL в строке 40

Может ли кто-нибудь предложить мне, что я должен делать по-другому?

Вот как я получаю содержимое веб-сайта: function get_web_page($url) { $user_agent='Mozilla/5.0 (Windows NT 6.1; rv:8.0) Gecko/20100101 Firefox/8.0';

$options = array(
    CURLOPT_CUSTOMREQUEST  =>"GET",        //set request type post or get
    CURLOPT_POST           =>false,        //set to GET
    CURLOPT_USERAGENT      => $user_agent, //set user agent
    CURLOPT_COOKIEFILE     =>"cookie.txt", //set cookie file
    CURLOPT_COOKIEJAR      =>"cookie.txt", //set cookie jar
    CURLOPT_RETURNTRANSFER => true,     // return web page
    CURLOPT_HEADER         => false,    // don't return headers
    CURLOPT_FOLLOWLOCATION => false,     // follow redirects
    CURLOPT_ENCODING       => "",       // handle all encodings
    CURLOPT_AUTOREFERER    => true,     // set referer on redirect
    CURLOPT_CONNECTTIMEOUT => 120,      // timeout on connect
    CURLOPT_TIMEOUT        => 120,      // timeout on response
    CURLOPT_MAXREDIRS      => 10,       // stop after 10 redirects
);

$ch      = curl_init( $url );
curl_setopt_array( $ch, $options );
$content = curl_exec( $ch );
$err     = curl_errno( $ch );
$errmsg  = curl_error( $ch );
$header  = curl_getinfo( $ch );
curl_close( $ch );

$header['errno']   = $err;
$header['errmsg']  = $errmsg;
$header['content'] = $content;
return $header;

}

$html = get_web_page("URL сайта");

И вот как я решил разобрать его: $dom = new DOMDocument; $dom->loadHTML(mb_convert_encoding($html["content"], 'HTML-ENTITIES', 'UTF-8'));

foreach($dom->getElementsByTagName('div') as $div){
    echo $div->nodeValue."<br>";
}

Но на самом деле я ищу значение из определенного div с классом, только это значение, знаете ли вы, как я могу его получить?


  • Не могли бы вы отредактировать свой пост, чтобы включить код, который вы используете для выполнения синтаксического анализа? Вышеупомянутая ошибка звучит для меня так, как будто документ HTML искажен; убедитесь, что объект в указанном месте действительно имеет точку с запятой, завершающую его. Библиотеке сложно разобрать документ, если он неправильно сформирован. 09.07.2015
  • @DanielWaghorn Я добавил код 09.07.2015

Ответы:


1

Я использую SimpleHTMLDom, это довольно просто и хорошо задокументировано.

Вы даже можете найти кучу вопросов здесь, в StackOverflow.

09.07.2015
  • Ваш ответ здесь не отвечает на заданный вопрос. Хотя он предлагает альтернативное решение, оно не поможет будущим читателям. Этот ответ должен быть комментарием. 15.12.2018
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..