#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 — спасибо всем