我不明白为什么我的if条件不起作用。
从这个html页面:
http://www.olympic.org/olympic-results/london-2012/archery
我正在尝试提取奥运版,试用名等信息。 我用这段代码提取男人的事件:
$html=file_get_html('http://www.olympic.org/olympic-results/london-2012/archery');
foreach($html->find('div') as $element) {
if ($element->id == 'gamesSelect')
{
$Game = $element->find('option[selected]', 0)->plaintext . '<br>';
}
if ($element->id == 'sportSelect')
{
$Sport = $element->find('option[selected]', 0)->plaintext . '<br>';
}
if ($element->class == 'man')
{
foreach($html->find('span.trial_name') as $e_trial)
{
$Event = $e_trial->innertext . '<br>';
}
}
}
在最后一个if条件中,我放了一个foreach循环,以便只提取这个文本:
男子个人(FITA奥运会--70米)男子团体(FITA Olympic 回合 - 70米)
但实际上我得到了所有四个试验活动:
男子个人(FITA奥运会--70米)男子团体(FITA Olympic 回合 - 70米)女子个人(FITA奥运会比赛 - 70米)女子比赛 团队(FITA奥运会轮次 - 70米)
为什么会这样?我不明白,因为只有男人才有条件。我该如何解决这个问题?
答案 0 :(得分:0)
试试这个:
$html=str_get_html(file_get_html('http://www.olympic.org/olympic-results/london-2012/archery'));
foreach($html->find('div') as $element) {
if ($element->id == 'gamesSelect')
{
$Game = $element->find('option[selected]', 0)->plaintext . '<br>';
}
if ($element->id == 'sportSelect')
{
$Sport = $element->find('option[selected]', 0)->plaintext . '<br>';
}
if ($element->class == 'man')
{
foreach($element->find('span.trial_name') as $e_trial)
{
$Event = $e_trial->innertext . '<br>';
}
}
答案 1 :(得分:0)
好的,解决之后我继续添加这段代码:
$ HTML = file_get_html( 'http://www.olympic.org/olympic-results/london-2012/archery');
foreach($ html-&gt; find('div')as $ element){
if ($element->id == 'gamesSelect')
{
$Game = $element->find('option[selected]', 0)->plaintext . '<br>';
}
if ($element->id == 'sportSelect')
{
$Sport = $element->find('option[selected]', 0)->plaintext . '<br>';
}
if ($element->class == 'man')
{
foreach($element->find('span.trial_name') as $e_trial)
{
$Event = $e_trial->innertext . '<br>';
if ($element->class == "medals gold")
{
foreach($element->find('td.name') as $e_name)
{
$Name = $e_name->innertext . '<br>';
echo $Name;
}
}
}
}
}
我不明白如何在最后的if条件下让它进入。如果($ element-&gt; class =='man'),它与其他不一样吗?