【问题标题】:Exclude certain keyword from URL从 URL 中排除某些关键字
【发布时间】:2015-11-08 10:28:56
【问题描述】:

我能够使用我的技术成功获取 url,但重点是我需要稍微更改 url,如下所示:“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']]

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

【问题讨论】:

    标签: python html regex


    【解决方案1】:

    如果您打算只删除产品关键字,那么您可以简单地使用 .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)
    

    正则表达式版本:(可能不是一个干净的解决方案,因为它很难理解)。但是它比第一种方法更好,因为它动态丢弃最后一组 -words(例如 -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

    【讨论】:

    • 您的解决方案是正确的,但我如何将其放入我的新格式中,请参阅新的 python 代码。
    • 我没有完整的脚本,所以我很难帮你。您可以尝试通过删除 image.append API 和嵌套的方括号 [] 将 1 衬里分成 2 部分,看看它给了你什么。就像是。 re.findall(re.compile(u'http.*?\.jpg'), etree.tostring(imagesList).decode("utf-8")) for imagesList in productTree.xpath('//*[@class="swiper-wrapper"]/img')
    • 如果它为您提供了您发布的字符串,则注入我的代码来操作字符串,然后将处理后的 url 附加到 imageList 中。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2022-10-19
      • 1970-01-01
      • 1970-01-01
      • 2019-10-31
      • 2020-04-09
      • 1970-01-01
      • 2016-07-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多