EasySpider icon indicating copy to clipboard operation
EasySpider copied to clipboard

代码方面建议及问题若干

Open yfdyh000 opened this issue 1 year ago • 16 comments

续#25。构建代码方面。

  • [x] 1. [建议] 打包的EasySpider_0.3.0_Beta_windows_amd64.7z中,Chrome的Installer大概是不需要的,压缩包能节省100MB。
  • [ ] 2. [建议] 构建流程有点散乱和复杂,虽然有几份自述,但还是不太懂。
  • [x] 3. [建议] 建议加一个npm run start_direct的.cmd文件。
  • [x] 4. [问题] start_direct后,点击启动任务会报错,不确定放错了什么。或者是否不打包就不能运行,缺少相关结构。
  • [ ] 5. [建议] 为VSCode调试命令定义任务文件。
  • [ ] 6. [建议] Chrome及chromedriver的下载和环境检查,建议脚本化,至少向导脚本。
  • [x] 7. [疑问] https://chromedriver.storage.googleapis.com/index.html?path=113.0.5672.63/ 只提供win32,不确定是否可以及如何用。
  • [x] 8. [问题] package_*.cmd有一行没用%temp%
  • [x] 9. [疑问] ElectronJS/package_win32.cmd不需要检测UAC吗。不确定为什么检测。
  • [x] 10. [问题] clean bat多处rmdir/s丢失空格。
  • [x] [疑问] 不确定作用,clean为什么还move文件。
  • [ ] [建议] 32和64位bat是否能合二为一。是否该写成python或nodejs脚本,既然依赖其环境。
  • [x] 11. [问题] out输出的tasks目录是空的,是否脚本流程未覆盖。
  • [x] 12. [疑问] EasySpider\ElectronJS\out\EasySpider-win32-x64目录名令人困惑。
  • [ ] 13. [建议] 提供功能及环境自检界面。如Chrome和chromedriver等文件是否备好、版本号,要使用OCR识别功能,你需要安装Tesseract-OCR并将其添加到环境变量PATH中等。
  • [x] 14. [疑问] electron-forge make后的文件,是一个自动安装的安装包吗。EasySpider-0.3.0-full.nupkg又是做什么。
  • [x] 15. [问题] EasySpider-0.3.0 Setup.exe 自动安装期间似乎该程序被启动多次,卸载时似乎程序会被启动。
  • [x] 16. [建议] ElectronJS\package.json "license": "CC0-1.0", 疑似有误。
  • [x] 17. [建议] 无需自带vs_BuildTools.exe,提供 https://aka.ms/vs/15/release/vs_buildtools.exe
  • [x] 18. [疑问] 步骤中的npm install @electron-forge/cli能否省略,package.json中定义不够吗。
  • [x] 19. [建议] optional: npm run make没解释作用。Package Instruction与For windows x64的打包指令存在重叠。
  • [x] 20. [疑问] EasySpider.bat只是启动exe,好像不太有用。
  • [x] 21. [疑问] 25KB EasySpider.exe的构建方法是否已开源。

界面方面:

  • [ ] 1. [低优先级] 记住语言和语言切换。
  • [x] 2. 任务列表 URL栏不够宽。
  • [x] 3. [建议] 个人倾向URL均称“网址”。
  • [x] 4. 任务列表 页面,看到双重的垂直滚动条。大概垂直分辨率相关。
  • [x] 5. 任务信息 页面,左边距明显大于右边距,并产生水平滚动条。大概分辨率相关。
  • [x] 6. 任务流程修改 页面缺少右边距。或许垂直滚动条占位了。
  • [x] 7. tasks目录中的文件序号,与任务列表的ID(实则序号)似乎是不对应的,可能误导、误覆盖等。可以考虑不用数字作文件名,选一种类似UUID的方案?
  • [x] 8. EasySpider_0.3.0_Beta中的任务文件,中文是直接写的。git库中的,是\u形式。后者不容易查找。
  • [ ] 9. [低优先级] 任务文件json,如果有手动查看和编辑的预期,自带缩进也许会好一些。体积和处理复杂度会轻微增加。
  • [x] 10. 任务文件中节点的nodeName,也许不利于跨语言交流和交换。是否考虑未修改的步骤名称被允许或默认留空。例如“Bilibili粉丝”任务,修改任务流程,看到的是"Open Page" "Loop"等英文步骤。

