Extracting urls from string with regex in python

Viewed 39

I have started learn using regex and so far I could not manage it. I have checked all the similar questions and methods to solve my problem but unfortunately I could not figure it out. Therefore, I am asking your help here.

I am trying to download images from a website by using #BeautifiulSoup. However, the image url s in a javascript code. With this reason, I got the raw html code in a string. Within it, I saought the image urls. I got something however, my output is not pure links rather bulk javascript code. Here is below my work.

The mentioned string

</div> </div></div> </div>        <script type="text/javascript">
P.when('A').register("ImageBlockATF", function(A){
    var data = {
                'colorImages': { 'initial': [{"hiRes":"https://m.media-amazon.com/images/I/71pxkMQzYHL._AC_SL1500_.jpg","thumb":"https://m.media-amazon.com/images/I/41vfFiNXziL._AC_US40_.jpg","large":"https://m.media-amazon.com/images/I/41vfFiNXziL._AC_.jpg","main":{"https://m.media-amazon.com/images/I/71pxkMQzYHL._AC_SY355_.jpg":[355,355],"https://m.media-amazon.com/images/I/71pxkMQzYHL._AC_SY450_.jpg":[450,450],"https://m.media-amazon.com/images/I/71pxkMQzYHL._AC_SX425_.jpg":[425,425],"https://m.media-amazon.com/images/I/71pxkMQzYHL._AC_SX466_.jpg":[466,466],"https://m.media-amazon.com/images/I/71pxkMQzYHL._AC_SX522_.jpg":[522,522],"https://m.media-amazon.com/images/I/71pxkMQzYHL._AC_SX569_.jpg":[569,569],"https://m.media-amazon.com/images/I/71pxkMQzYHL._AC_SX679_.jpg":[679,679]},"variant":"MAIN","lowRes":null,"shoppableScene":null},{"hiRes":"https://m.media-amazon.com/images/I/71sU2LPkRDL._AC_SL1500_.jpg","thumb":"https://m.media-amazon.com/images/I/51OW2RjlcvL._AC_US40_.jpg","large":"https://m.media-amazon.com/images/I/51OW2RjlcvL._AC_.jpg","main":{"https://m.media-amazon.com/images/I/71sU2LPkRDL._AC_SY355_.jpg":[355,355],"https://m.media-amazon.com/images/I/71sU2LPkRDL._AC_SY450_.jpg":[450,450],"https://m.media-amazon.com/images/I/71sU2LPkRDL._AC_SX425_.jpg":[425,425],"https://m.media-amazon.com/images/I/71sU2LPkRDL._AC_SX466_.jpg":[466,466],"https://m.media-amazon.com/images/I/71sU2LPkRDL._AC_SX522_.jpg":[522,522],"https://m.media-amazon.com/images/I/71sU2LPkRDL._AC_SX569_.jpg":[569,569],"https://m.media-amazon.com/images/I/71sU2LPkRDL._AC_SX679_.jpg":[679,679]},"variant":"PT01","lowRes":null,"shoppableScene":null},{"hiRes":"https://m.media-amazon.com/images/I/71TMFaNFzNL._AC_SL1500_.jpg","thumb":"https://m.media-amazon.com/images/I/41hEmC+JVVL._AC_US40_.jpg","large":"https://m.media-amazon.com/images/I/41hEmC+JVVL._AC_.jpg","main":{"https://m.media-amazon.com/images/I/71TMFaNFzNL._AC_SY355_.jpg":[355,355],"https://m.media-amazon.com/images/I/71TMFaNFzNL._AC_SY450_.jpg":[450,450],"https://m.media-amazon.com/images/I/71TMFaNFzNL._AC_SX425_.jpg":[425,425],"https://m.media-amazon.com/images/I/71TMFaNFzNL._AC_SX466_.jpg":[466,466],"https://m.media-amazon.com/images/I/71TMFaNFzNL._AC_SX522_.jpg":[522,522],"https://m.media-amazon.com/images/I/71TMFaNFzNL._AC_SX569_.jpg":[569,569],"https://m.media-amazon.com/images/I/71TMFaNFzNL._AC_SX679_.jpg":[679,679]},"variant":"PT02","lowRes":null,"shoppableScene":null},{"hiRes":"https://m.media-amazon.com/images/I/719icME-gJL._AC_SL1500_.jpg","thumb":"https://m.media-amazon.com/images/I/416-YiLocsL._AC_US40_.jpg","large":"https://m.media-amazon.com/images/I/416-YiLocsL._AC_.jpg","main":{"https://m.media-amazon.com/images/I/719icME-gJL._AC_SY355_.jpg":[355,355],"https://m.media-amazon.com/images/I/719icME-gJL._AC_SY450_.jpg":[450,450],"https://m.media-amazon.com/images/I/719icME-gJL._AC_SX425_.jpg":[425,425],"https://m.media-amazon.com/images/I/719icME-gJL._AC_SX466_.jpg":[466,466],"https://m.media-amazon.com/images/I/719icME-gJL._AC_SX522_.jpg":[522,522],"https://m.media-amazon.com/images/I/719icME-gJL._AC_SX569_.jpg":[569,569],"https://m.media-amazon.com/images/I/719icME-gJL._AC_SX679_.jpg":[679,679]},"variant":"PT03","lowRes":null,"shoppableScene":null},{"hiRes":"https://m.media-amazon.com/images/I/71DNhVaD4YL._AC_SL1500_.jpg","thumb":"https://m.media-amazon.com/images/I/41Vpt6wjRbL._AC_US40_.jpg","large":"https://m.media-amazon.com/images/I/41Vpt6wjRbL._AC_.jpg","main":{"https://m.media-amazon.com/images/I/71DNhVaD4YL._AC_SY355_.jpg":[355,355],"https://m.media-amazon.com/images/I/71DNhVaD4YL._AC_SY450_.jpg":[450,450],"https://m.media-amazon.com/images/I/71DNhVaD4YL._AC_SX425_.jpg":[425,425],"https://m.media-amazon.com/images/I/71DNhVaD4YL._AC_SX466_.jpg":[466,466],"https://m.media-amazon.com/images/I/71DNhVaD4YL._AC_SX522_.jpg":[522,522],"https://m.media-amazon.com/images/I/71DNhVaD4YL._AC_SX569_.jpg":[569,569],"https://m.media-amazon.com/images/I/71DNhVaD4YL._AC_SX679_.jpg":[679,679]},"variant":"PT04","lowRes":null,"shoppableScene":null},{"hiRes":"https://m.media-amazon.com/images/I/71wtEvHpaqL._AC_SL1500_.jpg","thumb":"https://m.media-amazon.com/images/I/51SkfTJkLnL._AC_US40_.jpg","large":"https://m.media-amazon.com/images/I/51SkfTJkLnL._AC_.jpg","main":{"https://m.media-amazon.com/images/I/71wtEvHpaqL._AC_SY355_.jpg":[355,355],"https://m.media-amazon.com/images/I/71wtEvHpaqL._AC_SY450_.jpg":[450,450],"https://m.media-amazon.com/images/I/71wtEvHpaqL._AC_SX425_.jpg":[425,425],"https://m.media-amazon.com/images/I/71wtEvHpaqL._AC_SX466_.jpg":[466,466],"https://m.media-amazon.com/images/I/71wtEvHpaqL._AC_SX522_.jpg":[522,522],"https://m.media-amazon.com/images/I/71wtEvHpaqL._AC_SX569_.jpg":[569,569],"https://m.media-amazon.com/images/I/71wtEvHpaqL._AC_SX679_.jpg":[679,679]},"variant":"PT05","lowRes":null,"shoppableScene":null},{"hiRes":"https://m.media-amazon.com/images/I/71N3hZageSL._AC_SL1500_.jpg","thumb":"https://m.media-amazon.com/images/I/51PQy604ALL._AC_US40_.jpg","large":"https://m.media-amazon.com/images/I/51PQy604ALL._AC_.jpg","main":{"https://m.media-amazon.com/images/I/71N3hZageSL._AC_SY355_.jpg":[355,355],"https://m.media-amazon.com/images/I/71N3hZageSL._AC_SY450_.jpg":[450,450],"https://m.media-amazon.com/images/I/71N3hZageSL._AC_SX425_.jpg":[425,425],"https://m.media-amazon.com/images/I/71N3hZageSL._AC_SX466_.jpg":[466,466],"https://m.media-amazon.com/images/I/71N3hZageSL._AC_SX522_.jpg":[522,522],"https://m.media-amazon.com/images/I/71N3hZageSL._AC_SX569_.jpg":[569,569],"https://m.media-amazon.com/images/I/71N3hZageSL._AC_SX679_.jpg":[679,679]},"variant":"PT06","lowRes":null,"shoppableScene":null},{"hiRes":"https://m.media-amazon.com/images/I/81thNiVly-L._AC_SL1500_.jpg","thumb":"https://m.media-amazon.com/images/I/51+lyjnTQrL._AC_US40_.jpg","large":"https://m.media-amazon.com/images/I/51+lyjnTQrL._AC_.jpg","main":{"https://m.media-amazon.com/images/I/81thNiVly-L._AC_SY355_.jpg":[355,355],"https://m.media-amazon.com/images/I/81thNiVly-L._AC_SY450_.jpg":[450,450],"https://m.media-amazon.com/images/I/81thNiVly-L._AC_SX425_.jpg":[425,425],"https://m.media-amazon.com/images/I/81thNiVly-L._AC_SX466_.jpg":[466,466],"https://m.media-amazon.com/images/I/81thNiVly-L._AC_SX522_.jpg":[522,522],"https://m.media-amazon.com/images/I/81thNiVly-L._AC_SX569_.jpg":[569,569],"https://m.media-amazon.com/images/I/81thNiVly-L._AC_SX679_.jpg":[679,679]},"variant":"PT07","lowRes":null,"shoppableScene":null},{"hiRes":"https://m.media-amazon.com/images/I/81msyLdqvoL._AC_SL1500_.jpg","thumb":"https://m.media-amazon.com/images/I/517ttk4QavL._AC_US40_.jpg","large":"https://m.media-amazon.com/images/I/517ttk4QavL._AC_.jpg","main":{"https://m.media-amazon.com/images/I/81msyLdqvoL._AC_SY355_.jpg":[355,355],"https://m.media-amazon.com/images/I/81msyLdqvoL._AC_SY450_.jpg":[450,450],"https://m.media-amazon.com/images/I/81msyLdqvoL._AC_SX425_.jpg":[425,425],"https://m.media-amazon.com/images/I/81msyLdqvoL._AC_SX466_.jpg":[466,466],"https://m.media-amazon.com/images/I/81msyLdqvoL._AC_SX522_.jpg":[522,522],"https://m.media-amazon.com/images/I/81msyLdqvoL._AC_SX569_.jpg":[569,569],"https://m.media-amazon.com/images/I/81msyLdqvoL._AC_SX679_.jpg":[679,679]},"variant":"PT08","lowRes":null,"shoppableScene":null}]},
                'colorToAsin': {'initial': {}},
                'holderRatio': 1.3,
                'holderMaxHeight': 700,
                'heroImage': {'initial': []},
                'heroVideo': {'initial': []},
                'spin360ColorData': {'initial': {}},
                'spin360ColorEnabled': {'initial': 0},
                'spin360ConfigEnabled': true,
                'spin360LazyLoadEnabled': false,
                'showroomEnabled': false,
                'asinShowroomEnabled' : false,
                'showroomViewModel': {'initial': {}},
                'playVideoInImmersiveView':true,
                'useTabbedImmersiveView':true,
                'totalVideoCount':'0',
                'videoIngressATFSlateThumbURL':'',
                'mediaTypeCount':'0',
                'atfEnhancedHoverOverlay' : false,
                'winningAsin': '',
                'weblabs' : {},
                'aibExp3Layout' : 0,
                'aibRuleName' : 'frank-powered',
                'acEnabled' : true,
                'dp60VideoPosition': 0,
                'dp60VariantList': '',
                'dp60VideoThumb': '',
                'dp60MainImage': 'https://m.media-amazon.com/images/I/71pxkMQzYHL._AC_SY355_.jpg',
                'imageBlockRenderingStartTime': Date.now(),
                'shoppableSceneWeblabEnabled': false,
                
                'airyConfig' :A.$.parseJSON('{"jsUrl":"https://images-na.ssl-images-amazon.com/images/G/01/vap/video/airy2/prod/2.0.1460.0/js/airy.skin._CB485981857_.js","cssUrl":"https://images-na.ssl-images-amazon.com/images/G/01/vap/video/airy2/prod/2.0.1460.0/css/beacon._CB485971591_.css","swfUrl":"https://images-na.ssl-images-amazon.com/images/G/01/vap/video/airy2/prod/2.0.1460.0/flash/AiryBasicRenderer._CB485925577_.swf","foresterMetadataParams":{"marketplaceId":"A1PA6795UKMFR9","method":"PetProducts.ImageBlock","requestId":"VF9T63RBH7HA3WB7NSMJ","session":"262-9108862-6381425","client":"Dpx"}}')
                
                };
    A.trigger('P.AboveTheFold'); // trigger ATF event.
    return data;
});
</script>

