2015-11-08 139 views
0

我成功地使用我的技术获取了网址,但要指出的是,我需要稍微更改网址:“http://www.example.com/static/p/no-name-0330-227404-1.jpg”。凡在img标签我得到这个链接: “http://www.example.com/static/p/no-name-0330-227404-1-product.jpg从网址中排除某些关键字

HTML代码:

<div class="swiper-wrapper"><img data-error-placeholder="PlaceholderPDP.jpg" class="swiper-lazy swiper-lazy-loaded" src="http://www.example.com/static/p/no-name-0330-227404-1-product.jpg"></div> 

Python代码:

imagesList = [] 
imagesList.append([re.findall(re.compile(u'http.*?\.jpg'), etree.tostring(imagesList).decode("utf-8")) for imagesList in productTree.xpath('//*[@class="swiper-wrapper"]/img')]) 

print (imagesList) 

输出:

[['http://www.example.com/static/p/no-name-8143-225244-1-product.jpg']] 

注:我需要从网址中删除“-product”,我不知道为什么这个网址在两个方括号内。

回答

0

如果您打算只删除产品关键字,那么您可以简单地使用.replace()API。否则,您可以构造正则表达式来操纵字符串。以下是替换API的示例代码。

myURL = "http://www.example.com/static/p/no-name-0330-227404-1-product.jpg" 
myURL = myURL.replace("-product", "") # gives u "http://www.example.com/static/p/no-name-0330-227404-1.jpg" 
print(myURL) 

正则表达式版本:(可能不干净的溶液,如在它是很难理解)。但它比第一种方法更好,因为它动态地丢弃了最后一组字符(例如-product)

我所做的是捕获URL的3部分,但省略了中间部分,因为这是-product位,并将第1部分和第3部分结合在一起形成您的URL。

import re 
myURL = "http://www.example.com/static/p/no-name-0330-227404-1-product.jpg" 

myPattern = "(.*)(-.*)(\.jpg)$" 
pattern = re.compile(myPattern) 
match = re.search(pattern, myURL) 
print (match.group(1) + match.group(3)) 

相同输出如上: http://www.example.com/static/p/no-name-0330-227404-1.jpg

+0

你的解决方案是正确的,但我如何把它放在我的新的格式里,请看到新的Python代码。 – Jok3r

+0

我没有完整的脚本,所以我很难帮助你。您可以尝试通过移除image.append API和嵌套方括号[]来查看它为您提供的内容,从而将该内容分解为两部分。就像是。 对于productList中的imagesList('// * [@ class =“swiper-wrapper”]/img') –

+0

如果它给你你发布的字符串,那么注入我的代码来处理字符串,然后将处理后的url附加到imageList中。 –

0

如果所有的图像都有“产品”这个词,你可以做一个简单的字符串替换并删除那个单词吗?无论你想要做什么(包括重命名文件),我都将其视为最简单的解决方案。