「已注销」 2020-07-27 09:05 采纳率: 76.9%
浏览 52
已采纳

如何实现更改存储路径并点击保存

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'C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe')

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')

  • 写回答

48条回答 默认 最新

  • 「已注销」 2020-07-27 10:51
    关注
    直接用现成的不想吗...
    https://www.jianshu.com/p/ade4c6fc9c55
    代码有些错误,改了一下
    
    import requests
    import re
    import time
    import os
    import urllib.parse
    from lxml import html
    import json
    page_num=30
    photo_dir=r"F:\Documents\Python"    # 设置目录
    
    
    
    etree = html.etree
    def getDetailImage(word):
        num=0
        url = "https://image.baidu.com/search/acjson?tn=resultjson_com&ipn=rj&ct=201326592&is=&fp=result&queryWord={0}&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=-1&z=&ic=&hd=&latest=&copyright=&word={0}&s=&se=&tab=&width=&height=&face=0&istype=2&qc=&nc=1&fr=&expermode=&force=&pn={1}&rn="+str(page_num)+"&gsm=1e&1552975216767="
        while num<50:
    
    
            page_url=url.format(urllib.parse.quote(word),num*page_num)
            print(page_url)
            response=requests.get(page_url)
           
            regex = re.compile(r'\\(?![/u"])')
            json_data=json.loads(regex.sub(r"\\\\", response.text))#问题在于编码中是\xa0之类的,当遇到有些 不用转义的\http之类的,则会出现以上错误
            for item in json_data['data']:
                params={
                    "word":word,
                    "di":item['di'],
                    "tn":"baiduimagedetail",
                    "cs":item['cs'],
                    "os":item['os'],
                }
                detail_url="http://image.baidu.com/search/detail"
                response=requests.get(detail_url,params=params)
                selector = etree.HTML(response.text)
                pic_url=selector.xpath("//img[@id='hdFirstImgObj']/@src")[0]
                print(pic_url)
                name=pic_url.split('/')[-1]
                headers={
                    "Referer":page_url,
                }
            
                html=requests.get(pic_url,headers=headers)
                with open(os.path.join(word_dir,name[-8:]),'wb')as f:
                    f.write(html.content)
                
            num=num+1
            
    
    
    if __name__ == "__main__":
        word = input("请输入搜索关键词(可以是人名,地名等): ")
        word_dir=os.path.join(photo_dir,word)
        if not os.path.exists(word_dir):
            os.mkdir(word_dir)
        getDetailImage(word)
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(47条)

报告相同问题?

问题事件

  • 已采纳回答 10月14日

悬赏问题

  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 AT89C51控制8位八段数码管显示时钟。
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题