【发布时间】:2016-01-31 16:44:57
【问题描述】:
我需要从 http://www.hegnar.no/netfonds/aksjekurser/ 这个链接中抓取数据。实际上我想从这个链接的表中抓取数据。但是表格的代码是写在 div 标签内的。我使用了 php regex 和 file_get_content 我无法抓取它,你能帮我写脚本吗?
<?php
$html = file_get_contents("http://www.hegnar.no/netfonds/aksjekurser");
preg_match_all(
'<tr>
<td class="left"><a href=".*?">(.*?)<\/a><\/td>.*?
<td class="left">(.*?)<\/td>.*?
<td name=".*?">(.*?)<\/td>.*?
<td name=".*?">(.*?)<\/td>.*?
<td>(.*?)<\/td>.*?
<td class="up" name=".*?">(.*?)<\/td>.*?
<td class="up" name=".*?">(.*?)<\/td>.*?
<td>(.*?)<\/td>.*?
<td>(>*?)<\/td>.*?
<td>(.*?)<\/td>.*?
<td>(.*?)<\/td>.*?
<td name=".*?">(.*?)<\/td>
<td name=".*?">(.*?)<\/td><\/tr>/s',
$html,
$posts, // will contain the article data
PREG_SET_ORDER // formats data into an array of posts
);
foreach ($posts as $post) {
$selskap = $post[1];
$ticket = $post[2];
$siste = $post[3];
$kejop = $post[4];
$slag = $post[5];
$ending = $post[6];
$ending2 = $post[7];
$apring = $post[8];
$lav = $post[9];
$hoy = $post[10];
$forrige = $post[11];
$volume = $post[12];
$ratio = $post[13];
echo "$selskap</br>";
echo "$ticket</br>";
echo "$siste</br>";
echo "$kejop</br>";
echo "$slag</br>";
echo "$ending</br>";
echo "$ending2</br>";
echo "$apring</br>";
echo "$lav</br>";
echo "$hoy</br>";
echo "$forrige</br>";
echo "$volume</br>";
echo "$ratio</br>";
}
echo "<p>" . count($posts) . " posts found</p>";
【问题讨论】:
-
请通过在此处复制部分数据(而不是使用外部链接)来显示您尝试“抓取”的数据示例。请出示您提到的 PHP 代码。
-
在此链接的左侧菜单中,选择“kursliste”。它将显示目录。我想抓取整个数据表。 eg:第一列是“selskap”,这里需要刮掉所有的名字。同样整列表格
-
ABG Sundal Collier... 这是示例代码需要被刮掉,数据是“ABG Sundal Collier”。但是这个标签在 div 标签内 -
请使用正则表达式和
file_get_content()调用显示您的PHP 代码。 -
我在上面提交了我的代码
标签: web screen-scraping