你好我有一个从网站上获取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>
我需要输入的值作为我的数据库的文本!
答案 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标签的值(如果有)。