多线程爬虫在linux下保存路径错误

日期

2018-6-22

问题

之前基于python写了一个多线程爬取图片的爬虫代码,爬取图片都保存在output文件夹里,输出目录不存在时会创建目录。代码在win10系统下执行正常,但在linux系统下,文件直接保存在了代码根目录,output为空

微信图片_20180622103003

1529634662211

原因

代码拼接根目录和数据目录时采用+"//"+,,liunx目录不支持双斜杠

修复

linux目录为单斜杠+"\"+,并且这种方式windows兼容

解决时间

安装linux双系统(2h),解决问题(5min)

教训

虽然用windows写的,应该考虑到linux的开发环境,使得自己的代码支持跨平台
以后目录拼接均用单斜杠

其他

1 爬取内容的保存
基于requests库发起请求并保存响应内容;或者直接用urllib.request.urlretrieve()将远程内容保存到本地
我采用了方法一,代码如下:(下图的content即是上图的html)1529635964157

1529637195810

1529634951191

2 爬虫保存图片形式

  • windows平台下必须以二进制形式保存,即open函数参数为’wb’,如果只是’w’参数,图片如下
    https___avatar.csdn.net_E_4_E_3_ababybear
  • linux中,忽略b参数,图片形式正常

3 linux文件的颜色与类型
绿色:可执行文件
蓝色:目录
红色:压缩包
白色:一般性文件,例文本文件,配置文件,源码文件
黄色:设备
浅蓝色:链接文件
灰色:其他