Как очистить определенные данные из scrape с помощью простого синтаксического анализатора html dom

#php #regex #parsing #dom

#php #HTML #синтаксический анализ #переменные

Вопрос:

Я пытаюсь очистить данные с веб-страницы, но мне нужно получить все данные по этой ссылке.

 include 'simple_html_dom.php';
$html1 = file_get_html('http://www.aktive-buergerschaft.de/buergerstiftungen/unsere_leistungen/buergerstiftungsfinder');

$info1 = $html1->find('b[class=[what to enter herer ]',0);
  

Мне нужно получить все данные с этого сайта.

 Bürgerstiftung Lebensraum Aachen
    rechtsfähige Stiftung des bürgerlichen Rechts
    Ansprechpartner: Hubert Schramm
    Alexanderstr. 69/ 71
    52062 Aachen
    Telefon: 0241 - 4500130
    Telefax: 0241 - 4500131
    Email: info@buergerstiftung-aachen.de
    www.buergerstiftung-aachen.de
    >> Weitere Details zu dieser Stiftung

Bürgerstiftung Achim
    rechtsfähige Stiftung des bürgerlichen Rechts
    Ansprechpartner: Helga Kühn
    Rotkehlchenstr. 72
    28832 Achim
    Telefon: 04202-84981
    Telefax: 04202-955210
    Email: info@buergerstiftung-achim.de
    www.buergerstiftung-achim.de
    >> Weitere Details zu dieser Stiftung 
  

Мне нужно иметь данные, которые находятся «за» ссылкой — есть ли какой-либо способ сделать это с помощью простого и понятного синтаксического анализатора — такого, который может быть понят и написан новичком!?

Комментарии:

1. хотите иметь — также!! — данные, которые находятся за ссылкой >> Подробнее см… Обратите внимание, что это ссылка, которая находится в каждой адресной записи.

2. Как насчет того, чтобы очистить страницу результатов и собрать URL, связанный со ссылкой «weitere Details», а затем для каждой ссылки открывать страницу и очищать ее, пока не будут готовы все ссылки.. это то, что я делаю.. но в .net.

3. привет, ппумкин — большое спасибо — это очень интересная идея! Я хотел бы узнать больше о вашем подходе. Можете ли вы дать еще несколько советов. Это было бы здорово!

4. Сайт, о котором идет речь, явно защищен авторским правом, поэтому респонденты могут пожелать рассмотреть этические вопросы, связанные с оказанием помощи OP в краже интеллектуальной собственности.

Ответ №1:

Предоставленные вами ссылки недоступны, я предложу вам использовать собственное расширение PHP «DOM» вместо «простого синтаксического анализатора html», это будет намного быстрее и проще 😉 Я просмотрел страницу с помощью googlecache, вы можете использовать что-то вроде:-

 $doc = new DOMDocument;
@$doc->loadHTMLFile('...URL....'); // Using the @ operator to hide parse errors
$contents = $doc->getElementById('content')->nodeValue; // Text contents of #content
  

Комментарии:

1. привет, Салман, к сожалению, страницы в данный момент недоступны. Я надеюсь, что они скоро появятся в Сети. В любом случае — большое, большое спасибо за предоставленную информацию. я протестирую это, как только сайт снова заработает! приветствия

2. Большое, большое спасибо за новые подсказки. Рад вас слышать. Как только сайт заработает, я запущу программу. Снова mille grazie!! Приветствия ноль

3. Здравствуйте, дорогой SalmanPK — вы очень, очень поддерживаете. Большое, большое спасибо за вашу огромную помощь на данный момент! Сайт снова запущен!! Теперь мы можем поближе взглянуть на сайт… Я с нетерпением жду вашего звонка.. С наилучшими пожеланиями zero

Ответ №2:

Кажется, это написано в документации:

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

Ответ №3:

Насколько я могу судить, вам нужно перебрать теги <dl> в #content, затем dt и dd.

 foreach ($html->find('#content dl') as $item) {
     $info = $item->find('dd');
     foreach ($info as $info_item) {..}
}
  

Использование библиотеки simple_html_dom

Ответ №4:

XPath упрощает очистку до смешного и позволяет некоторым изменениям в HTML-документе не влиять на вас. Например, чтобы извлечь имена, вы бы использовали запрос, который выглядит как:

 //div[id='content']/d1/dt
  

Простой поиск в Google предоставит вам множество руководств

Ответ №5:

@zero: есть хороший сайт, чтобы попробовать удалить сайт, используя как php, так и python…по крайней мере, для меня довольно полезный сайт: — http://scraperwiki.com

Ответ №6:

Я бы использовал WWW: Mechanize

http://search.cpan.org/dist/WWW-Mechanize/lib/WWW/Mechanize.pm

Комментарии:

1. Еще один -1 за ответ на Perl в вопросе PHP. То, что вы можете что-то сделать, не означает, что вы должны это делать.

2. привет, Роб, привет, Мигар — спасибо за ваши комментарии — ну, я бы попробовал это с Mech — но это немного перебор! Мне понадобятся некоторые подсказки и помощь. Eamorr — спасибо всем