为了账号安全,请及时绑定邮箱和手机立即绑定

从谷歌图片中获取前 5 张图片

从谷歌图片中获取前 5 张图片

慕田峪9158850 2021-07-04 05:31:40
我正在操纵一个代码来从谷歌图片搜索下载第 5 个图片结果。但是,我遇到了以下代码的两个主要问题:from bs4 import BeautifulSoupimport urllib.requestimport osimport jsondef get_soup(url,header):    return BeautifulSoup(urllib.request.urlopen(urllib.request.Request(url,headers=header)),'html.parser')query = input('>>> What image do you want? ') image_type=queryquery= query.split()query='+'.join(query)url="https://www.google.co.in/search?q="+query+"&source=lnms&tbm=isch"print ('>>> Base searching page from Google image:', url)DIR="C:/Users/alex/Desktop/try"header={'User-Agent':"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36"}soup = get_soup(url,header)ActualImages=[]# contains the link for Large original images, type of  imagefor a in soup.find_all("div",{"class":"rg_meta"}):    link , Type =json.loads(a.text)["ou"]  ,json.loads(a.text)["ity"]    ActualImages.append((link,Type))print('>>> Base page has', len(ActualImages),'images in total')if not os.path.exists(DIR):    os.mkdir(DIR)DIR = os.path.join(DIR, query.split()[0])if not os.path.exists(DIR):    os.mkdir(DIR)###print imagesfor i,(img,Type) in enumerate(ActualImages[:5]):    try:        req = urllib.request.Request(img, headers={'User-Agent' : header})        raw_img = urllib.request.urlopen(req).read()        cntr = len([i for i in os.listdir(DIR) if image_type in i]) + 1        print(cntr)Q1:在行req = urllib.request.Request(img, headers={'User-Agent' : header})Python 会向我显示一个错误,指出预期的字符串或类似字节的对象,但如果我删除了headers={'User-Agent' : header},代码就可以正常工作。我知道标题充当许可证,但让它禁止代码运行很奇怪。有人可以帮助解决这个问题吗?Q2:根据几次测试,我有时会得到HTTP Error 403: Forbidden. 我应该更改哪一部分让 Python 继续尝试,直到我成功下载了 5 次图像,而不是向我展示它尝试了 5 次但 1 次下载失败?
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 141 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信