yfdyh000 avatar May 21 '23 06:05 yfdyh000

先回答一下马上就能回答的问题,至于代码相关的修改和重构的问题,最近科研任务繁重,可能需要慢慢来改了,感谢认真审查代码!

[建议] 打包的EasySpider_0.3.0_Beta_windows_amd64.7z中,Chrome的Installer大概是不需要的,压缩包能节省100MB。

OK

[建议] 构建流程有点散乱和复杂,虽然有几份自述,但还是不太懂。 以后做

[建议] 建议加一个npm run start_direct的.cmd文件。

OK

[问题] start_direct后,点击启动任务会报错,不确定放错了什么。或者是否不打包就不能运行,缺少相关结构。

少了chrome_64文件夹内的execute.bat文件,没写到自述里是我的问题。

[建议] 为VSCode调试命令定义任务文件。

我使用的是WebStorm,没用VSCode,可以考虑以后做。

[建议] Chrome及chromedriver的下载和环境检查,建议脚本化,至少向导脚本。

以后做

[疑问] https://chromedriver.storage.googleapis.com/index.html?path=113.0.5672.63/ 只提供win32,不确定是否可以及如何用。 chromedriver 32位和64位通用。

[问题] package_*.cmd有一行没用%temp% 请指定哪一行,这个是从网上拷贝过来的,目的是启动管理员权限删除C盘生成的临时文件。

[疑问] ElectronJS/package_win32.cmd不需要检测UAC吗。不确定为什么检测。 只是因为我的win64环境需要手动删除C盘生成的临时文件不然会提示权限有误,而win32环境不需要手动删除所以没检测UAC,因为只是限制于我自己的环境,所以这些代码有点乱。

[问题] clean bat多处rmdir/s丢失空格。 空格已修正。

[疑问] 不确定作用,clean为什么还move文件。 move文件是将打包后的文件移动到../Releases/文件夹内,clean指的是清理环境并发布,命名有点不规范。

[建议] 32和64位bat是否能合二为一。是否该写成python或nodejs脚本,既然依赖其环境。 以后做

[问题] out输出的tasks目录是空的,是否脚本流程未覆盖。 被clean.cmd删掉了。

[疑问] EasySpider\ElectronJS\out\EasySpider-win32-x64目录名令人困惑。 这是Electronjs的cli工具自己生成的名称,64位就叫这个名字。

[建议] 提供功能及环境自检界面。如Chrome和chromedriver等文件是否备好、版本号,要使用OCR识别功能,你需要安装Tesseract-OCR并将其添加到环境变量PATH中等。 以后做。

[疑问] electron-forge make后的文件,是一个自动安装的安装包吗。EasySpider-0.3.0-full.nupkg又是做什么。 是自动安装的安装包,nupkg等文件的作用建议查看electronjs cli工具的打包说明。

[问题] EasySpider-0.3.0 Setup.exe 自动安装期间似乎该程序被启动多次,卸载时似乎程序会被启动。

我的打包程序本身不需要setup,如果是setup的chrome那是chrome的问题,如果是make之后的setup,我自己其实从来没有make过,因为package之后就可以直接用,不需要再生成setup了。

[建议] ElectronJS\package.json "license": "CC0-1.0", 疑似有误。 已修正。

[建议] 无需自带vs_BuildTools.exe,提供 https://aka.ms/vs/15/release/vs_buildtools.exe OK

