0

誰かがDOMDocument()を使用して以下のフォームからコンテンツを抽出する方法を教えてくれませんか。。../index.html、descriptions/page001などのすべてのリンクを抽出し、抽出したデータをmysqlデータベースに保存することはできましたが、会計、成人継続教育などのコンテンツを取得して情報をデータベースに保存する方法に固執しています。

<HTML>
<HEAD></HEAD>
<BODY>
<FORM ACTION="#">
<SELECT ONCHANGE="MM_jumpMenu('parent',this,0)" NAME="menu1"> 
<OPTION VALUE="../index.html" SELECTED="SELECTED"></OPTION> 
<OPTION VALUE="descriptions/page001.html">Accounting</OPTION> 
<OPTION VALUE="descriptions/page122.html">Adult Continuing Education</OPTION>
<OPTION VALUE="descriptions/page115.html">Energy Engineering</OPTION> 
</SELECT>
</P></FORM> 
</BODY>
</HTML>


MY CURL SCRIPT
// parse the html into a DOMDocument
$dom = new DOMDocument();
@$dom->loadHTML($html);

// grab all on the page
$xpath = new DOMXPath($dom);


// GET AND LOOP THROUGH LINKS
$values = $xpath->evaluate("/html/body//option");
for ($cnt = 0; $cnt < $values->length; $cnt++) {
$value = $values->item($cnt);
$url = $value->getAttribute('value');
    //store extracted links and links source into the database function
storeLink($url,$target_url);
echo "Link stored: $url";
}

どんな助けでもいただければ幸いです。ありがとう。

4

2 に答える 2

0

解決策は次のとおりです。

$html = '<HTML>
  <HEAD></HEAD>
  <BODY>
  <FORM ACTION="#">
  <SELECT ONCHANGE="MM_jumpMenu(\'parent\',this,0)" NAME="menu1"> 
  <OPTION VALUE="../index.html" SELECTED="SELECTED"></OPTION> 
  <OPTION VALUE="descriptions/page001.html">Accounting</OPTION> 
  <OPTION VALUE="descriptions/page122.html">Adult Continuing Education</OPTION>
  <OPTION VALUE="descriptions/page115.html">Energy Engineering</OPTION> 
  </SELECT>
  </P></FORM> 
  </BODY>
  </HTML>';

$document = new DOMDocument();
$document->loadHTML($html);
$options = $document->getElementsByTagName('option');

foreach ($options as $option) {
  echo $option->getAttribute('value');
  echo "\n";
}
于 2012-06-12T18:42:55.937 に答える
0

タグ間の値(例:アカウンティング)の場合:

<OPTION VALUE="descriptions/page001.html">Accounting</OPTION>

あなたが必要です->nodeValue

...
$options = $document->getElementsByTagName('option');

foreach ($options as $option) {
  storeLink($option->getAttribute('value'), $option->nodeValue);
}
于 2012-06-12T18:56:02.480 に答える