我使用simplehtmldom_1_5从网站上抓取了html数据,在抓取后我想在<p>
标记中插入每个<p>
标记的不同ID的文本,如下所述:
Suppose scrapped data:
<div class="maincontainer">
<div class="first">
first text
</div>
<div class="second">
second text
</div>
<div class="third">
third text
</div>
<div class="fourth">
fourth text
</div>
fifth string
</div>
And I want result like this below:
<div class="maincontainer">
<div class="first">
<p id="1">first text </p>
</div>
<div class="second">
<p id="2">second text </p>
</div>
<div class="third">
<p id="3">third text </p>
</div>
<div class="fourth">
<p id="4">fourth text </p>
</div>
<p id="5"> fifth string </p>
</div>
伙计们,我想在抓刮过程中这样做。
答案 0 :(得分:1)
可能不是最有效的方法 工作jsFiddle
http://jsfiddle.net/Diabl0570/FhZZQ/1/
//jquery
$(function(){
var count = 1;
$("div.maincontainer div").each(function(){
var html = $(this).html();
$(this).html("<span id='"+count+"'>"+ html + "</span>");
count= count+1;
});
});
答案 1 :(得分:0)
您可以像这样使用jQuery:
$(document).ready(function () {
$('div').each(function (i) {
var $this = $(this);
if (!$this.find('div, span, div, img, ul, a').length) {
var elData = $this.html();
if ($.trim(elData) != '') {
var appendData = '<p id="' + (i + 1) + '">' + elData + '</p>';
$this.html(appendData);
}
}
});
});
@ JsFiddle
答案 2 :(得分:0)
使用perl,您可以尝试下面的代码。我将输入文件称为“xml.xml”。我想在PHP中有类似的东西,不是吗?
#!/usr/bin/perl
use strict;
use warnings;
open my $fh, "<xml.xml" or die;
my $i;
while (<$fh>) {
if (/\s*</||/^\s*$/) { print; next }
++$i;
s{^(\s*)(.*)$}{$1<p id="$i">$2</p>};
redo;
}
close $fh;