0

我使用以下代码抓取页面:

<br/>

<td class="PropertyBody">
<b>Category:</b>
 Miscellanea: Soft Skill
<br>
<b>Owner:</b>
<a href="mailto:">blabla</a>
<br>
<b>Location:</b>
 bla bla
<br>
<b>Duration:</b>
 6:00
<br>
<b>Max attendees:</b>
 15
<br>
<b>Start at:</b>
 7/19/2012 10:00:00 AM
<br>
<b>Your status:</b>
<br>
</td>

例如,如何'7/19/2012 10:00:00 AM'使用 Symfony Crawler 从这段代码中提取? $crawler->filter('.PropertyBody > b')->eq(5)->text();就拿'Start at:'

谢谢,我已经做到了:

$bigPiece = $crawler->filter('.PropertyBody')->text();
        //getting CATEGORY         
         $pos = strpos($bigPiece, ':')+1;
         $pos2 = strpos($bigPiece, 'Owner:');
         $category = trim(substr($bigPiece, $pos, $pos2-$pos));
         $this->category = $category;
        //getting OWNER
         $pos = strpos($bigPiece, 'Owner:')+6;
         $pos2 = strpos($bigPiece, 'Location:');
         $owner = trim(substr($bigPiece, $pos, $pos2-$pos));
         $training->setOwner($owner);
        //getting LOCATION
         $pos = strpos($bigPiece, 'Location:')+9;
         $pos2 = strpos($bigPiece, 'Duration:');
         $location = trim(substr($bigPiece, $pos, $pos2-$pos));
         $training->setLocation($location);
        //getting DURATION
         $pos = strpos($bigPiece, 'Duration:')+9;
         $pos2 = strpos($bigPiece, 'Max attendees:');
         $duration = trim(substr($bigPiece, $pos, $pos2-$pos));
         $training->setDuration($duration);
        //getting MAXATTENDEES
         $pos = strpos($bigPiece, 'Max attendees:')+14;
         $pos2 = strpos($bigPiece, 'Start at:');
         $maxattendees = trim(substr($bigPiece, $pos, $pos2-$pos));
         $training->setMaxattendies($maxattendees);
        //getting START AT
         $pos = strpos($bigPiece, 'Start at:')+9;
         $pos2 = strpos($bigPiece, 'Your status:');
         $start = trim(substr($bigPiece, $pos, $pos2-$pos));
         $training->setStarts($start);
4

2 回答 2

1

添加span标签。执行以下操作:

<b>Start at:</b>
<span class="wantthis">7/19/2012 10:00:00 AM</span>

然后选择它:

$crawler->filter('.wantthis')->text();
于 2012-08-07T10:44:24.693 回答
1

如果您需要测试这种特殊情况并且您没有添加标签的能力,那么您可能应该考虑使用assertContains()PHPUnit。

$text = $crawler->filter('.PropertyBody > b')->text();
$this->assertContains('7/19/2012 10:00:00 AM', $text);
于 2012-08-07T10:59:51.687 回答