我想从Tinder抓取文本和图像数据。
我无法有效获取链接到图像的URL。我一直在使用BeautifulSoup的find方法选择包含URL链接的html。但是,此返回值是HTML的很大一部分,而不是有效地索引URL。
如何仅有效获取URL?(在下图中突出显示)
当前解决方案
soup=BS(driver.page_source,'lxml')
regex_search_exp= re.compile(
'^background-image: url\("https://images-ssl.gotinder.com/'+'.{24}/640')
results = soup.find_all("div",
{"style":regex_search_exp})
url_list=[]
for result in results[2:]:
x = result.attrs['style'].split()
x=x[1][5:-3]
url_list.append(x)
>>>url_list
['https://images-ssl.gotinder.com/5c243b05836277e9092ea335/640x800_CENSORED-9690-42e6-88b1-9a213a3e45d7.jpg',
'https://images-ssl.gotinder.com/5c243b05836277e9092ea335/640x800_CENSORED-7747-4552-a952-0462e9abb768.jpg',
'https://images-ssl.gotinder.com/5c243b05836277e9092ea335/640x800_CENSORED-d58d-4402-901e-6c15713c2e4d.jpg']
这成功地向我返回了各个URL的列表,我可以将其转换为所需的嵌套字典结构。但是我想知道是否有一种更有效的方法来访问此url元素。
Tinder允许用户最多上传9张图像。
所需的输出将为我返回一个嵌套的字典,如下所示(请注意,我在URL中添加了CEN以保护用户的数据):
solution = {f"Jenny_{time}":{
"Images":{
"Image 1": "https://images-ssl.gotinder.com/53cc38bc163054b238e3173f/640xCEN_d61e06f9-CENS-4ac4-8df0-8ba5a6abf722.jpg",
"Image 2": "https://images-ssl.gotinder.com/53cc38bc163054b238e3173f/640xCEN_d61e06f9-CENS-4ac4-8df0-8ba5a6abf722.jpg",
"Image 3": "https://images-ssl.gotinder.com/53cc38bc163054b238e3173f/640xCEN_d61e06f9-CENS-4ac4-8df0-8ba5a6abf722.jpg",
"Image 4": "https://images-ssl.gotinder.com/53cc38bc163054b238e3173f/640xCEN_d61e06f9-CENS-4ac4-8df0-8ba5a6abf722.jpg",
"Image 5": 0,
"Image 6": 0,
"Image 7": 0,
"Image 8": 0,
"Image 9": 0,
}}}