我有两个网站,现在手上有数据,我想用这些数据进行分析
我有两个产品名称(品牌 + 产品名称),我想只提取品牌名称
http://www.thehut.com/jeans-clothing/men/clothing/brave-soul-men-s-cardiff-jeans-denim/10741907.html
在上面的网站中,产品名称是
Brave Soul Men's Swansea Jeans - Denim
品牌名称是
Brave Soul
所以我只想要
Brave Soul
Amazon网址
http://www.amazon.in/gp/product/B00L8WT2UI
同样,在上面的网站中,产品名称是
Apple iPhone 5c (White, 8GB)
品牌名称是
Apple
所以我想要的输出像这样
Brave SoulApple
回答:
你试图获取的信息实际上并不存在。
如果你拿两个字符串,这两个字符串可能包含任意数量的空格,然后用一个空格将它们连接起来,就无法明确区分哪个空格是用来连接两个字符串的,哪些空格是字符串本身的一部分。
因此,你有几种选择:
首先,每个产品中的空格数量并不多,所以你可以尝试所有可能的情况:品牌Brave
和产品Soul Men's Swansea Jeans - Denim
,然后是品牌Brave Soul
和产品Men's Swansea Jeans - Denim
,接着是品牌Brave Soul Men's
和产品Swansea Jeans - Denim
,依此类推,另外还有3种可能的情况。
其次,如果你能从其他地方抓取所有品牌名称的列表,并将它们存储在一个set
(或数据库表或其他任何东西)中,你可以在尝试所有可能性之前进行预筛选,以避免相对较慢的Amazon网络请求。例如,如果你有一份所有品牌的列表,只需检查Brave
、Brave Soul
、Brave Soul Men's
、Brave Soul Men's Swansea
等哪些是实际的品牌,然后只测试这些品牌。
与此同时,这仍然不会是完美的,因为几乎肯定会有一些模糊的情况。例如,有一个品牌Apple
,还有一个品牌Apple Records
,那么当你试图拆分Apple Records Master Collection
时会发生什么?你有两个有效的可能性,而不仅仅是一个。你所能做的就是设计你的代码以某种方式处理这种情况(并进行单元测试以确保你正确处理了这些情况)。