鱼C论坛

 找回密码
 立即注册
查看: 2115|回复: 2

[已解决]有关easygui和爬虫的问题

[复制链接]
发表于 2017-7-23 11:08:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. import easygui as g
  2. import urllib.request

  3. def main():
  4.     msg='请填写喵的尺寸'
  5.     title='下载一只喵'
  6.     fileNames=['宽:','长:']
  7.     fileValues=[]
  8.     size=width,height=400,600
  9.     fileValues=g.multenterbox(msg,title,fileNames,size)  #问题1111111

  10.     while True:
  11.         if fileValues==None:
  12.             break
  13.         errmsg=''


  14.         try:
  15.             width=int(fileValues[0].strip())
  16.         except:
  17.             errmsg+='宽度必须为整数。'


  18.         try:
  19.             height=int(fileValues[1].strip())
  20.         except:
  21.             errmsg+='长度必须为整数'

  22.         if errmsg=='':
  23.              break


  24.         fileValues=g.multenterbox(errmsg,title,fileNames,fileValues)  #问题222222

  25.     url ='http://placekitten.com/g/%d/%d' %(width,height)

  26.     respone=urllib.request.urlopen(url)
  27.     cat_img=respone.read()

  28.     filepath=g.diropenbox('请选择存放喵的文件夹')     # 问题33333

  29.     if filepath:
  30.         filename='%s/cat_%d_%d.jpg' % (filepath,width,height)
  31.     else:
  32.         filename='cat_%d_%d.jpg' % (width,height)

  33.     with open (filename,'wb') as f:
  34.         f.write(cat_img)

  35. if __name__=='__main__':
  36.     main()
复制代码


这个是小甲鱼老师在54讲课后习题中的答案,照着打一遍又理解了好多遍,然后就是


(1)问题11111那里,fileValues是弄成了列表,如果要访问fileValues的数据的话用fileValues[0]能访问到吗,我自己试了一下发现不行。


(2)问题2222那里,fileValues=g.multenterbox(errmsg,title,fileNames,fileValues)这行代码里面,g.multenterbox里面最后一个参数fileValues是什么意思,小甲鱼老师的easygui学习文档里面似乎也没有提及。


(3)问题33333,不知道下载的数据是怎么转化的,就是cat_img实例对象里面就是url路径,怎么会用f.write弄成了图片的形式。在if语句里面,%S这个代码不知道是干嘛用的,好像弄出来的文件命名还是一样的是cat_width_height.


可能问题一次性有点多,基础不好只能多问好找出自己的缺陷然后努力去填补了。 再次感谢大佬们以往的细心的无私的回答!!
最佳答案
2017-7-23 13:19:01
本帖最后由 和vvv 于 2017-7-23 13:51 编辑
(1)可以访问fileValues里面的值(前提是必须要输入宽和高,可以采用默认的)。里面存储的是宽和长。
  1. msg='请填写喵的尺寸'
  2.     title='下载一只喵'
  3.     fileNames=['宽:','长:']
  4.     fileValues=[]
  5.     size=width,height=400,600
  6.     fileValues=g.multenterbox(msg,title,fileNames,size)  #问题1111111
  7.     print(fileValues)
  8.     print(fileValues[0])
复制代码

结果:
  1. ['400', '600']
  2. 400
复制代码


(2)fileValues=g.multenterbox(errmsg,title,fileNames,fileValues)这行代码里面,g.multenterbox里面最后一个参数fileValues就是输入的值。这里采用的是开头声明的默认值(400,600)。小甲鱼的文档里面是有说明的。 1.png

(3)cat_img=respone.read()是读取抓取的图片数据。将其保存到本地,使用write方法以二进制(wb)的形式写入。%s就是格式化字符串。可以看看小甲鱼的:http://bbs.fishc.com/thread-40789-1-1.html
至于所保存的文件名问题,因为是Windows系统的缘故:
无标题.png

而其他操作系统没试过。因此
  1. if filepath:
  2.         filename='%s/cat_%d_%d.jpg' % (filepath,width,height)
复制代码
执行之后filename的值为F:\cat_400_600.jpg。在Windows下保存会直接成为cat_400_600.jpg。所以,文件名为什么没有带路径。
希望对你有所帮助。




小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-7-23 13:19:01 | 显示全部楼层    本楼为最佳答案   
本帖最后由 和vvv 于 2017-7-23 13:51 编辑
(1)可以访问fileValues里面的值(前提是必须要输入宽和高,可以采用默认的)。里面存储的是宽和长。
  1. msg='请填写喵的尺寸'
  2.     title='下载一只喵'
  3.     fileNames=['宽:','长:']
  4.     fileValues=[]
  5.     size=width,height=400,600
  6.     fileValues=g.multenterbox(msg,title,fileNames,size)  #问题1111111
  7.     print(fileValues)
  8.     print(fileValues[0])
复制代码

结果:
  1. ['400', '600']
  2. 400
复制代码


(2)fileValues=g.multenterbox(errmsg,title,fileNames,fileValues)这行代码里面,g.multenterbox里面最后一个参数fileValues就是输入的值。这里采用的是开头声明的默认值(400,600)。小甲鱼的文档里面是有说明的。 1.png

(3)cat_img=respone.read()是读取抓取的图片数据。将其保存到本地,使用write方法以二进制(wb)的形式写入。%s就是格式化字符串。可以看看小甲鱼的:http://bbs.fishc.com/thread-40789-1-1.html
至于所保存的文件名问题,因为是Windows系统的缘故:
无标题.png

而其他操作系统没试过。因此
  1. if filepath:
  2.         filename='%s/cat_%d_%d.jpg' % (filepath,width,height)
复制代码
执行之后filename的值为F:\cat_400_600.jpg。在Windows下保存会直接成为cat_400_600.jpg。所以,文件名为什么没有带路径。
希望对你有所帮助。




小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-23 21:05:20 | 显示全部楼层
和vvv 发表于 2017-7-23 13:19
本帖最后由 和vvv 于 2017-7-23 13:51 编辑
(1)可以访问fileValues里面的值(前提是必须要输入宽和高, ...

谢谢谢!!!理解啦!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-28 22:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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