首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java代码优化(Jsoup)

Java代码优化(Jsoup)
EN

Stack Overflow用户
提问于 2016-02-18 11:52:52
回答 2查看 189关注 0票数 1

是否有一种有效的方法来优化这段代码,因为它的大部分看起来是相同的,我刚开始学习jsoup,不知道如何才能真正做到这一点://

代码语言:javascript
复制
Document doc = Jsoup.connect("http://www.blocket.se/hela_sverige/bilar?ca=11&cg=1020&w=3&md=th").get();

Elements partOne = doc.select("a[title=Flera bilder]");
for (Element element : partOne) {
    String myElementOne = element.attr("abs:href");
    System.out.println(myElementOne);

}
Elements partTwo = doc.select("a[title=\"\"]");
for (Element element : partTwo) {
    String myElementTwo = element.attr("abs:href");
    System.out.println(myElementTwo);

}
Elements partThree = doc.select("a[title=Bild]");
for (Element element : partThree) {
    String myElementThree = element.attr("abs:href");
    System.out.println(myElementThree);

}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-18 12:05:56

partOnepartTwopartThree块基本上是相同的;只需用变量替换所有的参数差异,然后提取到方法中:

代码语言:javascript
复制
void someMethodName(Document doc, String selector) {
  Elements partOne = doc.select(selector);
  for (Element element : partOne) {
    String myElementOne = element.attr("abs:href");
    System.out.println(myElementOne);
  }
}

示例调用:

代码语言:javascript
复制
someMethodName(doc, "a[title=Flera bilder]");

或者,如果你可以进入番石榴:

代码语言:javascript
复制
Iterable<Element> it = Iterables.concat(
    doc.select("a[title=Flera bilder]"),
    doc.select("a[title=\"\"]"),
    doc.select("a[title=Bild]"));
for (Element element : it) {
  String myElement = element.attr("abs:href");
  System.out.println(myElement);
}
票数 1
EN

Stack Overflow用户

发布于 2016-02-18 13:00:57

当然,安迪溶液正在做这项工作。但是,由于您专门询问了优化JSoup调用的方法,所以我建议学习更多关于CSS选择器正则表达式的知识。例如,在您的情况下,这将做得很好:

代码语言:javascript
复制
Elements allParts = doc.select("a[title~=^Flera bilder$|^$|^Bild$]");
for (Element element : allParts) {
    String elStr = element.attr("abs:href");
    System.out.println(elStr);
}

在这里,我对属性文本使用~=运算符。它允许我使用一个常见的正则表达式将所有三个select语句组合成一个。

另一种方法是使用,操作符将所有选择器添加到一个中:

代码语言:javascript
复制
Elements allParts2 = doc.select("a[title=Flera bilder],a[title=\"\"],a[title=Bild]");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35480730

复制
相关文章

相似问题

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