большое спасибо за запуск этой доски. Я люблю этот сайт. Это помогло мне так часто! Вы молодцы. Сегодня я работаю над небольшим php-парсером!
Мне нужно получить все данные с этого сайта. См. Цель: www.aktive-buergerschaft.de/buergerstiftungen/unsere_leistungen/buergerstiftungsfinder.
Я пытаюсь очистить данные с веб-страницы, но мне нужно получить все данные по этой ссылке.
Я хочу сохранить данные в Mysql-db для лучшего поиска!
см. Пример:
Мне нужно получить все данные с этого сайта.
см. Цель: см. Эту ссылку здесь: Фонды в Германии - нажмите здесь
Я пытаюсь очистить данные с веб-страницы, но мне нужно получить все данные по этой ссылке.
см. Пример:
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
Мне нужны данные, которые находятся "за" ссылкой - есть ли способ сделать это
с простым и понятным парсером, который может быть понят и написан новичком !?
ну, я мог бы сделать это с XPahts - в PHP или Perl - (с механизацией)
я начал с php-подхода: но, если я запускаю код (см. Ниже), я получаю следующие результаты
PHP Fatal error: Call to undefined function file_get_html() in /home/martin/perl/foundations/arbie_finder_de.php on line 5
martin@suse-linux:~/perl/foundations> cd foundations
вызвано этим кодом здесь
<?php
// Create DOM from URL or file
$html = file_get_html('www.aktive-buergerschaft.de/buergerstiftungen/unsere_leistungen/buergerstiftungsfinder');
// split it via body, so you only get to the contents inside body tag
$split = split('<body>', $html);
// it is usually in the top of the array but just check to be sure
$body = $split[1];
// split again with, say,<p class="divider">A</p>
$split = split('<p class="divider">A</p>', $body);
// now this should contain just the data table you want to process
$data = $split[1];
// Find all links from original html
foreach($html->find('a') as $element) {
$link = $element->href;
// check if this link is in our data table
if(substr_count($data, $link) > 0) {
// link is in our data table, follow the link
$html = file_get_html($link);
// do what you have to do
}
}
?>
хорошо, некоторые размышления о моем подходе:
стандартной практикой удаления страниц будет:
- чтение страницы в строку (file_get_html или что-либо еще, что используется сейчас)
- разбить строку, это зависит от структуры страницы. Сначала разделите его, чтобы один элемент массива содержал тело, и так далее, пока мы не получим нашу цель. Ну, я предполагаю, что окончательный сплит будет на
A
, поскольку он имеет ссылку, которую мы описали выше:
- Если мы хотим перейти по ссылке, просто повторите тот же процесс, но используя ссылку.
- В качестве альтернативы, мы можем искать фрагмент PHP, который получает все ссылки на странице. Это лучше, если мы уже сделали 1 и 2, и теперь у нас есть только строка внутри тега. Намного проще.
Ну, мой вопрос: что может вызвать эти ошибки - у меня нет клея ... было бы здорово, если у вас есть идея с нетерпением ждем
Обновление : Хм - я мог бы попробовать это:
Признавая, что это не становится проще, чем использование simple_html_dom.
$records = array();
foreach($html->find('#content dl') as $contact) {
$record = array();
$record["name"] = $contact->find("dt", 0)->plaintext;
foreach($contact->find("dd") as $field) {
/* parse each $field->plaintext in order to obtain $fieldname */
$record[$fieldname] = $field->plaintext;
}
$records[] = $record;
}
Ну, я пытаюсь работать отсюда. Возможно, я использую последнюю версию PHP, чтобы получить jQuery-подобный синтаксис .... хммм ...
любые идеи