怎么把图片存到指定地方?

url2='https://image.baidu.com/search/detail?ct=503316480&z=0&ipn=d&word=%E9%AB%98%E6%B8%85%E5%8A%A8%E6%BC%AB&step_word=&hs=0&pn=1&spn=0&di=49500&pi=0&rn=1&tn=baiduimagedetail&is=0%2C0&istype=2&ie=utf-8&oe=utf-8&in=&cl=2&lm=-1&st=-1&cs=1680238894%2C752784316&os=1456076808%2C2964036578&simid=4162351635%2C532680339&adpicid=0&lpn=0&ln=1219&fr=&fmq=1462357247335_R&fm=&ic=0&s=undefined&hd=undefined&latest=undefined&copyright=undefined&se=&sme=&tab=0&width=&height=&face=undefined&ist=&jit=&cg=&bdtype=0&oriquery=&objurl=http%3A%2F%2Fb-ssl.duitang.com%2Fuploads%2Fitem%2F201709%2F07%2F20170907142921_VEUnJ.thumb.700_0.jpeg&fromurl=ippr_z2C%24qAzdH3FAzdH3Fn2_z%26e3Bxtvt_z%26e3BgjpAzdH3FtvijAzdH3F14w-mccdmmc_z%26e3Bip4s&gsm=1&rpstart=0&rpnum=0&islist=&querylist=&force=undefined'

browser= webdriver.Chrome(executable_path=r'D:/Automation/chromedriver.exe')

browser.maximize_window()

browser.get(url2)


time.sleep(2)


win32clipboard.OpenClipboard()

win32clipboard.EmptyClipboard()

win32clipboard.SetClipboardText(path)

win32clipboard.CloseClipboard()


img=browser.find_element_by_xpath('')

action = ActionChains(browser).move_to_element(img)

action.context_click(img).perform()

time.sleep(1)

win32api.keybd_event(86,0,0,0)

time.sleep(1)

keyDown('enter')

keyUp('enter')

time.sleep(1)

print('over')

browser.quit()

楼主的代码 运行不过去啊

win32clipboard.SetClipboardText(path) path不知道是什么

img=browser.find_element_by_xpath('') 这里空是非法的XPath表达式


楼主是不是利用浏览器的下载功能下载图片的?


如果是的话 可以在Python运行之前 手动设置一下文件的下载路径

然后下载的文件就到了指定的位置了

浏览器-设置-搜索 下载内容-位置 修改

手动设置弄好了,但是在程序中怎么设置路径,麻烦你写一下path这部分的代码,或者你有其他意见也可以

花都谢了

不会又要加钱吧

你程序里我有些库没有安装 你还是说一下你想干什么吧。

你是想下载打开页面的那个大图片吗?

下面的是下载打开网页大图的代码:


from selenium import webdriver
import time
url2='https://image.baidu.com/search/detail?ct=503316480&z=0&ipn=d&word=%E9%AB%98%E6%B8%85%E5%8A%A8%E6%BC%AB&step_word=&hs=0&pn=1&spn=0&di=49500&pi=0&rn=1&tn=baiduimagedetail&is=0%2C0&istype=2&ie=utf-8&oe=utf-8&in=&cl=2&lm=-1&st=-1&cs=1680238894%2C752784316&os=1456076808%2C2964036578&simid=4162351635%2C532680339&adpicid=0&lpn=0&ln=1219&fr=&fmq=1462357247335_R&fm=&ic=0&s=undefined&hd=undefined&latest=undefined&copyright=undefined&se=&sme=&tab=0&width=&height=&face=undefined&ist=&jit=&cg=&bdtype=0&oriquery=&objurl=http%3A%2F%2Fb-ssl.duitang.com%2Fuploads%2Fitem%2F201709%2F07%2F20170907142921_VEUnJ.thumb.700_0.jpeg&fromurl=ippr_z2C%24qAzdH3FAzdH3Fn2_z%26e3Bxtvt_z%26e3BgjpAzdH3FtvijAzdH3F14w-mccdmmc_z%26e3Bip4s&gsm=1&rpstart=0&rpnum=0&islist=&querylist=&force=undefined'


