0574b69b9d3d65e5.jpg

a0507658

GF  2021-03-03 14:42
(为什么显示的是我的数字ID _(:з」∠)_)

问下python大佬之前论坛里那个爬虫py文件的使用方法

原贴

压缩包southplus下载下来应该是5个html和一个daily_updates.py文件
小弟这里有点问题,希望已经起飞的大佬给点指示

1 我电脑上装了anaconda和python官网的python3.7, 官网的python3.7由于已经添加到系统的环境变量里,所以cmd python是可以看到python的版本号的。 但是原贴中keoki大佬写的爬虫中,有些依赖包在anaconda自带的pycharm中查看是没有加载出来的,大佬的依赖有:
from lxml import etree
import re
import asyncio
import aiohttp
import jinja2
import shelve
from pprint import pprint
import sys
import os
于是我在pycharm中手动添加了阿里镜像的etree,

我理解 anaconda的python和我自己下载的python应该用的不是同一个lib,所以我在cmd里添加的官网python3.7如何使用到anaconda里面python的库里的依赖呢?还是说这俩其实实际上用的是同一个库?

2 大佬keoki原来的py文件中,353行中 if (sub_list := subs_dict.get(platform)):这里的代码报错,说:= 不是合法的判断语法而报错,这里我按照自己的理解手动改成了 if (sub_list == subs_dict.get(platform)): 然后提示name 'sub_list' is not defined
我在原帖里问了keoki大佬,大佬说要传参,大佬原话是:
“python daily_updates.py cunhua
你没有传命令行参数。

cunhua 或者 2048 或者其他平台,作为第一个参数在运行脚本的时候传入,其他不用动。”

于是我在cmd里手动切换到了 southplus目录下 执行了python daily_updates.py cunhua
然后是同样的问题NameError: name 'sub_list' is not defined

所以这里这个sub_list没有定义是依赖的问题(cmd里的python用不到anaconda里下载的包?),还是我执行命令的格式不对?


写的比较啰嗦,大佬见谅,如果有已经成功运行keoki大佬py文件的大佬,麻烦指点下,不胜感激

0574b69b9d3d65e5.jpg

a0507658

B1F  2021-03-03 15:07
(为什么显示的是我的数字ID _(:з」∠)_)
干掉了 环境变量里原来python 官网的 python
删掉了 C:\Users\Administrator\AppData\Local\Programs\Python\Python37\Scripts\
            C:\Users\Administrator\AppData\Local\Programs\Python\Python37\

在soulplus目录下执行python daily_updates.py cunhua 还是老问题
NameError: name 'sub_list' is not defined

https://img.chkaja.com/102721650a73f8d7.png

889485.png

我叫拉法姆

B2F  2021-03-03 15:09
(拉法姆才是____)
:=是3.8引入的新语法,你需要安装python3.8以上环境,anaconda的py和标准py是完全不同的两个环境,依赖库不通用

889485.png

我叫拉法姆

B3F  2021-03-03 15:11
(拉法姆才是____)
如果你要在3.7以下运行,语句要改成
if (subs_dict.get(platform)):
    sub_list = subs_dict.get(platform)

1318167.png

酵母菌

