2017-11-18 231 views
-1

我目前正在使用python网络爬虫收集在谷歌上搜索到的图像。我用硒滚动搜索页面,并用美丽的汤来记录所有的元素。查找图像的网址

对于某些图片,我可以轻松找到没有额外点击的网址,如“http://www.XXXXX.jpg”。但是对于一些图片,如果我不点击它并检查元素,那么src部分就像“data:image/jpeg; base 64,/ ...”。通过单击后检查缩放的图像,我将获得所需的网址。但我不知道如何使用硒点击图片。

有没有什么办法让这类图片的网址?

+0

参见:[我要如何做X ?](https://meta.stackoverflow.com/questions/253069/whats-the-appropriate-new-current-close-reason-for-how-do-i-do-x)对SO的期望是,用户提出的问题不仅仅是研究来回答他们自己的问题,还会分享研究,代码尝试和结果。这表明你已经花时间去尝试帮助自己,它使我们避免重申明显的答案,最重要的是它可以帮助你得到更具体和相关的答案!另请参阅:[问] – JeffC

回答

0

这可能意味着图像编码的HTML 的src部分内储存的图片,你只需要获取文本的长行后

data:image/jpeg;base 64,/ 

,并对其进行解码。

例如

import base64 
b64_data = "here_text" 
imgdata = base64.b64decode(b64_data) 
filename = 'some_image.jpg' # I assume you have a way of picking unique filenames 
with open(filename, 'wb') as f: 
    f.write(imgdata) 

它也可能意味着单击缩略图后运行JavaScript,然后点击元素所有你需要做的就是

driver.find_element_by_css_selector(".classname").click() 
+0

现在它可能只是存储为Base 64字符串的缩略图。当你点击它时,可能会有javascript在背景中发生,它正在构建实时图像上的链接。 – WombatPM

+0

在这种情况下,您可以使用Selenium点击元素 – mduiker

+0

@mduiker谢谢各位!点击方法确实有效。我如何构建一个while循环或for循环来连续点击所有图像?而且一旦我点击了一张图片,这张图片的所有元素都会被记录下来,对吧?我对网页一无所知......抱歉。 – Yujian