#browser= webdriver.Chrome(executable_path=r'D:/Automation/chromedriver.exe')
#把你的chromedriver.exe和Chrome.exe放在同一个目录就可以使用下面的代码了
browser= webdriver.Chrome()


browser.maximize_window()


browser.get(url2)






time.sleep(2)




download=browser.find_element_by_css_selector('#toolbar > span.bar-btn.btn-download')


download.click()
#等待5秒 等待文件下载完毕
time.sleep(5)
print('over')


browser.quit()

我来说一下我要干啥:模拟鼠标移至大图右键图片另存为指定地方,

我上面的代码 是把大图下载到Chrome的下载目录的 你可以试试看

我试了一下,图片下到这里了

并没有存到指定位置

具体的位置 是你自己在Chrome下载里设置的

已设

Chrome右上角-设置-搜索 下载内容 然后可以改位置

这个早就设好了,你之前说的时候就改了,现在为什么还是存到c盘

我这里设置的是E盘 然后下载的内容 都到E盘

方便把你的下载设置 截图看看吗


运行我上面的代码了?下载前有窗口弹出吗?

no

没有弹出

from selenium import webdriver
import time
url2='https://image.baidu.com/search/detail?ct=503316480&z=0&ipn=d&word=%E9%AB%98%E6%B8%85%E5%8A%A8%E6%BC%AB&step_word=&hs=0&pn=1&spn=0&di=49500&pi=0&rn=1&tn=baiduimagedetail&is=0%2C0&istype=2&ie=utf-8&oe=utf-8&in=&cl=2&lm=-1&st=-1&cs=1680238894%2C752784316&os=1456076808%2C2964036578&simid=4162351635%2C532680339&adpicid=0&lpn=0&ln=1219&fr=&fmq=1462357247335_R&fm=&ic=0&s=undefined&hd=undefined&latest=undefined&copyright=undefined&se=&sme=&tab=0&width=&height=&face=undefined&ist=&jit=&cg=&bdtype=0&oriquery=&objurl=http%3A%2F%2Fb-ssl.duitang.com%2Fuploads%2Fitem%2F201709%2F07%2F20170907142921_VEUnJ.thumb.700_0.jpeg&fromurl=ippr_z2C%24qAzdH3FAzdH3Fn2_z%26e3Bxtvt_z%26e3BgjpAzdH3FtvijAzdH3F14w-mccdmmc_z%26e3Bip4s&gsm=1&rpstart=0&rpnum=0&islist=&querylist=&force=undefined'




options = webdriver.ChromeOptions()
prefs = {'profile.default_content_settings.popups': 0, 'download.default_directory': 'E:\\'}
options.add_experimental_option('prefs', prefs)
browser = webdriver.Chrome(chrome_options=options)


#browser= webdriver.Chrome(executable_path=r'D:/Automation/chromedriver.exe')
#把你的chromedriver.exe和Chrome.exe放在同一个目录就可以使用下面的代码了
#browser= webdriver.Chrome()


browser.maximize_window()


browser.get(url2)


time.sleep(2)


download=browser.find_element_by_css_selector('#toolbar > span.bar-btn.btn-download')


download.click()
#等待5秒 等待文件下载完毕
time.sleep(5)
print('over')


#browser.quit()

可以了 你试试看

你好,这个的确可以,感谢你的工作,但是回到最初我提的问题,我希望既能存至指定位置,又实现模拟鼠标的功能

在我提问时发布的代码前面添加如下代码:VK_CODE={'enter':0x0D,'down_arrow':0x28}

def keyDown(keyName):

win32api.keybd_event(VK_CODE[keyName],0,0,0)

def keyUp(keyName):

win32api.keybd_event(VK_CODE[keyName],0,win32con.KEYEVENTF_KEYUP,0)


这个程序我测试过,可以实现模拟鼠标右键 图片另存为

结合你刚才用到的知识,把程序完善,


