非常感谢您运行此主板。我喜欢这个网站。它经常帮助我!你是伟大的伙伴。我今天做的是在一个小的PHP解析器上工作!
我需要从该网站获取所有数据。查看目标:www.aktive-buergerschaft.de/buergerstiftungen/unsere_leistungen/buergerstiftungsfinder 我试图从网页上抓取数据,但我需要获取此链接中的所有数据。 我想将数据存储在Mysql-db中以便更好地检索!
看一个例子:
我需要从该网站获取所有数据。
查看目标:see this link here: Foundations in Germany - click here
我正在尝试从网页上抓取数据,但我需要获取此链接中的所有数据。
看一个例子:
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
}
}
?>
关于我的方法的一些想法:
报废网页的标准做法是:
,因为它有我们上面描述的链接:
嗯 - 我的问题是:这个错误会导致什么 - 我没有粘合剂......如果你有一个想法,那就太棒了
更新:嗯 - 我可以试试这个:
承认它没有比使用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的语法....嗯......
任何想法
答案 0 :(得分:1)
在您考虑抓取任何网站之前,我绝对想指出您需要考虑这样做的法律和道德影响。如果这不是您的网站或您未获得所有者的许可,您可能不应该抓。如果它不是供个人使用,你特别可能不应该刮。小心......
首先,在;
之后需要一个分号($data = $split[1]
),这将消除您的PHP语法错误。我对第一个错误感到有点困惑,指的是*
,因为你的代码中没有任何*。
在您的语法错误消失后,虽然看起来您将在正确的轨道上编写MySQL查询并插入您的发现。
您也可以考虑以下内容:
foreach($html->find('a') as $element)
echo $element->href;
我希望有所帮助。