java - 如何解决JSOUP爬虫中目标标签删除问题

标签 java jquery jsoup

我想问一个问题:如何删除所选标签

网站是 www.yellowbook.com

我的代码是

for (int i = 1; i < 21; i++) {
    String shopNameTemp = "";
    String shopAddressTempA = "";
    String shopAddressTempB = "";
    String shopAddressTempC = "";
    String shopAddressTempD = "";
    String shopTelTemp = "";
    String divName = "divInAreaSummary_" + String.valueOf(i);

    Elements node = doc.select("li[id=" + divName);

    shopNameTemp = node.first().select("a[class=fn]").toString();
    shopAddressTempA = node.first().select("span[class=street-address]").toString();
    shopAddressTempB = node.first().select("span[class=locality]").toString();
    shopAddressTempC = node.first().select("span[class=region]").toString();
    shopAddressTempD = node.first().select("span[class=postal-code]").toString();
    shopTelTemp = node.first().select("div[class=call phone-number]").toString();
    System.out.println("Name  " + shopNameTemp);
    System.out.println("Address" + shopAddressTempA + shopAddressTempB + shopAddressTempC + shopAddressTempD);
    System.out.println("Tel   " + shopTelTemp);

}

我的输出是:

Please input your category and location and Province...

auto repair,Seattle,WA


Name <#a class="fn" data-classid="690" href="/profile/76-station-mlk_1861635669.html" onclick="OmAdViewLeadClick('adsource: companyname', false, '8330', ';7;;;;evar33=inArea|evar34=16', 'auto repairing');" title="View more information about 76 Station MLK">76 Station MLK<#/a>

Address   <#span itemprop="streetAddress" class="street-address">15 Avenue Nw<#/span><#span itemprop="addressLocality" class="locality">Seattle<#/span><#span itemprop="addressRegion" class="region">WA<#/span><#span itemprop="postalCode" class="postal-code">98102-9810<#/span>
Tel   <#div class="call phone-number">
(206) 826-3263
<#/div>

我怎样才能得到

Name 76 Station MLK

Address 15 Avenue Nw Seattle WA 98102-9810

Tel (206) 826-3263

PS。我使用remove,内容会被删除,但标签仍然存在

最佳答案

不要使用 toString(),而是使用 Element 的 text() 方法仅提取文本而不提取标签。

例如:

shopNameTemp = node.first().select("a[class=fn]").text();
shopAddressTempA = node.first().select("span[class=street-address]").text();
shopAddressTempB = node.first().select("span[class=locality]").text();
shopAddressTempC = node.first().select("span[class=region]").text();
shopAddressTempD = node.first().select("span[class=postal-code]").text();
shopTelTemp = node.first().select("div[class=call phone-number]").text();

当您将其打印到控制台时,这应该会产生正确的文本。请注意,您可能需要在 shopAddressTempAshopAddressTempB 等之间手动添加一些空格(例如 + ""+),否则所有这些都会打印没有空格。

我对此进行了测试,我的输出是:

Name  76 Station MLK
Address 2801 Martin Luther King Jr Way S Seattle WA 98144-6003
Tel   (206) 722-4995

关于java - 如何解决JSOUP爬虫中目标标签删除问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20836443/

相关文章:

java - 为什么用Jsoup解析后内容不一样

java - 在JAVA中使用JSOUP解析没有ID或类名的表详细信息

java - 关于创建 JAXB 上下文的 JAXBException

java - 当我使用 @JsonProperty 通过 Spring 数据从 MongoDB 检索对象时出现空字段

javascript - 如何找到容器内的所有事件并委托(delegate)它们

javascript - 从 underscore.js 中的数组返回一系列值

javascript - 按名称获取对象作为不带 eval 的字符串

java - 如何检查输入元素是否在表单元素内

java - 使用 Hibernate 验证日期

java - getPassword() 在 spring security 3.1 中使用 ldap 返回 null,尽管我设置了删除凭证 ="false"