dataabc / weiboSpider

新浪微博爬虫,用python爬取新浪微博数据
8.37k stars 1.98k forks source link

--config_path无法识别含空格的路径 #185

Closed gudaocode closed 4 years ago

gudaocode commented 4 years ago

为了更好的解决问题,请认真回答下面的问题。等到问题解决,请及时关闭本issue。

dataabc commented 4 years ago

感谢反馈。

如果以--config_path设置路径且路径中包含空格,在路径外添加双引号就可以了

gudaocode commented 4 years ago

成功了!多谢! 但是--user_id_list能配置到非软件目录下吗?看spider文件好像也可以自定义的啊 命令: --user_id_list="X:\Program Files\Pic_Follow\各软件配置文件\Weibo_user_id_list.txt" 提示: 不存在X:\Program Files\Pic_Follow_Download_WeiBo\user_id_list.txt文件

提示中Pic_Follow_Download_WeiBo的路径是软件放置的位置 不是我在命令中输入的路径

gudaocode commented 4 years ago

是不是我在config.json中写的是: "user_id_list": "user_id_list.txt", 是需要修改这个吗?

dataabc commented 4 years ago

config.json中的user_id_list和命令行中的是同一个路径,如果都设置程序会优先使用命令行中的路径,但是程序会检查所有的路径文件是否存在,可能是你的X:\Program Files\Pic_Follow_Download_WeiBo\user_id_list.txt不存在,即你在config.json设置了一个不存在的文件。可以只写一个路径,比如把config.json中user_id_list设为[],在命令行中输入路径或者反过来,这样就可以了。

gudaocode commented 4 years ago

还是不行,提示为: 没有配置有效的user_id,请通过config.json或user_id_list.txt配置user_id

设置为: config.json: "user_id_list": [], 运行命令为: python -m weibo_spider --config_path="X:\Program Files\Pic_Follow\各软件配置文件\Weibo_config.json" --user_id_list="X:\Program Files\Pic_Follow\各软件配置文件\user_id_list.txt"

路径是没问题的,因为config_path用的是同一个路径,如果把后面user_id有关内容删除,可以正常运行 user_id_list.txt文件也没问题,刚才把这个放在程序目录下也可以正常运行 看了半天代码,业余,没看出有啥问题,这是啥情况呢??

dataabc commented 4 years ago

这个提示是说,程序中没有设置有效的user_id。

我还是觉得是X:\Program Files\Pic_Follow\各软件配置文件\Weibo_config.json有问题,因为如果它的user_id_list为[],且命令行中删除user_id_list相关的,也是会出现这个提示的,但是上面说可以正确运行。所以,是不是有多个config.json,搞混了?

gudaocode commented 4 years ago

config.json肯定是只有一个,而且为了避免错误,我是重新下载了软件,把原来的东西清空了的。 事实上,之所以想把config.json和user_id_list放到另外一个文件夹,就是为了您这边软甲能调整时,升级方便(按照我这样,就可以每次都直接把软件文件夹清空,然后解压缩新的进去就行了。 提示的含义理解,说的是没有可以下载的id,那么意味着软件读取的依旧是config.json里面指定的[],也就是空。而没有读取我指定的user_id_list.txt文件。

代码是: user_id_list = config["user_id_list"] if not isinstance(user_id_list, list): if FLAGS.user_id_list is not None: user_id_list = FLAGS.user_id_list 这里的第一条含义是否是从config里面取值,而FLAGS.user_id_list由于缩进,比前面的优先级低?编程很业余,不知道理解的是否正确,仅供参考

dataabc commented 4 years ago

代码的意思是先读config.json中的user_id_list,如果命令行中有--user_id_list,就把前面的覆盖了,如果命令行中有--u同样覆盖前面的,因此优先级从高到低是:--u、--user_id_list、config.json中的user_id_list。上面命令行有user_id_list,就覆盖了[],读的是user_id_list.txt中的user_id,如果里面没有有效id,就会提示:没有配置有效的user_id,请通过config.json或user_id_list.txt配置user_id

gudaocode commented 4 years ago

我看到软件更新了,重新下载,还是不行,麻烦您方便时,测试一下吧。

dataabc commented 4 years ago

我测试过,没有出错。

当config.json中的user_id_list值为[]时, 不使用--user_id_list即运行如下命令:

$ python3 -m weibo_spider

没有出现“没有配置有效的user_id,请通过config.json或user_id_list.txt配置user_id”提示吗?你上面的意思应该是没有出现,但事实上,这样会出现提示。而加上--user_id_list,你上面的意思是出现“没有配置有效的user_id,请通过config.json或user_id_list.txt配置user_id”,这样很奇怪。只有一种情况可以说得通,就是config.json的user_id_list是包含user_id的列表而不是[],所以正常运行,而在命令行加上--user_id_list后,"X:\Program Files\Pic_Follow\各软件配置文件\user_id_list.txt"不包含有效的user_id,--user_id_list的优先级比列表高,覆盖了config.json中的use_id列表,所以才出现“没有配置有效的user_id,请通过config.json或user_id_list.txt配置user_id”。

如果还是出现这个问题,如果你方便,可以留下qq或其它联系方式,我加你好友。

gudaocode commented 4 years ago

不知道为什么,好用了,感觉和之前的设置完全一样的,汗…… 感谢耐心讲解!