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©right=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©right=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©right=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©right=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函数下载。