如何创建调用目录中所有单类模块的模块/类?

时间:2017-06-08 23:41:21

标签: python multithreading python-2.7 class

我对python场景很新,但不是编程。我正在寻找创建一个调用目录中所有模块的类(每个模块只有一个类),并且还不能完全围绕类到类的实现。为了粗略说明,我有以下目录结构

-__init__.py
-addon.py
-lib/
    -__init__.py
    -sources/
             -__init__.py
             -source1scraper.py
             -source2scraper.py
             -source3scraper.py

我希望有一个我可以调用的类来运行每个结果(列表)

Sources类的粗略概念就是这样

import threading

class Sources():
    def __init__(self):
        self.Sources = []

    def getSources(self):
        sourceDict = []
        for package, name, is_pkg in pkgutil.walk_packages(__path__): sourceDict.append((name, is_pkg))
        sourceDict = [i[0] for i in sourceDict if i[1] == False]
        threads = []
        for source in sourceDict:
            t = threading.Thread(target=self.getLinks(source))
            threads.append(t)
            t.start()

    def getLinks(self, source):
        self.Links = []

问题1 这里是我不知道我将这个班级放在哪里。也许它会进入__init__.py目录的sources

问题2 这里我不确定如何调用每个源,获取链接,并附加到已经调用的其他源的现有链接列表。

问题3 这里是我不知道如何正确地线程化进程,所以刮刀同时运行。

然后是scraper.py文件。这里是一个关于scraper.py文件结构的粗略概念

import requests
import re
class Source(Sources.Source):
    def __init__(self):
        self.full_link = 'http://www.blahblah.com/path/to/content'
        self.base_link = 'http://www.blahblah.com' #for appending symbolic links
        self.regex = '<a href="([^"]+)" rel="nofollow"'

    def links(self):
        try:
            links = []
            source_html = client.request(self.full_link)
            match = re.compile(self.regex).findall(source_html)
            return links
        except:
            return links

问题4 我不知道在我目前拥有class Source(Sources.Source):的班级括号之间需要指定什么。

如何正确实施我想要做的任何建议将不胜感激。我甚至关闭了吗?

0 个答案:

没有答案