Python url解析在每个url上都完全失败

Python url解析在每个url上都完全失败,python,Python,以下代码不返回单个非空的urlparse.netloc或urlparse.scheme。scheme和netloc在路径组件前面。 请问我做错了什么 #! /usr/bin/python # -*- coding: UTF-8 -*- from urllib import urlopen from urlparse import urlparse, urljoin import re link_exp = re.compile("href=(.+?)(?:'|\")", re.UN

以下代码不返回单个非空的urlparse.netloc或urlparse.scheme。scheme和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功能,因为这是一个课程练习,而不是一个真实的场景。 对不起,我没有说得更清楚

您的正则表达式错误:

x = "<a href='http://www.bbcnews.com'>foo</a>"
link_exp.findall(x)
# ["'http://www.bbcnews.com"]
x=“”
链接\u exp.findall(x)
# ["'http://www.bbcnews.com"]
请注意,您包括了开场白。

使用以下方法:

link_exp = re.compile(r"href=\"(.+?)(?:'|\")", re.UNICODE)  
输出:

...
ParseResult(scheme='http', netloc='ev.buaa.edu.cn', path='/', params='', query='', fragment='')
...

正则表达式,HTML,--使用。不回答问题,试图看起来神秘,青少年的想法。该代码有效,但netloc和scheme被驱逐到path。我不认为这应该归咎于regex,但我愿意被证明是错误的。不会
link\u exp.findall()
查找类似
href的字符串="http://example.com
@pouzzler是疏远那些懒得读你问题的人的一种方式。并提供很好的指针。@pouzzler你说得对,对不起。全文:您不应该使用正则表达式从HTML页面中提取链接,因为它们的功能不足以理解HTML有效的所有奇怪方式。相反,您应该安装并使用一个用于解析HTML的库,并从中提取链接。然后,您可以在这些链接上调用
urlparse
。供参考,调试这类事情的方法是在link\u exp.findall(flux.read())]中分离出
[urlparse(x)for x的所有嵌套函数调用,然后使用调试器逐步执行,依次查看每个调用。