从易趣链接中提取商品ID

时间:2014-03-14 15:40:39

标签: java parsing ebay

我需要来自我的JAVA / JSP应用程序的链接的ebay项目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 个答案:

答案 0 :(得分:1)

假设项目" 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),我会在做之前认真重新考虑我的架构我的视图层中的任何类型的业务处理。

答案 1 :(得分:1)

是的,eBay商品ID#始终是(afaik)视图商品页面网址的一部分,但是该网址有多种不同的格式,这些格式经过多年的发展,处理用户行为和流量的不同变化

以下是一些例子:

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位eBay商品ID#,或者您可能会让卖家在标题中包含长件号。