鱼C论坛

 找回密码
 立即注册
12
返回列表 发新帖
楼主: blackantt

[已解决]怎么下载google图片搜索里第2行第1列的图片呢?

[复制链接]
 楼主| 发表于 2022-8-29 19:39:40 | 显示全部楼层
本帖最后由 blackantt 于 2022-8-29 19:58 编辑
鱼cpython学习者 发表于 2022-8-29 16:06
记得安装pyquery库,还有第九行的webdriver.Edge()记得传入驱动路径,我是因为驱动在环境变量里设置了才 ...


C:\Users\dengz\Downloads\google-image1>python edge-image1.py
输入爬取的单词图片:cat

DevTools listening on ws://127.0.0.1:56979/devtools/browser/2d08b7ae-393e-44c1-b79f-1bbb5d8ef20d
[28192:22032:0829/193615.194:ERROR:fallback_task_provider.cc(124)] Every renderer should have at least one task provided by a primary task provider. If a "Renderer" fallback task is shown, it is a bug. If you have repro steps, please file a new bug and tag it as a dependency of crbug.com/739782.

请问,这是用的edge driver,提示怎么了?   我看到edge打开后,没有到image这个标签页就退出了

google 图片 用这个页面怎么样,有啥不同?  https://www.google.com/search?q={word}&source=lnms&tbm=isch
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-29 20:07:58 | 显示全部楼层
blackantt 发表于 2022-8-29 19:39
C:%users\dengz\Downloads\google-image1>python edge-image1.py
输入爬取的单词图片:cat

我这里没有出现任何错误,顺利爬取到图片,你可以在一些地方用input方法设置中断,排查错误
另外这个页面很有用,我都不知道有这么个页面
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-29 20:12:03 | 显示全部楼层    本楼为最佳答案   
blackantt 发表于 2022-8-29 19:39
C:%users\dengz\Downloads\google-image1>python edge-image1.py
输入爬取的单词图片:cat

以下是改进后的代码
import requests
from selenium import webdriver
from pyquery import PyQuery
import re
import base64

word = input('输入爬取的单词图片:')

driver = webdriver.Edge()
url = f'https://www.google.com/search?q={word}&source=lnms&tbm=isch'
driver.get(url)
# input(":")
img = driver.page_source
length = 0
for i in PyQuery(img)('#islrg div div a div img').items():
    img_name = '%s.jpg' % word
    if not i.attr('src'):
        code = requests.get(i.attr('data-src')).content
    else:
        if str(i.attr('src')).startswith('http'):
            code = requests.get(i.attr('src')).content
        else:
            code = base64.b64decode(re.sub(r'data:image/.+?;base64,', '', str(i.attr('src'))))
    with open(img_name, 'wb') as f:
        f.write(code)
    break
非常感谢,大大提升了搜索效率
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-29 20:15:42 | 显示全部楼层
blackantt 发表于 2022-8-29 19:39
C:%users\dengz\Downloads\google-image1>python edge-image1.py
输入爬取的单词图片:cat

另外,你检查一下会不会是google的流量异常检测页面导致edge闪退,我测试代码的时候经常遇到这个问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-8-29 23:20:20 | 显示全部楼层
鱼cpython学习者 发表于 2022-8-29 20:12
以下是改进后的代码

非常感谢,大大提升了搜索效率

非常感谢,已经好用了。
请教下,1.pyquery 能否用re来写,我对re熟一些。想用re改写,练练手
2.如果从文件里读出word,批量下的话,怎么确定前一个图片已经下载完成。  只能用 sleep 等待吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-8-30 11:42:32 | 显示全部楼层
blackantt 发表于 2022-8-29 23:20
非常感谢,已经好用了。
请教下,1.pyquery 能否用re来写,我对re熟一些。想用re改写,练练手
2.如果从 ...

1.我刚试了一下,re可以写,也没什么难点,就是找规律而已,你要练手可以试试
2.不是很懂为什么要确定前一个图片下载完成,如果你不用多线程多进程,本来就是等前面图片下载完成才开始查找另一个单词图片
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-8-30 18:46:53 | 显示全部楼层
鱼cpython学习者 发表于 2022-8-30 11:42
1.我刚试了一下,re可以写,也没什么难点,就是找规律而已,你要练手可以试试
2.不是很懂为什么要确定前 ...

谢谢,好久不用。有点忘记了。 :)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-30 17:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表