B4F  2021-03-03 15:23
(电报小号这里买:https://shop.telegramtraffic.uk/buy/3)
anaconda适合做数据分析又懒得折腾的人。包很全,省事。不过,conda系统巨难用,直观上比venv差远了,不建议新人用这个。当然,一上来看的书就是用jupyter notebook的,算我没说。

楼上说的没错,:= 是赋值并返回,本质是个inline函数。哪来的勇气直接换成 == 的啊……

xXHlV6FRc3pAGDT.png

猫天下

我记得有一个包好像能直接将脚本打包成带环境的可执行文件,建议用vs code这玩意简洁,你讲的那个玩意太臃肿了,好像是搞机械学习喜欢用

xXHlV6FRc3pAGDT.png

猫天下

查了一下,是pyinstealler

e86c73fc


0574b69b9d3d65e5.jpg

a0507658

B8F  2021-03-03 16:40
(为什么显示的是我的数字ID _(:з」∠)_)

回 4楼(酵母菌) 的帖子

谢谢,我还是基本功太废,忘记:=是赋值并返回,看到if判断先入为主的认为是判断,还好来问了。

0574b69b9d3d65e5.jpg

a0507658

B9F  2021-03-03 17:09
(为什么显示的是我的数字ID _(:з」∠)_)

回 3楼(我叫拉法姆) 的帖子

法拉姆大佬!
谢谢大佬的指点,目前按照你的建议还是出问题了。
这个是keoki大佬原来报错的那一段


然后我按照你的建议修改后,是这样的,基础差,不知道对不对,大佬见笑了。


最后修改完pycharm报错   :
raise IndexError("Unkown platform!")
IndexError: Unkown platform!

参考keoki大佬之前给的建议,我认为是不是没有给main()传参,然后cmd 切到py文件目录
执行了 python daily_updates.py cunhua 结果还是 IndexError: Unkown platform!


我在想是不是依赖包的问题,就是在pycharm里安装 导入 etree这个方法的时候一直报错
pycharm里from lxml import etree这一行,etree下面一直有红线,已经用阿里的镜像pip了 lxml


实在不行,我换个python3.8试试

1318167.png

酵母菌

B10F  2021-03-03 17:20
(电报小号这里买:https://shop.telegramtraffic.uk/buy/3)
你把你修改过的东西都删了。重新弄人家的原版。

刚看到那个帖子了。传参不明白简直无解……看上面的error,你修改了sys.arg相关的判断了吧?

lxml也好,etree也好,作者都是用的xpath,无关紧要。

给你个建议吧:

1. 请多Google再问。
2. 删掉的anaconda,用最新版的python3.8
3. 找个地方创建venv
4. 了解下什么叫命令行传参
5. 不要用pytcharm,很强悍的工具,但是实际上你没弄清楚,pycharm下跑这个,需要configure里面配置下parameter(各种ide下,配置运行参数都有类似步骤)
6. 老老实实用cmd,activate下venv
7. 照着人家教程,直接      python script parameters

敢改代码是好事,但是起码弄明白原意再改。随意改代码又懒得去了解原理不如不学呢。

https://www.runoob.com/python/python-command-line-arguments.html

0574b69b9d3d65e5.jpg

a0507658

B11F  2021-03-03 17:22
(为什么显示的是我的数字ID _(:з」∠)_)

回 5楼(yurhhu) 的帖子

我哪会爬虫啊,keoki大佬发出来的py虽然有环境要求,但是可以自动填充html内容已经很强了,当然,我也想要封装好的exe或者是.bat文件啊 战五渣的痛就是 各种直接搜warning和bug发现根本方向就不对,在死循环里打转圈,如果不是法拉姆提醒python版本应该是3.8,我估计还是google完之后,无解的状态。

0574b69b9d3d65e5.jpg

a0507658

B12F  2021-03-03 18:12
(为什么显示的是我的数字ID _(:з」∠)_)

回 10楼(酵母菌) 的帖子

感谢大佬鞭打,目前有进展
一开始是 platform = sys.argv[1]报错,然后我google了,看到有csdn的帖子说改为platform = sys.argv[0],但是我没有深挖(毕竟段位差太多,没看懂),抱着试一试的态度,改成platform = sys.argv[0]之后不报错了,才有了第二个问题,if (sub_list := subs_dict.get(platform))这里报错。

在使用了法拉姆大佬,(法拉姆yyds!)的修改建议之后,卡在Unkown platform!,看到你10楼的提醒想起来argv参数我改过,然后抱着试一试的态度改回去,然后能跑了,现在结果是
python daily_updates.py laowang 和
python daily_updates.py moxing 可以生成结果。
但是
python daily_updates.py 2048 和
python daily_updates.py moxing 输出的更新html文件大小为0 (2048_DailyUpdates.html)

抛出写html文件的转码错误
Traceback (most recent call last):
  File "daily_updates.py", line 358, in <module>
    daily_update.run()
  File "daily_updates.py", line 314, in run
    self.generate_html(*rslts)
  File "daily_updates.py", line 306, in generate_html
    fh.write(outputText)
UnicodeEncodeError: 'gbk' codec can't encode character '\u2764' in position 4917: illegal multibyte sequence

但是已经进展很大了,谢谢谢谢

883418.png

0907025e

趁这个机会自己学一下python爬虫岂不美哉

238318.png

受孕社畜

B14F  2021-03-04 20:24
(重振mmd荣光)
好家伙,你这还不如直接学selenium从头开始呢。。。还有为啥你们都推荐新手用anaconda,pycharm不香嘛。。。

3.gif

工地教父

B15F  2021-03-04 20:38
(金鳞岂是池中物)

回 10楼(酵母菌) 的帖子

写python,pycharm肯定是推荐的

3.gif

工地教父

B16F  2021-03-04 20:41
(金鳞岂是池中物)

回 12楼(a0507658) 的帖子

platform = sys.argv[1] ,相当于取命令行的参数,就是你那个 laowang,2048

889485.png

我叫拉法姆

B17F  2021-03-04 20:55
(拉法姆才是____)
如果你愿意搞,可以安装一个todesk,私信我远程看一下

0574b69b9d3d65e5.jpg

a0507658

B18F  2021-03-05 17:50
(为什么显示的是我的数字ID _(:з」∠)_)

回 13楼(0907025e) 的帖子

想学,这学期熬过毕设和入职就学!

因为我自己一直一直有一个想法

把图像识别和爬虫结合起来做一个能在资源网站自动生产戳XP本子列表的插件。

比如,通过爬虫在e绅爬到每日更新,或者特定tag的本子
然后通过自己训练好的图像识别模型找出包含 白丝 足X 或者后入 元素的 loli本筛出来。
因为有些戳XP的元素目前并没有tag,或者说,有tag但是没有被标出来

然后如果可以更近一步,就是设计一个结构化的符合个人XP类型的评分系统然后再favorite list里训练找出一个 可以 总结自己喜欢的画风的 评分模型,这个模型还是需要和爬虫结合来做到在资源网自动筛出自己喜欢的作品。

如果资源量够大,在学习AI生产,这样就不愁自己喜欢的白丝属性的好作品总是不多(甚至白丝都不多

不过这些都是后话了。

0574b69b9d3d65e5.jpg

a0507658

B19F  2021-03-05 17:57
(为什么显示的是我的数字ID _(:з」∠)_)

回 14楼(受孕社畜) 的帖子

另外不是推荐新手用anaconda

1以前本科的时候,有个很牛逼的老师推荐我们用anaconda,因为anaconda自带的python里面集成了很多数据分析的包很方便,用WIN系统搭建环境的时候,谁用谁知道有多恶心。 anaconda对于初学者来说,可以省去小白至少1天以上的时间去在搭环境上面(尽管anaconda搭出来也容易翻车),比如查 命令行, 怎么更新 pip, 怎么配置环境变量,怎么pip基本包 request numbpy beautifulsoup之类的。当然大佬觉得这些都很基础,没什么,但是每个人的win系统 随随便便就各种报错,而且是你百度或者谷歌按照解决方法一步一步来就是解决不了的那种,这个时候特别劝退。

2 anaconda自带jupyter 和 spider还是很好用的,而且我的pycharm也是集成到anaconda里的,虽然我记得pycharm是独立的IDE,我也记不清怎么做到的
现在我的pycharm在setting里可以用anaconda的python编译。

0574b69b9d3d65e5.jpg

a0507658

B20F  2021-03-05 17:58
(为什么显示的是我的数字ID _(:з」∠)_)

回 17楼(我叫拉法姆) 的帖子

谢谢大佬,现在只剩 cunhua和2048的文本转存问题了,我自己再看看,如果还是搞不定,晚上等你有时间方便了,私信你。