Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ## [example of usage with sample output below function definition] ##
- ## FIRST PASTE [OR DOWNLOAD&IMPORT] from https://pastebin.com/kEC9gPC8
- def get_gLens_data(imgUrl):
- url = f'https://lens.google.com/uploadbyurl?url={imgUrl}'
- ## selectors and attributes##
- mRefs = {
- 'caption': ('', 'aria-label'), 'link': ('', 'href'),
- 'imgLink': ('img[src]', 'src')
- }
- imga_sel = 'a[aria-label][href]:has(img[src])'
- sa_attrs = ['data-width', 'data-height', 'data-center-x', 'data-center-y']
- sa_sel = ''.join(f'[{a}]' for a in sa_attrs)
- sa_sel = f'div[aria-label="Select this item"]{sa_sel}'
- mr_sel = 'div:has(+ div > div > div > a[aria-label^="Search"])'
- mi_sel = 'div[aria-label="Answer card image carousel"]'
- mi_sel = f'{mi_sel} > div[jsname] > div > {imga_sel}'
- vm_sel = f'span[jsslot]+div[aria-live="polite"] div:has(>h2)+div {imga_sel}'
- ## [if unfamiliar with css selectors, see the resources below]
- # .select section of docs at https://www.crummy.com/software/BeautifulSoup/bs4/doc/#css-selectors
- # css selectors ref/cheatsheet at https://www.w3schools.com/cssref/css_selectors.php
- # breakdown of mr_sel at https://i.stack.imgur.com/OvYyh.png
- soup = linkToSoup_selenium(url, ecx=imga_sel, by_method='css', returnErr=True)
- if type(soup) == str: return {'imgUrl': imgUrl, 'errorMsg': soup}
- if not soup.select('a[href][id][title="Google"]'):
- pgTitl = soup.select_one('head title')
- pgTitl = miniStr(pgTitl.get_text(' ')) if pgTitl else 'MISSING TITLE'
- return {'imgUrl': imgUrl, 'errorMsg': f'Not a google page - {pgTitl}'}
- rDets = {'search_imgUrl': imgUrl}
- for i, t in enumerate(soup.select(f'{mr_sel} > div')):
- rDets[f'result_text_{i+1}'] = miniStr(t.get_text(' '))
- rDets['imgSections'] = [{
- k: v for k, v in [(a.replace('-', '_'), [
- float(n) if type(n) == str and n.count('.') < 2
- and n.replace('.', '').isdigit()
- else None for n in [imsg.get(a)]
- ][0]) for a in sa_attrs] if v is not None
- } for imsg in soup.select(sa_sel)]
- for k, s in [('subject', mi_sel), ('visual', vm_sel)]:
- rDets[f'{k}_matches'] = [{km: miniStr(
- (im.select(sm) if sm else [im])[0].get(a)
- ) for km, (sm, a) in mRefs.items()} for im in soup.select(s)]
- return rDets
- ########################################### EXAMPLE ###########################################
- ## get_gLens_data('https://pbs.twimg.com/media/FjmNGDCXEAAMqu7?format=jpg&name=900x900') ## OR
- # import json
- # iUrl = 'https://pbs.twimg.com/media/FjmNGDCXEAAMqu7?format=jpg&name=900x900'
- # print(json.dumps(get_gLens_data(iUrl), indent=2))
- #### will return/print something like:
- {
- "search_imgUrl": "https://pbs.twimg.com/media/FjmNGDCXEAAMqu7?format=jpg&name=900x900",
- "result_text_1": "Jennifer Li",
- "result_text_2": "Television presenter",
- "imgSections": [
- {"data_width": 1, "data_height": 1, "data_center_x": 0.5, "data_center_y": 0.5},
- {"data_width": 0.49596775, "data_height": 0.94916666, "data_center_x": 0.7520161, "data_center_y": 0.5254167},
- {"data_width": 0.39919356, "data_height": 0.51166666, "data_center_x": 0.29334676, "data_center_y": 0.7366667},
- {"data_width": 0.40221775, "data_height": 0.46083334, "data_center_x": 0.25352824, "data_center_y": 0.23625},
- {"data_width": 0.27721775, "data_height": 0.25, "data_center_x": 0.6547379, "data_center_y": 0.8675}
- ],
- "subject_matches": [
- {
- "caption": "Image #1 for Jennifer Li",
- "link": "https://www.mirrormedia.mg/story/20191026web001/",
- "imgLink": "https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcQYw8OoiB0MzgT37xQDQpDidPsMVPW2ADRROciNoXM1QzS81Gz5"
- },
- {
- "caption": "Image #2 for Jennifer Li",
- "link": "https://www.youtube.com/watch?v=0JHS9GBaV2g",
- "imgLink": "https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcQ-KSfJiqLJkrjAnruIAKUBiL6e36e8kBjV8pFG-8luV-jEsPWc"
- },
- {
- "caption": "Image #3 for Jennifer Li",
- "link": "https://star.setn.com/news/359899",
- "imgLink": "https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcQ8LPwXOZYrvhvrF27kA-azc1uTXpq6b8z1TYdGTULQ_TD_HKtl"
- },
- {
- "caption": "Image #4 for Jennifer Li",
- "link": "https://s.yimg.com/ny/api/res/1.2/kWJF90zNHnwT3XzsY3jfJw--/YXBwaWQ9aGlnaGxhbmRlcjt3PTY0MA--/https://media.zenfs.com/ko/setn.com.tw/2fad317047bf135e3b0ace00be26cef5",
- "imgLink": "https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcS9zbVh-a2NykXAuoYqpf2RNOSPczNAQ4xKMrOP99wBETKPGsAR"
- },
- {
- "caption": "Image #5 for Jennifer Li",
- "link": "http://images.haiwainet.cn/20191024/1571895562519302.jpg",
- "imgLink": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRo6MEKSfMkC5rL8AiEUKz7PjnydkYDvbCxHH_2pdxSlBZlD4PR"
- }
- ],
- "visual_matches": [
- {
- "caption": "30 Times People Created Terrible Designs And Ended Up On The \"Ugly Design\" Instagram Account (New Pics) | DeMilked",
- "link": "https://www.demilked.com/bad-taste-ugly-design/",
- "imgLink": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTkbN07ikGVezIKnsaIZ4qfeW6GW7LSUBnVfIWerZj0Cwpi1WX6"
- },
- {
- "caption": "블라인드 | 유우머: 대륙 아나운서 방송태도 논란",
- "link": "https://www.teamblind.com/kr/post/%EB%8C%80%EB%A5%99-%EC%95%84%EB%82%98%EC%9A%B4%EC%84%9C-%EB%B0%A9%EC%86%A1%ED%83%9C%EB%8F%84-%EB%85%BC%EB%9E%80-P12AEQZa",
- "imgLink": "https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcSJm-vRkaS9IHFbKsLn1lDosM7nE5IPKNQsmAwRcC64QN1hiwsM"
- },
- {
- "caption": "播新聞胸前藏吉娃娃!美女主播揭幕後真相 - Yahoo奇摩電影戲劇",
- "link": "https://movies.yahoo.com.tw/%E6%92%AD%E6%96%B0%E8%81%9E%E8%83%B8%E5%89%8D%E8%97%8F%E5%90%89%E5%A8%83%E5%A8%83-%E7%BE%8E%E5%A5%B3%E4%B8%BB%E6%92%AD%E6%8F%AD%E5%B9%95%E5%BE%8C%E7%9C%9F%E7%9B%B8-061400389.html",
- "imgLink": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcR1fI_KeDvmh23omlYvT5G_jwnO4hTq7nLmkf4u-p_zoe2J0boe"
- },
- {
- "caption": "I don’t care. It’s a Chihuahua shirt. : r/confusing_perspective",
- "link": "https://www.reddit.com/r/confusing_perspective/comments/qjpmm3/i_dont_care_its_a_chihuahua_shirt/",
- "imgLink": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRx6-bDaNlNgLNMDPLNV1eEMMXmjrRau28dnS22fL1rJ5m1tyyF"
- },
- {
- "caption": "正妹主播身上藏「間諜吉娃娃」報新聞? 網友笑噴:好像 | 生活 | 三立新聞網 SETN.COM",
- "link": "https://www.setn.com/News.aspx?NewsID=621673",
- "imgLink": "https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcTF_aMCo7vCcxYIMXyBrmIQyKvrFXEAaQcEI0WowxiLnnXzh7jD"
- },
- {
- "caption": "紅到國外!李文儀胸前藏「間諜吉娃娃」 服裝師這麼說 | 娛樂星聞 | 三立新聞網 SETN.COM",
- "link": "https://www.setn.com/m/news.aspx?NewsID=623931",
- "imgLink": "https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcQsZoRQwL5Yv137DzAKrEDfKqgWTb7YN8K__oksEtue0ziXSctL"
- },
- {
- "caption": "美女主播李文儀胸前竄出吉娃娃! 紅到美國她也回應了 | 鏡週刊 | LINE TODAY",
- "link": "https://today.line.me/tw/v2/article/6eGJZN",
- "imgLink": "https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcTviNV8G1F7y3KbskA1vMBB_i-maHheZ6QxvlCuESb0p5KLh_OV"
- },
- {
- "caption": "#吉娃娃梗圖 - PinQueue",
- "link": "https://www.pinqueue.com/topic/?query=%23%E5%90%89%E5%A8%83%E5%A8%83%E6%A2%97%E5%9C%96",
- "imgLink": "https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcQX9o0yu8z8n3bmWJ1uyipjxsE9Lw3acwTNEtCuvXU7yBvjZ1dZ"
- },
- {
- "caption": "[閒聊] 我的狗狗真的很像吉娃娃嗎 - WomenTalk板 - Disp BBS",
- "link": "https://disp.cc/b/WomenTalk/ca2c",
- "imgLink": "https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcQOOM4Lu9nB_upK2SegZPcPD4zxnNveeMr4EZLCtEv_iz5o9KDg"
- }
- ]
- }
- ###############################################################################################
Advertisement
Add Comment
Please, Sign In to add comment