首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从刮擦中移除

从刮擦中移除
EN

Stack Overflow用户
提问于 2011-06-01 16:47:58
回答 2查看 693关注 0票数 0

大家好,我已经成功地创建了一个从唱片行业网站获得前40名的网站抓取器,但是我正在抓取的表中的某一列有时可能不在那里。基本上,我需要的是一种从我的抓取中删除任何实例的方法:

代码语言:javascript
运行
复制
<td><img src="/images/bullet_red.gif" width="8" height="8" title="Red Dot" /></td>

这是到目前为止我从一个教程中得到的东西。

代码语言:javascript
运行
复制
$url = "http://www.ariacharts.com.au/pages/charts_display_singles.asp?chart=1U50";
$raw = file_get_contents($url);
$newlines = array("\t","\n","\r","\x20\x20","\0","\x0B");

$content = str_replace($newlines, "", html_entity_decode($raw));

$start = strpos($content,'<table class="chartTable"');
$end = strpos($content,'</table>',$start) + 8;

$table = substr($content,$start,$end-$start);

preg_match_all("|<tr(.*)</tr>|U",$table,$rows);

foreach ($rows[0] as $row){

if ((strpos($row,'<th')===false)){

    preg_match_all("|<td(.*)</td>|U",$row,$cells);

    $number = strip_tags($cells[0][1]);

    $name = strip_tags($cells[0][5]);

    $artist = strip_tags($cells[0][6]);

    $name = strtolower($name);
    $name = ucwords($name);

    echo "{$artist} - {$name} - Number {$number} <br>\n";

}

}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-01 18:24:16

尝试使用PHP Simple HTML DOM Parser代替复杂的regex http://simplehtmldom.sourceforge.net/

代码语言:javascript
运行
复制
require_once 'simple_html_dom.php';

$html = file_get_html('http://www.ariacharts.com.au/pages/charts_display_singles.asp?chart=1U50');
$table = $html->find('table.chartTable');

foreach ($table[0]->find('tr') as $row) {
    $columns = $row->find('td');
    if (sizeof($columns) < 7) continue;

    $number = $columns[1]->plaintext;
    $name = ucwords($columns[6]->plaintext);
    $artist = $columns[7]->plaintext;

    echo "$artist - $name - Number $number <br />\n";
}
票数 3
EN

Stack Overflow用户

发布于 2013-08-24 20:14:57

对于您想要的快速而肮脏的方法,请在声明"start“变量之前放置以下代码:

代码语言:javascript
运行
复制
$content = str_replace('<td><img src="/images/bullet_red.gif" width="8" height="8" title="Red Dot" /></td>', '', $content);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6198510

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档