[疑问] 步骤中的npm install @electron-forge/cli能否省略,package.json中定义不够吗。 应该写成npm install @electron-forge/cli -g,因为这个是全局的包。

[建议] optional: npm run make没解释作用。Package Instruction与For windows x64的打包指令存在重叠。 上面提到make其实不需要。Package Instruction与For windows x64的打包指令是存在重叠,想在windows上Package直接执行For windows x64就可以了,如果是linux和mac需要使用Instruction。

[疑问] EasySpider.bat只是启动exe,好像不太有用。 功能是打开当前目录下easyspider文件夹内的easyspider.exe 因为easyspider文件夹里面的东西特别多,所以专门在外面包装了一层。这个东西的作用和25KB的EasySpider.exe作用完全相同,只不过这个25KB的exe有时会被windows defender报病毒,所以写了一个.bat作为替代品。

[疑问] 25KB EasySpider.exe的构建方法是否已开源。 其功能和EasySpider.bat一样,是一个只有一行代码的引导程序,目的是打开当前目录下easyspider文件夹内的easyspider.exe 因为easyspider文件夹里面的东西特别多,所以专门在外面包装了一层,只不过打包成了exe。

界面方面的建议需要一段时间慢慢改,就不一一回答了。

[低优先级] 记住语言和语言切换。

任务列表 URL栏不够宽。

[建议] 个人倾向URL均称“网址”。

任务列表 页面,看到双重的垂直滚动条。大概垂直分辨率相关。

任务信息 页面,左边距明显大于右边距,并产生水平滚动条。大概分辨率相关。

任务流程修改 页面缺少右边距。或许垂直滚动条占位了。

tasks目录中的文件序号,与任务列表的ID(实则序号)似乎是不对应的,可能误导、误覆盖等。可以考虑不用数字作文件名,选一种类似UUID的方案?

任务列表是按照修改时间排序的,和tasks文件的序号无关。

EasySpider_0.3.0_Beta中的任务文件,中文是直接写的。git库中的,是\u形式。后者不容易查找。

新版本已经不会有这个问题,需要修改下文件内容了。

[低优先级] 任务文件json,如果有手动查看和编辑的预期,自带缩进也许会好一些。体积和处理复杂度会轻微增加。

任务文件中节点的nodeName,也许不利于跨语言交流和交换。是否考虑未修改的步骤名称被允许或默认留空。例如“Bilibili粉丝”任务,修改任务流程,看到的是"Open Page" "Loop"等英文步骤。

这个主要是英文设计任务之后中文打开才会出现的问题,一般人应该也不会这么做。

代码写的确实乱,当时只是想出个demo所以没有特别规范,没想到真的有朋友认真看代码,真的十分感谢!

NaiboWang avatar May 21 '23 07:05 NaiboWang

请指定哪一行,这个是从网上拷贝过来的,目的是启动管理员权限删除C盘生成的临时文件。

package_win64.cmd 的 rmdir /s /q C:\Users\q9823\AppData\Local\Temp\electron-packager

只是因为我的win64环境需要手动删除C盘生成的临时文件不然会提示权限有误

感觉不应该……是被占用了吗,或者文件夹权限不对。

其他问题我会再慢慢看。

任务列表是按照修改时间排序的,和tasks文件的序号无关。

那么目前界面有点误导。ID改成序号/No.?还是建议任务文件名格式再考虑一下。

这个主要是英文设计任务之后中文打开才会出现的问题,一般人应该也不会这么做。

考虑到外国贡献者可能要查看如自带的中文的任务,以及中外互相分享任务用于调试和参考。会不利于查看,增加翻译/汉化的步骤。代码中的中文注释也是如此,后期需要考虑怎么处理。

代码写的确实乱,当时只是想出个demo所以没有特别规范,没想到真的有朋友认真看代码,真的十分感谢!

有需求并且感兴趣。看到代码在快速发展,所以先提上来,考虑到我自己改会代码冲突和重复作业(已发生一点点),以及构建和使用过程尚未理顺。

