【问题标题】:How to extract multiple values from html to java? [duplicate]如何从html中提取多个值到java? [复制]
【发布时间】:2015-06-22 12:48:28
【问题描述】:

我正在尝试从 html 源代码中提取一些数据到我的 java 项目中。 html 取自“Bing 搜索图像”,我想从 <a> 标签中获取所有图像。这是html代码:

<a href="/images/search?q=nba&amp;view=detailv2&amp;&amp;&amp;
id=FE19E7BB2916CE8B6CD78148F3BC0656D151049A&amp;
selectedIndex=3&amp;
ccid=2%2f7OBkGc&amp;
simid=608035681734625885&amp;
thid=JN.tdPCsRj4HyJzbwA%2bgXsS8g" 
ihk="JN.tdPCsRj4HyJzbwA+gXsS8g" 
m="{ns:&quot;images&quot;,k:&quot;5070&quot;,dirovr:&quot;ltr&quot;,
mid:&quot;FE19E7BB2916CE8B6CD78148F3BC0656D151049A&quot;,
surl:&quot;http://www.nba.com/gallery/rookie/070727_1.html&quot;,
imgurl:&quot;http://www.nba.com/media/draft_class_3_07_070727.jpg
&quot;,
ow:&quot;300&quot;,docid:&quot;608035681734625885&quot;,oh:&quot;192&quot;,tft:&quot;58&quot;}" 
mid="FE19E7BB2916CE8B6CD78148F3BC0656D151049A" 
t1="The 2007 NBA Draft Class" 
t2="625 x 400 · 374 kB · jpeg" 
t3="www.nba.com/gallery/rookie/070727_1.html" 
h="ID=images,5070.1"><img data-bm="16" 
src="https://tse3.mm.bing.net/th?id=JN.tdPCsRj4HyJzbwA%2bgXsS8g&amp;w=217&amp;h=142&amp;c=7&amp;rs=1&amp;qlt=90&amp;o=4&amp;pid=1.1" 
style="width:217px;height:142px;" width="217" height="142">
</a>

这就是我试图提取它但没有成功的方式:

public static void main(String[] args) {

        String title = "dog";
        String url =    "https://www.bing.com/images/search?q="+title+"&FORM=HDRSC2";
        try {
            Document doc = Jsoup.connect(url).get();
            Elements img = doc.getElementsByTag("a");

            for (Element el : img) {
                String src1 = el.absUrl("imgurl");
                String src2 = el.absUrl("surl");
                System.out.println(src1 + " " + src2);      
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

有没有可能?

【问题讨论】:

  • 哪一点你没有成功? Jsonp.connect 或内部for loop??还是?
  • 连接正常,但String src1 = el.absUrl("imgurl"); String src2 = el.absUrl("surl");没有结果
  • 您是否使用任何 IDE 进行开发?如果是这样,请尝试调试并找到正确的表达式。
  • 查看 HTML 代码。你能告诉我如何获得“imgurl”和“surl”的值吗?
  • 我不知道 html,只是 java 对不起。那么如何提取呢?

标签: java html jsoup


【解决方案1】:

据我了解,您的&lt;a&gt; 元素具有属性m,而不是imgurlsurl,并且m 包含一个JSON,而后者又包含imgurlsurl。所以你应该从m中提取JSON:

String m = el.attr("m");

然后使用您喜欢的任何库将 m 解析为 JSON,例如GSON:

class MJson {
    private String imgurl;
    private String surl;

    ...
}

MJson mJson = new Gson().fromJson(m, MJson.class);
String src1 = mJson.getImgurl();
String src2 = mJson.getSurl();

【讨论】:

  • 哇,谢谢!但是我需要写什么...
  • @mattmatt getter 和 setter
  • 我仍然得到@null
  • @mattmatt,在哪个地方?
  • src1 和 src2。看起来 Gson 根本没有获取数据
猜你喜欢
  • 1970-01-01
  • 2020-10-21
  • 2020-02-11
  • 1970-01-01
  • 2018-06-11
  • 2015-09-13
  • 2017-06-23
  • 2017-03-01
  • 1970-01-01
相关资源
最近更新 更多