Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taokun401
dr_py
提交
a8f27381
dr_py
项目概览
taokun401
/
dr_py
与 Fork 源项目一致
Fork自
晚风拂柳颜 / dr_py
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
dr_py
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
a8f27381
编写于
8月 25, 2022
作者:
H
hjdhnx
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
增加错误记录
上级
2c5189e4
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
21 addition
and
5 deletion
+21
-5
app.py
app.py
+5
-3
utils/parser.py
utils/parser.py
+16
-2
未找到文件。
app.py
浏览文件 @
a8f27381
...
...
@@ -46,14 +46,16 @@ def index(): # put application's code here
def
vod
():
rule
=
getParmas
(
'rule'
)
ext
=
getParmas
(
'ext'
)
if
not
rule
:
if
not
ext
.
startswith
(
'http'
)
and
not
rule
:
return
jsonify
(
error
.
failed
(
'规则字段必填'
))
if
not
rule
in
rule_list
:
msg
=
f
'仅支持以下规则:
{
","
.
join
(
rule_list
)
}
'
if
not
ext
.
startswith
(
'http'
)
and
not
rule
in
rule_list
:
msg
=
f
'
服务端本地
仅支持以下规则:
{
","
.
join
(
rule_list
)
}
'
return
jsonify
(
error
.
failed
(
msg
))
js_path
=
f
'js/
{
rule
}
.js'
if
not
ext
.
startswith
(
'http'
)
else
ext
ctx
,
js_code
=
parser
.
runJs
(
js_path
)
if
not
js_code
:
return
jsonify
(
error
.
failed
(
'爬虫规则加载失败'
))
rule
=
ctx
.
eval
(
'rule'
)
cms
=
CMS
(
rule
)
wd
=
getParmas
(
'wd'
)
...
...
utils/parser.py
浏览文件 @
a8f27381
...
...
@@ -21,10 +21,24 @@ def runJs(jsPath):
# base_path = os.path.dirname(os.path.abspath(__file__)) # 当前文件所在目录
# base_path = os.path.dirname(os.getcwd()) # 当前主程序所在工作目录
# base_path = os.path.dirname(os.path.abspath('.')) # 上级目录
# js_code = 'var rule={}'
base_path
=
os
.
path
.
dirname
(
os
.
path
.
abspath
(
os
.
path
.
dirname
(
__file__
)))
# 上级目录
if
str
(
jsPath
).
startswith
(
'http'
):
jscode
=
requests
.
get
(
jsPath
).
text
js_name
=
jsPath
.
split
(
'/'
)[
-
1
]
cache_path
=
os
.
path
.
join
(
base_path
,
f
'cache/
{
js_name
}
'
)
print
(
'远程规则:'
,
js_name
)
if
not
os
.
path
.
exists
(
cache_path
):
try
:
js_code
=
requests
.
get
(
jsPath
,
timeout
=
2
).
text
with
open
(
cache_path
,
mode
=
'w+'
,
encoding
=
'utf-8'
)
as
f
:
f
.
write
(
js_code
)
except
Exception
as
e
:
print
(
'发生了错误:'
,
e
)
return
None
,
''
else
:
with
open
(
cache_path
,
'r'
,
encoding
=
'UTF-8'
)
as
fp
:
js_code
=
fp
.
read
()
else
:
base_path
=
os
.
path
.
dirname
(
os
.
path
.
abspath
(
os
.
path
.
dirname
(
__file__
)))
# 上级目录
js_path
=
os
.
path
.
join
(
base_path
,
jsPath
)
with
open
(
js_path
,
'r'
,
encoding
=
'UTF-8'
)
as
fp
:
js_code
=
fp
.
read
()
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录