python selenium上传图片,python selenium网页上传本地图片

  python selenium上传图片,python selenium网页上传本地图片

  背景

  实现:批量下载联想某型号的所有驱动。

  一般当你是网络爬虫的时候,主要是保存网页信息或者下载单个文件。在批量下载多个文件时,由于下载时间不确定,文件名也不确定,所以比较困难。

  思考

  参数配置

  下载的时候需要配置chromedriver的参数,设置默认下载目录:

  全局基本路径

  profile={

   download.default_directory :基本路径

  }

  chrome_options=webdriver。ChromeOptions()

  chrome _ options . add _ experimental _ option( prefs ,profile)

  driver=webdriver。Chrome(executable_path=./common/chromedriver ,options=chrome_options)

  driver . implicit _ wait(10)

  页面分析

  联想官网各机型的驱动下载页面如上图所示。虽然前面有登录屏蔽,但实际上并不影响点击。请注意:

  驱动列表,需要点击才能显示具体的下载项表单,否则可以找到对应的元素却无法获得正确的信息。

  driver _ list . find _ element _ by _ class _ name( download-center _ list _ t _ icon )。单击()

  建议跳过每个下载列表的标题。

  if _ list . find _ element _ by _ class _ name( download-center _ USB list _ td01 )。text==驱动程序名称:

  继续

  下载处理

  在页面中找到“正常下载”的元素,点击下载。最终的结果是我们想要根据网页列表重命名并重新归档到文件夹,但是我们会发现以下问题:

  下载的文件名不可控。

  反过来,我们也无法确认下载需要多长时间。如果并行下载,重命名无法有效区分。

  我在网上找了很久,下载的时候找不到直接重命名的方法,所以最后选择依次下载,每次下载后重命名存档。想法如下:

  对于每个驱动目录,首先创建一个新的文件夹,比如motherboard。

  单击下载开始下载文件。

  通过os模块,找到下载目录下的所有文件,按照创建时间排序,找到新创建的文件。

  因为未完成文件的后缀是。crdownload(chrome),根据后缀判断下载是否已经完成。如果没有,继续等待。

  下载完成后,将文件重命名并剪切到您开始构建的归档目录中。这里需要注意的是,有些文件名中不能存在/符号,否则重命名会失败,需要替换。

  在后期的测试中,发现还是有几个坑需要注意:

  注意…的处理。DS_Store文件时,寻找新创建的文件。(Mac系统,Windows需要考虑thumbs.db)

  需要确定新创建的文件是否是文件夹,这可以通过过滤功能来处理。

  最新文件的排序和搜索如下:

  def排序文件():

  #排序文件

  目录链接=基本路径

  dir _ lists=list(filter(check _ file,os.listdir(dir_link)))

  如果len(目录列表)==0:

  返回“”

  否则:

  dir _ lists . sort(key=lambda fn:OS . path . getmtime(dir _ link OS . sep fn))

  return os.path.join(基本路径,目录列表[-1])

  定义检查文件(文件名):

  #忽略系统文件

  如果文件名==。 DS_Store 或filename==thumbs.db :

  返回False

  全局基本路径

  #排除文件夹

  返回OS . path . is file(OS . path . join(base _ path,filename))

  摘要

  最终结果如下:

  这就是本文的全部内容。希望对大家的学习有帮助,也希望大家能支持剧本之家。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: