次のコードは、空でない urlparse.netloc または urlparse.scheme を 1 つも返しません。スキームと netloc は、パス コンポーネントの先頭に追加されます。私は何を間違っていますか?
#! /usr/bin/python
# -*- coding: UTF-8 -*-
from urllib import urlopen
from urlparse import urlparse, urljoin
import re
link_exp = re.compile("href=(.+?)(?:'|\")", re.UNICODE)
flux = urlopen("http://www.w3.org")
links = [urlparse(x) for x in link_exp.findall(flux.read())]
for x in links :
print x
これはすべての (? おそらく私の正規表現が間違っている) URL を抽出し、それを出力します。ただし、「http://」は常にスキームではなくパスに含まれます。どうして?これは実際のシナリオではなくコースの演習であるため、これを解決したら、おそらく urlparse 機能を再実装する必要があります。これについて明確でなくて申し訳ありません!