получить текст из определенного тега <tr> - PullRequest
0 голосов
/ 07 января 2011

Есть ли способ динамически получить текст из определенного тега <tr> на странице?

например. У меня есть страница с <tr> со значением "a1". Я хотел бы получить только текст из этого тега <tr> и отобразить его на странице. это возможно?

вот HTML:

<html><tr  id='ieconn2' >
  <td><table width='100%'><tr><td valign='top'><table width='100%'><tr><td><script type="text/javascript"><!--
google_ad_client = "pub-4503439170693445";
/* 300x250, created 7/21/10 */
google_ad_slot = "7608120147";
google_ad_width = 300;
google_ad_height = 250;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script><br>When Marshall and Lily fear they will never get pregnant, they see a specialist who can hopefully help move the process along. Meanwhile, Robin starts her new job.<br><br><b>Source: </b>CBS

<br>&nbsp;</td></tr><tr><td><b>There are no foreign summaries for this episode:</b> <a href='/edit/shows/3918/episode_foreign_summary/?eid=1065002553&season=6'>Contribute</a></td></tr><tr><td><b>English Recap Available: </b> <a href='/How_I_Met_Your_Mother/episodes/1065002553?show_recap=1'>View Here</a></td></tr></table></td><td valign='top' width='250'><div align='left'>
<img  alt='How I Met Your Mother season 6 episode 13' src="http://images.tvrage.com/screencaps/20/3918/1065002553.jpg" width="248"  border='0' >
</div><div align='center'><a href='/How_I_Met_Your_Mother/episodes/1065002553?gallery=1'>6 gallery images</a></div></td></tr></table></td></tr><tr>
  <td background='/_layout_v3/buttons/title.jpg' height='39' width='631' align='center'>
<table width='100%' cellpadding='0' cellspacing='0' style='margin: 1px 1px 1px 1px;'>
<tr>
<td align='left'  style='cursor: pointer;' onclick="SwitchHeader('ieconn3','iehide3','26')"  width='90'>&nbsp;<span style='font-size: 15px;   font-weight: bold; color: black; padding-left: 8px;' id='iehide3'><img src='/_layout_v3/misc/minus.gif' width='26'></span></td>
<td align='center'  style='cursor: pointer;' onclick="SwitchHeader('ieconn3','iehide3','26')" ><h5 class='nospace'>Sponsored Links</h5><a name=''></a></td>

<td align='left' width='90' >&nbsp;</td></tr></table></td>
</tr></html>

Все, что я хочу получить, это текст: «Когда Маршалл и Лили боятся, что никогда не забеременеют, они видят специалиста, который, мы надеемся, поможет продвинуть процесс. Тем временем Робин начинает свою новую работу».

Ответы [ 3 ]

3 голосов
/ 07 января 2011

Как насчет этого?

$dom = new DomDocument;
libxml_use_internal_errors(true);
$dom->loadHTMLFile(...); 
libxml_clear_errors();

$xpath = new DomXpath($dom);
$nodes = $xpath->query('/html/body/tr/td/table/tr/td/table/tr/td');
foreach ($nodes as $node)
{
  echo $node->nodeValue, "\n";
}
2 голосов
/ 07 января 2011

Если я предполагаю, что вы хотите сделать правильно, вы можете сделать следующее:

$url = “http://url.tld”;
$str = file_get_contents($url);

и оттуда просто используйте строковые функции php, чтобы вырезать ненужные вам части (вероятно, сгенерируйте регулярное выражение для ускорения процесса).

Если описанный выше метод не работает, вы можете попробовать более сложную функцию, такую ​​как:

function get_url_contents($url){
    $crl = curl_init();
    $timeout = 5;
    curl_setopt ($crl, CURLOPT_URL,$url);
    curl_setopt ($crl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt ($crl, CURLOPT_CONNECTTIMEOUT, $timeout);
    $ret = curl_exec($crl);
    curl_close($crl);
    return $ret;
}
1 голос
/ 07 января 2011

Использовать queryPath http://querypath.org/. Это jQuery для php.

...