gpt4 book ai didi

python - 在类中重复函数

转载 作者:行者123 更新时间:2023-12-01 05:55:24 24 4
gpt4 key购买 nike

首先,如果我使用了错误的术语或者我对基本概念的理解有缺陷,请原谅我。我刚刚学习如何构建使用类的脚本...并且是 Python/编码的相对新手。

原则上,我很想知道是否有一种方法可以在一个类中调用同一函数两次。如果我简要解释一下我正在尝试做的事情可能会有意义......

我正在尝试编写一个网络“抓取工具”,它可以解析种子网页,根据某些给定参数返回 URL,遵循这些 URL,执行相同的操作(可能执行 n 次),最后在底部返回 pdf关联。这是为了加快我的同事目前手动收集的一些内容。 (通过之前相对基本的迭代,我节省了数月的手动工作量。)

这是我目前使用的方法,但我编写的代码并不是真正可扩展或易于重用的,我想尝试使其更加通用(我目前正在为每个实例手动滚动脚本)。

(我想)我想构建一个名为 siteInstance 的类,用它来保存种子 url、保存位置、标题、u:p、cookie 和各种函数。我用它来浏览网站以获取目标内容。

我使用了一个重复函数来解析目标 URL 并返回下一层 URL。这些基于一些特定于站点的正则表达式,因此我知道我必须为每一层 URL 提供搜索过滤器 (正则表达式)。我希望能够重用解析器,但为其提供特定于层的正则表达式。 DRY 是对的吗?

在我看来,这意味着我有一个名为 siteInstance.parser 的函数,我在每个 siteInstance.class 中构造了多个函数(例如,第一层为 siteInstance.parserAsiteInstance.parser )。 parserB 用于第二层 ... siteInstance.parsern 用于第 n 层)

Follows 是一个简化版本,实际上,每一层都有许多清理/准备步骤,以便正确生成下一层的目标 URL 列表。这包括为保存的二进制文件创建文件结构、写入日志以及为该层触发正则表达式等。

这是一个两层示例,但我知道至少有 4 层的实例。

示例:种子{URL:www.journalTitle.com}

第一遍结果(第 1 层):[{IssueURL2010:www.journalTitle.com/2010},{IssueURL2011:www.journalTitle.com/2011},{IssueURL2012:www.journalTitle.com/2012},{IssueURLn:www.journalTitle.com/n }]

对于 IssueURL2010(第 2 层):[{article1_2010URL:www.journalTitle.com/2010/1},{article2_2010URL:www.journalTitle.com/2010/2},{article3_2010URL:www.journalTitle.com/2010/3},{articlen_2010URL:www .journalTitle.com/2010/n}]

article1_2010UR我可以得到www.journalTitle.com/2010/1.pdf

我希望这是有道理的......

最佳答案

您可以在单独的类中定义解析逻辑,然后在实例(或类)属性中实例化几次:

class URLParser(object):
def __init__(self, regexp, ...):
self.regexp = regexp
...

def parse_urls(self, urls):
# do your URL parsing thing
# return parsed URLs

class SiteInstance(object):
def __init__(self, ...):
self.parsers = [
URLParser('regexp1'),
URLParser('regexp2'),
...
]

def parse(self, ...):
...
for parser in self.parsers:
parser.parse_urls(...)

关于python - 在类中重复函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12793461/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com