我试试

关于你说的xpath这部分的问题,你可以自行添加,xpath这部分的代码是我删除了的,因为涉及一些敏感内容,不方便发布,

from selenium import webdriver
import time
import win32clipboard
import win32api
import win32con
from selenium.webdriver.common.action_chains import ActionChains




def keyDown(keyName):
    win32api.keybd_event(VK_CODE[keyName],0,0,0)


def keyUp(keyName):
    win32api.keybd_event(VK_CODE[keyName],0,win32con.KEYEVENTF_KEYUP,0)




VK_CODE={'enter':0x0D,'down_arrow':0x28}


url2='https://image.baidu.com/search/detail?ct=503316480&z=0&ipn=d&word=%E9%AB%98%E6%B8%85%E5%8A%A8%E6%BC%AB&step_word=&hs=0&pn=1&spn=0&di=49500&pi=0&rn=1&tn=baiduimagedetail&is=0%2C0&istype=2&ie=utf-8&oe=utf-8&in=&cl=2&lm=-1&st=-1&cs=1680238894%2C752784316&os=1456076808%2C2964036578&simid=4162351635%2C532680339&adpicid=0&lpn=0&ln=1219&fr=&fmq=1462357247335_R&fm=&ic=0&s=undefined&hd=undefined&latest=undefined&copyright=undefined&se=&sme=&tab=0&width=&height=&face=undefined&ist=&jit=&cg=&bdtype=0&oriquery=&objurl=http%3A%2F%2Fb-ssl.duitang.com%2Fuploads%2Fitem%2F201709%2F07%2F20170907142921_VEUnJ.thumb.700_0.jpeg&fromurl=ippr_z2C%24qAzdH3FAzdH3Fn2_z%26e3Bxtvt_z%26e3BgjpAzdH3FtvijAzdH3F14w-mccdmmc_z%26e3Bip4s&gsm=1&rpstart=0&rpnum=0&islist=&querylist=&force=undefined'


#browser= webdriver.Chrome(executable_path=r'D:/Automation/chromedriver.exe')
browser= webdriver.Chrome()
browser.maximize_window()


browser.get(url2)






time.sleep(2)




path='E:\\'
win32clipboard.OpenClipboard()


win32clipboard.EmptyClipboard()


win32clipboard.SetClipboardText(path)


win32clipboard.CloseClipboard()






img=browser.find_element_by_xpath('//*[@id="currentImg"]')


action = ActionChains(browser).move_to_element(img)


action.context_click(img).perform()


time.sleep(1)


win32api.keybd_event(86,0,0,0)


time.sleep(1)


win32api.keybd_event(0x11, 0, 0, 0)
win32api.keybd_event(0x56, 0, 0, 0)
win32api.keybd_event(0x56, 0, win32con.KEYEVENTF_KEYUP, 0)
win32api.keybd_event(0x11, 0, win32con.KEYEVENTF_KEYUP, 0)




win32api.keybd_event(0x0D,0,0,0)


win32api.keybd_event(0x12, 0, 0, 0)
win32api.keybd_event(0x53, 0, 0, 0)
win32api.keybd_event(0x53, 0, win32con.KEYEVENTF_KEYUP, 0)
win32api.keybd_event(0x12, 0, win32con.KEYEVENTF_KEYUP, 0)




keyDown('enter')


keyUp('enter')


time.sleep(1)


print('over')


#browser.quit()

试试吧。我这里测试通过了。

另存为窗口弹出后不会关

并且指向的还是c盘

我上面指向的是E盘 你有E盘吗 改成自己的

虽说有e盘,但e盘空间不足,存不了

非得是e盘,f盘难道不行?

path='E:\\'

代码里有这个 你改成你自己的就行

这个早改了,这句话我已经说了两次了,拜托提点建设性意见

问题是 我这里 一点问题没有啊。。

这道题可以不用selenium做,硬要这么做的话…
1.win32api的所有部分删除
2.遍历所有图片标签,然后获取地址
3.使用urllib.request.urlretrieve函数下载。