如何用Python正则表达式从字符串中提取指定图片URL?
解决从JavaScript代码中提取亚马逊图片URL的问题
修正正则表达式
你的正则匹配逻辑存在两个核心问题:一是未限制URL的边界(比如忽略了JS中URL通常被引号包裹的特性),二是未转义URL里的.字符(正则中.是通配符,会匹配任意字符),导致把周围的JS代码也一并匹配进来。可以改用以下正则精准提取目标URL:
import re # 假设str(new_bs)是包含JS代码的原始HTML字符串 pattern = r'"https://m.media-amazon.com/images/I/[^"]*_AC_SL1500_\.jpg"' raw_matches = re.findall(pattern, str(new_bs)) # 去除首尾的双引号,得到纯URL clean_urls = [url.strip('"') for url in raw_matches] # 截取前9个目标URL target_urls = clean_urls[:9]
关键修改说明
[^"]*:匹配除双引号外的任意字符,确保只捕获引号内部的URL内容,避免混入JS代码\.jpg:转义.字符,让正则匹配URL里的实际点号,而非任意字符- 双引号包裹匹配规则:利用JS中URL通常用双引号定义的特性,精准定位合法URL
兼容单引号场景的优化
如果目标URL在JS中是用单引号包裹的,可以改用兼容单双引号的正则:
pattern = r'["\']https://m.media-amazon.com/images/I/[^"\']*_AC_SL1500_\.jpg["\']'
后续处理时同样需要去除首尾的引号。
内容的提问来源于stack exchange,提问作者Enes Kasikci
相关产品推荐
相关产品推荐