"name": "urlList_0" 作“打开页面”目的是否不是很明确。 任务文件内加上版本号字段也许会利于后续的格式变更。以及/或者如所需最低软件版本。

yfdyh000 avatar May 21 '23 08:05 yfdyh000

请指定哪一行,这个是从网上拷贝过来的,目的是启动管理员权限删除C盘生成的临时文件。

package_win64.cmd 的 rmdir /s /q C:\Users\q9823\AppData\Local\Temp\electron-packager

只是因为我的win64环境需要手动删除C盘生成的临时文件不然会提示权限有误

感觉不应该……是被占用了吗,或者文件夹权限不对。

其他问题我会再慢慢看。

任务列表是按照修改时间排序的,和tasks文件的序号无关。

那么目前界面有点误导。ID改成序号/No.?还是建议任务文件名格式再考虑一下。

这个主要是英文设计任务之后中文打开才会出现的问题,一般人应该也不会这么做。

考虑到外国贡献者可能要查看如自带的中文的任务,以及中外互相分享任务用于调试和参考。会不利于查看,增加翻译/汉化的步骤。代码中的中文注释也是如此,后期需要考虑怎么处理。

代码写的确实乱,当时只是想出个demo所以没有特别规范,没想到真的有朋友认真看代码,真的十分感谢!

有需求并且感兴趣。看到代码在快速发展,所以先提上来,考虑到我自己改会代码冲突和重复作业(已发生一点点),以及构建和使用过程尚未理顺。

"name": "urlList_0" 作“打开页面”目的是否不是很明确。 任务文件内加上版本号字段也许会利于后续的格式变更。以及/或者如所需最低软件版本。

文件夹权限问题也许是我的特定问题,不一定会发生在其他人的PC上。 界面问题会慢慢改。 代码中的中文注释太多了,全改一遍我觉得任务量有点大=_= 而且这样很多国内不太懂英语的朋友可能调试起来有点困难…… "name": "urlList_0" 作“打开页面”目的是如果设计了一个流程,有多少个页面需要采集就可以写多少行,整个流程就会执行多少次。比如:

https://www.google.com/search?q=1
https://www.google.com/search?q=2
https://www.google.com/search?q=3
https://www.google.com/search?q=4

那么整个流程就会执行四次,分别进入以上四个页面。

NaiboWang avatar May 21 '23 08:05 NaiboWang

代码中的中文注释太多了,全改一遍我觉得任务量有点大=_= 而且这样很多国内不太懂英语的朋友可能调试起来有点困难……

理解,但如果有打算吸引海外开发者,中文注释或许成为一个障碍……如果没想那么远可以先维持现状。