The regex code to extract urls

r2 = re.findall('https://m.media-amazon.com/images/I/.*?._AC_SL1500_.jpg', str(new_bs))

There are only 9 images with the name ending with _AC_SL1500_.jpg I only want these images and my output should be pure link, so that, I can download them.

Thank you for help Enes

2 Answers
# All image links of type jpg or png
links = re.findall(r'"(https?://[^"]+.(?:jpg|png))"', s)
# All links ending _AC_SL1500_.jpg
links = re.findall(r'"(https?://[^"]+._AC_SL1500_.jpg)"', s)

here is one way to do it

https://regex101.com/r/Ik19YP/1

match **https:** followed by any number character except **"**  and ending with **_AC_SL1500_.jpg**

here is regex
 https:[^\"]*?_AC_SL1500_.jpg

within python, you can use it as follows

re.findall(r'https:[^\"]*?_AC_SL1500_.jpg', string)
['https://m.media-amazon.com/images/I/71pxkMQzYHL._AC_SL1500_.jpg',
 'https://m.media-amazon.com/images/I/71sU2LPkRDL._AC_SL1500_.jpg',
 'https://m.media-amazon.com/images/I/71TMFaNFzNL._AC_SL1500_.jpg',
 'https://m.media-amazon.com/images/I/719icME-gJL._AC_SL1500_.jpg',
 'https://m.media-amazon.com/images/I/71DNhVaD4YL._AC_SL1500_.jpg',
 'https://m.media-amazon.com/images/I/71wtEvHpaqL._AC_SL1500_.jpg',
 'https://m.media-amazon.com/images/I/71N3hZageSL._AC_SL1500_.jpg',
 'https://m.media-amazon.com/images/I/81thNiVly-L._AC_SL1500_.jpg',
 'https://m.media-amazon.com/images/I/81msyLdqvoL._AC_SL1500_.jpg']
Related