首先,如果我使用了错误的术语或者我对基本概念的理解有缺陷,请原谅。我只是在学习如何构建使用类的脚本。。。我是Python/coding的新手。在
原则上,我想知道是否有方法在一个类中调用同一个func两次。如果我简单地解释一下我想做什么,也许会有一些意义。。。在
我正在尝试编写一个web“scraper”,它解析一个种子网页,根据一些给定的参数返回url,跟踪这些url,做同样的事情(可能n次),最后在链接底部返回一个pdf文件。这是为了加速我的同事们目前手工收集的一些内容。(我已经用我以前相对基本的迭代节省了几个月的体力劳动。)
这是我目前使用的一种方法,但我编写的代码并不是真正的可伸缩或易于重用的,我想尝试使它更通用(我目前正在为每个实例手动编写脚本)。在
(我想)我想构建一个名为siteInstance的类,用来保存种子url、保存位置、标题、u:p、cookie和各种函数。我用它来浏览整个网站以获取目标内容。在
我使用了一个重复函数来解析目标URL并返回下一层URL。这些都是基于一些特定于站点的RegEx,所以我知道我必须为url的每一层提供搜索过滤器(RegEx)。我希望能够重用解析器,但是需要使用特定于层的Regex。干是一件事对吗?在
在我看来,这意味着我有一个函数叫做siteInstance.parser,我在每个siteInstance.class(例如,siteInstance.parserA
表示第一层,siteInstance.parserB
表示第二层。。。siteInstance.parsern
用于第n层)
下面是一个简化版本,实际上在每一层都有许多清理/准备步骤,以正确生成下一层的目标url列表。这包括为保存的二进制文件创建一个文件结构,写入日志,并为该层触发RegEx等等
这是一个两层的例子,但是我知道至少有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
我希望这有意义。。。在
您可以在单独的类中定义解析逻辑,并在实例(或类)属性中实例化几次:
相关问题 更多 >
编程相关推荐