有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java从易趣链接提取项目ID

我需要我的JAVA/JSP应用程序链接中的易趣商品ID。 有两种方法可以直接从链接中提取它 或 下载整个页面并使用html解析器获取项目ID

但是下载整个页面会减慢我的应用程序的速度

有没有一种方法可以从链接中提取JAVA/JSP中的项目ID

http://www.ebay.com/itm/ASSORTED-COLORS-BACK-BATTERY-HOUSING-COVER-CASE-REPLACEMENT-FOR-IPHONE-5-/281163250779?pt=US_Cell_Phone_PDA_Cases&var=580223102484&hash=item4176a2bc5b


共 (2) 个答案

  1. # 1 楼答案

    是的,易趣商品ID始终是查看商品页面URL的一部分(afaik),但该URL有许多不同的格式,这些格式经过多年的演变,可以处理用户行为和流量的不同变化

    以下是一些例子:

    http://cgi.ebay.com/ws/eBayISAPI.dll?ViewItem&item=260134059871

    http://cgi.ebay.co.uk/ws/eBayISAPI.dll?ViewItem&&item=360083468950ssPageName=ADME:B:BCA:GB:1120&ssPageName=ADME:B:BCA:GB:1120

    http://buy.id.ebay.com/buying/id/display/270303575025_HUGE-ESTATE-LIQUIDATION-COINS-GOLD-SILVER-FACE-PCGS-NR

    http://cgi.ebay.com/1986-First-Steps-In-Quilting_W0QQitemZ%20270298752777QQcmdZViewItemQQptZLH_DefaultDomain_0?hash=item360080169380

    http://www.ebay.com/itm/ws/eBayISAPI.dll?ViewItem&item=190359926860

    http://cgi.ebay.com/370433488875

    。。。我的笔记里还有更多

    不必考虑所有这些历史变化,提取项目编号的一种快速而肮脏的方法是提取URL中的前11-13位数字。我打赌99%的时间都会成功。剩下的时间里,你可能会错过偶尔出现的10位或14位易趣商品ID,或者你可能会遇到在标题中包含一个长零件号的卖家

  2. # 2 楼答案

    假设项目“ID”是URL路径的最后一个组件,就在查询参数之前,下面是可以用来提取它的许多方法之一:

    public long getEBayItemNumber(String ebayURL) throws MalformedURLException {
        final URL url = new URL(ebayURL);
        final String path = url.getPath(); 
        final String itemNumber = path.substring(path.lastIndexOf("/") + 1);
        return Long.parseLong(itemNumber);
    }
    

    用法示例:

    long itemNumber = getEBayItemNumber("http://www.ebay.com/itm/ASSORTED-COLORS-BACK-BATTERY-HOUSING-COVER-CASE-REPLACEMENT-FOR-IPHONE-5-/281163250779?pt=US_Cell_Phone_PDA_Cases&var=580223102484&hash=item4176a2bc5b");
    

    虽然您的问题不清楚物品“ID”应该是什么,但提取的编号(281163250779)在易趣搜索栏上工作,并在物品描述中报告为“易趣物品编号

    Working Example


    我不会将此方法放在JSP declaration中,我根本不会使用Scriptlet(或纯JSP),我会在视图层中进行任何类型的业务处理之前认真反思我的体系结构