在标签的结束和开始之间提取文本

时间:2015-08-19 16:00:46

标签: javascript jquery cheerio

我想提取电话号码:

我正在使用NodeJS / ExpressJS / Request / Cheerio。

此代码将成为网络抓取工具的一部分。



<div class="info">
  <h3> Home </h3>
  <p>
    <strong> Tel: </strong>
    01345 000000
    <strong> Fax: </strong>
    01345 000000
  </p>
  <p>
  </p>
&#13;
&#13;
&#13;

我目前只能检索文字&#34;电话:&#34;。

以下是我取得的进展:

&#13;
&#13;
$('div.info p').filter(function() {
  $(this).find('strong').filter(function() {
    var phonenumber = $(this).text();
    console.log(phonenumber);
  });
});
&#13;
&#13;
&#13;

4 个答案:

答案 0 :(得分:2)

我在第一个<p>之间使用了文本,然后在其上应用了子字符串,使用getPosition(str, m, i)函数和'F,的第一个出现的子字符串'性格。然后修剪任何结果。

$('div.info p:first').filter(function() {
  $(this).filter(function() {
    var phonenumber = $(this).text();
    //console.log(phonenumber);
    alert(phonenumber.substring(getPosition(phonenumber, ':', 1)+1, phonenumber.indexOf('F')).trim());
  });
});

function getPosition(str, m, i) {
   return str.split(m, i).join(m).length;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script>
<div class="info">
  <h3> Home </h3>
  <p>
    <strong> Tel: </strong>
    01345 000000
    <strong> Fax: </strong>
    01345 000000
  </p>
  <p>
  </p>

答案 1 :(得分:1)

您的电话号码未包含在<strong>标记中。从HTML中提取它们的一种方法是使用某种正则表达式,例如:

var regexp = /"([\d ]+)"/g;
var text = $('div.info p').text();
var phone_nr = regexp.exec(text);
while (phone_nr != null) {
    console.log(phone_nr[1]);
    phone_nr = regexp.exec(text);
}

jsfiddle:https://jsfiddle.net/g1L4ux5g/

答案 2 :(得分:1)

您正在获取strong元素的文本内容。您可以使用nextSibling属性来选择下一个兄弟节点。

$('div.info p strong').each(function() {
    var phonenumber = this.nextSibling.nodeValue.trim();
    console.log(phonenumber);
  });
});

应该注意的是,当strong元素没有下一个兄弟时,上面的代码会抛出错误。您可以将节点传递给jQuery / Cheerio,它可以处理幕后的边缘情况:

var phonenumber = $.trim($(this.nextSibling).text());

http://jsfiddle.net/vs3psmnq/

答案 3 :(得分:1)

这应该有效:

&#13;
&#13;
var temp = $('p');
temp = temp.text().trim();
temp = temp.substring(4, 22);

$('.info').html(temp);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<div class="info">
  <h3> Home </h3>
  <p>
    <strong> Tel: </strong>
    01346 000000
    <strong> Fax: </strong>
    01345 000000
  </p>
  <p>
</p>
&#13;
&#13;
&#13;