目标:

  1. 抓取豆瓣电影TOP250,名次,电影名称,海报图片
  2. 把图片保存在当前目录下的 douban_top_250 文件夹下
  3. 保存一份排名txt,和一份json格式的txt
  4. 打包成 win 下可运行的 exe 文件

使用了哪些第三方库?

  1. 首先使用了唯一的一个非转基因的 Python HTTP 库 Requests。中文文档地址:http://docs.python-requests.org/zh_CN/latest/
  2. 然后使用了一个可以从HTML或XML文件中提取数据的Python库 BeautifulSoup。中文文档地址:http://beautifulsoup.readthedocs.io/zh_CN/v4.4.0/#

如何打包成 exe 文件?

  1. 使用了 pyinstaller
  2. 安装方法:
  3. 使用方法:在 win 下,首先进入这个 py 文件下的目录,按住 Shift 键,然后点击鼠标右键,然后点击 ‘在此处打开命令行窗口’,然后在 cmd 使用如下命令打包 exe :
  4. 然后,过一会,出现 completed successfully,即可在当前目录下的 dist 文件下找到 douban.exe 文件

遇到了什么问题?

  1. 下载保存图片用哪种方式比较好?
    1. 读取图片的二进制,然后保存为文件是一种方法;
    2. 我使用第二种方法, urllib.request.urlretrieve 来下载保存图片
  2. 写入文件用哪种方式比较好?

    执行完自动close,避免忘记关闭文件导致资源的占用。
  3. 保存 json 格式文本时,打开,发现里面是乱码的情况?

    这是因为 json.dumps 编码序列化时对中文默认使用的是 ascii 编码,想输出真正的中文需要指定 ensure_ascii=False
  4. 在 win 下运行 douban.exe 后,发现图片保存的路径不正确?
    1. 打包为 exe 文件之后,使用os.getcwd() 来获取运行的目录,但是运行之后却发现,保存的 douban_top_250 文件夹却在 C:\Windows\SysWOW64 下面,并没有在当前 exe 运行的目录下
    2. 如何获取当前运行脚本的路径?打包成exe的脚本和直接运行地脚本在获取路径上稍微有点不同。

       

完整代码: