【发布时间】:2018-06-25 05:50:04
【问题描述】:
我有一个字符串,里面有几个 URL。我已经设法使用正则表达式来提取第一个 URL,但我真的需要它们。到目前为止,我的脚本如下:
data = ['https://images-na.ssl-images-amazon.com/images/I/41M9WbK3MDL._SX342_.jpg":[355,342],"https://images-na.ssl-images-amazon.com/images/I/41M9WbK3MDL._SX425_.jpg":[441,425],"https://images-na.ssl-images-amazon.com/images/I/41M9WbK3MDL.jpg":[500,482],"https://images-na.ssl-images-amazon.com/images/I/41M9WbK3MDL._SX466_.jpg":[483,466],"https://images-na.ssl-images-amazon.com/images/I/41M9WbK3MDL._SX385_.jpg":[399,385]}']
url = data[data.find("https://"):]
url[:url.find('"')]
抱歉 - 上面的脚本没有使用正则表达式,但这是我尝试这样做的另一种方式。我的正则表达式脚本在下面几乎做同样的事情。我真的不介意我们使用什么,只是想尝试获取所有 URL,因为我的两个脚本都只提取第一个 URL。
url=re.search('(https)://.*?\.(jpg)', data)
if url:
print(url.group(0))
我正在抓取亚马逊产品 - 这是上下文。我还将字符串更新为实际示例之一。感谢大家的 cmets/帮助
【问题讨论】:
-
您的代码有不匹配的引号,请修复它。 (根据你的问题,我不确定它应该去哪里。)
-
您并没有真正在代码中使用正则表达式,
.find()采用常规字符串(不是正则表达式)并返回其在原始字符串中第一次出现的索引。 -
另外,
data是一个列表,你如何在上面使用.find()?你应该得到一个例外。 -
这个字符串是从哪里来的?看起来像是 json 字符串的一部分。
-
还有一点,您的网址似乎遵循这种格式,
"<url here>"(注意双引号),但您的第一个网址缺少开放引号,所以我对您的数据有点困惑格式。