<p>下面是获取域中所有子域的Python代码。它接受一个包含网站页面源的文件作为输入。第二个参数是域名。例如:<code>"https://www.sometime.com"</code>。你知道吗</p>
<pre><code>import re
def getSubDomains(fil,domain):
with open(fil) as f:
subDomainLst = []
for line in f:
m = re.findall(r'\bhref="\https://[\w+\.*]+%s/'%domain,line)
if(m):
for ele in m: subDomainLst.append(ele.split('/')[2])
else:
continue
subDomainLst = list(set(subDomainLst))
for ele in subDomainLst: print ele
def main():
fil1,domain1 = raw_input("Enter the file name\n"),raw_input("Enter the domain\n")
getSubDomains(fil1,domain1)
main() if __name__ == '__main__' else Pass
</code></pre>
<p>我试着缩小内部的“if else语句”来</p>
<pre><code>for ele in m: subDomainLst.append(ele.split('/')[2]) if(m) else continue
</code></pre>
<p>但这是一个错误。你知道吗</p>
<p>上面的代码是否可以进一步缩小(目前为16行),以便占用最少的行数并变得更具python风格?你知道吗</p>
<p>您可能需要将<code>if</code>语句更改为<code>try..except</code></p>
<pre><code>try:
for ele in m: subDomainLst.append(ele.split('/')[2])
except TypeError:
print "OMG m is not iterable!"
</code></pre>
<p>或者类似的</p>