我对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):
的班级括号之间需要指定什么。
如何正确实施我想要做的任何建议将不胜感激。我甚至关闭了吗?