HTML DOM Parser - 获取纯文本

时间:2017-01-03 13:39:05

标签: php html dom

你好我有一个从网站上获取html数据的脚本......

>>> import timeit
>>> setup = '''
... import re
... '''   

#no capture group 
>>> print(timeit.timeit("re.search(r'hello|bye|ola|cheers','some say hello,some say bye, or ola or cheers!')", setup=setup))
0.922958850861

#with capture group
>>> print(timeit.timeit("re.search(r'(hello)|(bye)|(ola)|(cheers)','some say hello,some say bye, or ola or cheers!')", setup=setup))
1.44321084023

#no capture group
>>> print(timeit.timeit("re.search(r'hello|bye|ola|cheers','some say hello,some say bye, or ola or cheers!')", setup=setup))
0.913202047348

# capture group
>>> print(timeit.timeit("re.search(r'(hello)|(bye)|(ola)|(cheers)','some say hello,some say bye, or ola or cheers!')", setup=setup))
1.41544604301

PHP

//website is built like this:

<table class="table table-hover">
<tr>
    <td><b>Cover</b></td>
    <td><b>Platz</b></td>
    <td><b>Titel</b></td>
    <td><b>Videolink</b></td>
</tr>
<tr>
    <td><a href="http://www.youtube.com" target="_blank"><img src="youtube.jpg" /></a></td>
    <td>1</td>
    <td><a href="http://www.youtube.com" target="_blank">name</a></td>
    <td><input type="text" onclick="this.select()" id="1" size="45" name="1" value="http://www.youtube.com" /></td>
</tr><tr>
<td><a href="http://www.youtube.com2" target="_blank"><img src="youtube.jpg2" /></a></td>
    <td>1</td>
    <td><a href="http://www.youtube.com2" target="_blank">name2</a></td>
    <td><input type="text" onclick="this.select()" id="2" size="45" name="2" value="http://www.youtube.com2" /></td>
 </tr></table>

现在数据存储在一个变量中! 但当我回应它时,它是一个链接......

<?php

include 'core/functions/dom.php'; 
include 'core/init.php'; 

$url = "http://MYWEBSITE";
$html = file_get_html($url);

$theData = array();

foreach($html->find('table tr') as $row) {

$rowData = array();
foreach($row->find('td') as $cell) {

    $rowData[] = $cell->innertext;
}

$theData[] = $rowData;
}
$list=($theData[2]);
$name=($list[3]);
echo $name;

?>

(您可以在查看源代码时看到此内容)

我只需要将“name2”作为文本,我可以把它放在我的数据库中!

另一个问题是它回显了一个文本字段。 我还需要文字......

<a href="http://www.youtube.com2" target="_blank">name2</a>

我需要输入的值作为我的数据库的文本!

1 个答案:

答案 0 :(得分:1)

您可以使用名为DOMDocument的内置类来实现此目的。实例化对象后,可以调用getElementsByTagName('td')方法,该方法将从<td>标记中提取值数据(非标记数据)。我添加了一个if条件来忽略空格,因为某些<td>标签没有值。

代码:

<?php

$dom = new DOMDocument;
$dom->loadHTML($html);

$result = $dom->getElementsByTagName('a');

foreach ($result as $v) {

    echo $v->getAttribute('href') . ' ' . $v->nodeValue;
    echo '<br>';

}

<强>输出:

http://www.youtube.com
http://www.youtube.com name
http://www.youtube.com2
http://www.youtube.com2 name2

查看: http://php.net/manual/en/domdocument.getelementsbytagname.php

编辑:

我已经更新了代码,因此输出了URL / Anchors&amp; A标签的值(如果有)。