在Python中使用Google抓取网页时,不断获取不够的图片和重复的图片?

2024-09-27 21:26:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在网上搜刮谷歌,但我不断得到重复的图像。它下载了大约200张图片,但是只有60张左右的独特图片。如何获得更独特的图像并消除重复?你知道吗

这是我的密码:

import json
import os
import time
import requests
from PIL import Image
from StringIO import StringIO
from requests.exceptions import ConnectionError
import string 
import urllib
import random

def go(query, path):
BASE_PATH = os.path.join(path, query)
if not os.path.exists(BASE_PATH):
os.makedirs(BASE_PATH)

resultitem = 0
file_save_dir = BASE_PATH
filename_length = 10
filename_charset = string.ascii_letters + string.digits
ipaddress = '163.118.75.137'
url = 'https://ajax.googleapis.com/ajax/services/search/images?'\
         'v=1.0&q=' + query + '&start=%d'

while(resultitem < 60):
 response = requests.get(url % resultitem)
 results = json.loads(response.text)
 for result in results['responseData']['results']: 
   print result['unescapedUrl']
   filename = ''.join(random.choice(filename_charset)
                 for s in range(filename_length))
   urllib.urlretrieve (result['unescapedUrl'],
                  os.path.join(file_save_dir, filename + '.png'))
 resultitem = resultitem + 1 # or + 8 Duplicates?

def main():
go('angry human face', 'myDirectory')
if __name__ == "__main__":
main()

Tags: pathfromimportbasestringosmainresult
1条回答
网友
1楼 · 发布于 2024-09-27 21:26:42

问题在于:

   filename = ''.join(random.choice(filename_charset)
                 for s in range(filename_length))

它不是唯一的,并且您已经覆盖了文件。你知道吗

你应该改用^{} module

或者,由于您真正关心的是一个唯一的文件名,因此可以执行以下操作:

 for idx, result in enumerate(results['responseData']['results']): 
   print result['unescapedUrl']
   filename = "IMG%s" % idx

idx这里是每个url的唯一编号

相关问题 更多 >

    热门问题