运行6.json({"id": 6, "name": "toutiao_authors", )显示如下错误。是规则容错不足吗。以及语境不同id不一致着实……

Loading stealth.min.js id: 4 saveName: task_4_261304731 remote name: toutiao_authors

-------Retrying-------

Traceback (most recent call last): File "easyspider_executestage.py", line 281, in loopExcute File "easyspider_executestage.py", line 185, in executeNode File "easyspider_executestage.py", line 318, in loopExcute File "easyspider_executestage.py", line 176, in executeNode File "easyspider_executestage.py", line 662, in getData KeyError: 'beforeJS'

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "easyspider_executestage.py", line 1034, in File "easyspider_executestage.py", line 167, in executeNode File "easyspider_executestage.py", line 185, in executeNode File "easyspider_executestage.py", line 303, in loopExcute File "easyspider_executestage.py", line 185, in executeNode File "easyspider_executestage.py", line 318, in loopExcute File "easyspider_executestage.py", line 176, in executeNode File "easyspider_executestage.py", line 662, in getData KeyError: 'beforeJS' [8576] Failed to execute script 'easyspider_executestage' due to unhandled exception!

yfdyh000 avatar May 21 '23 12:05 yfdyh000

id已经修改为No.,6.json是0.2.0生成的任务,v0.3.0 Beta版没有处理兼容性问题所以运行不了,我在Release时候已经删掉了这些旧文件,代码里留着只是为了备份用,现在已经在json文件里写了版本号以用来解决兼容性问题。

NaiboWang avatar May 21 '23 12:05 NaiboWang

懂了,我是从ElectronJS/tasks目录复制的,以为那是存储库。 Releases各平台的tasks怎么不一样,该以哪里为基准/来源。

config.json初始带有absolute_user_data_folder,是否有问题。

yfdyh000 avatar May 21 '23 12:05 yfdyh000

Releases 0.3.0目前只有一个Windows x64 Beta版本,如果指的是0.2.0各个版本的tasks文件夹,那么是通用的没区别。 absolute_user_data_folder是运行的时候动态修改的,所以没问题。

NaiboWang avatar May 21 '23 12:05 NaiboWang

如果能提供数据库设计操作接口就更好了,当然也可以读取excel文件写入数据库,赞作者,项目做的好

dade68 avatar May 22 '23 13:05 dade68

想问下数据采集完,存储在哪了?

haobarry avatar May 28 '23 05:05 haobarry

想问下数据采集完,存储在哪了?

Data文件夹内,请看完B站教程,很多问题都有解答。

NaiboWang avatar May 28 '23 05:05 NaiboWang

@NaiboWang 你好,我看了一下 package.json 发现没有用比较流行的响应式框架来构建UI,想问一下为什么。 另外,那么多可以创建C端的工具,为什么选Electron,将来会不会考虑用别的语言或框架重构?

leocxy avatar May 31 '23 00:05 leocxy

@NaiboWang 哈哈,我错了,看到 ElectronJS/src/js/vue.global.js 了。 从规范的角度来说,我建议作者把用到的库都放到package.json 里面,由包管理工具统一管理,这样需要升级或者更换的时候会更简单。 另外,我看到作者在项目中使用了jQuery。从性能的方面来说,我觉得完全可以用Vanilla JS来代替jQuery。

leocxy avatar May 31 '23 01:05 leocxy

@NaiboWang 哈哈,我错了,看到 ElectronJS/src/js/vue.global.js 了。 从规范的角度来说,我建议作者把用到的库都放到package.json 里面,由包管理工具统一管理,这样需要升级或者更换的时候会更简单。 另外,我看到作者在项目中使用了jQuery。从性能的方面来说,我觉得完全可以用Vanilla JS来代替jQuery。

谢谢建议,3年前写这几个前端页面的时候没想过以后会越来越复杂所有没用包管理器,不过以后为了代码规范化会考虑。 Vanilla JS我之前没接触过,jQuery用的也不多,可以以后研究下。

NaiboWang avatar May 31 '23 03:05 NaiboWang

@NaiboWang

你好,我看了一下 package.json 发现没有用比较流行的响应式框架来构建UI,想问一下为什么。

另外,那么多可以创建C端的工具,为什么选Electron,将来会不会考虑用别的语言或框架重构?

用Electron是为了跨平台所有操作系统通用,暂时不考虑换,除非有更好的跨平台框架。

NaiboWang avatar May 31 '23 06:05 NaiboWang

我觉得需要用正则表达,让爬的内容更加符合需求

bracerchoose avatar Jun 29 '23 13:06 bracerchoose

我觉得需要用正则表达,让爬的内容更加符合需求

软件支持JavaScript,可以直接写JS命令来替换文本内容。

NaiboWang avatar Jun 29 '23 14:06 NaiboWang

如果能提供数据库设计操作接口就更好了,当然也可以读取excel文件写入数据库,赞作者,项目做的好

导入MySQL数据库功能的版本已发布,欢迎使用。

NaiboWang avatar Jul 08 '23 18:07 NaiboWang