下面的代码没有返回一个非空的urlparse.netloc或urlparse.scheme。方案和netloc被放在path组件的前面。请问我做错了什么?
#! /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功能,因为这是一个课程练习,而不是一个真实的场景。很抱歉没有更清楚地说明这一点!
发布于 2013-02-01 02:16:03
您的正则表达式是错误的:
x = "<a href='http://www.bbcnews.com'>foo</a>"
link_exp.findall(x)
# ["'http://www.bbcnews.com"]请注意,您包含了开头的引号。
发布于 2013-02-01 02:19:44
使用以下命令:
link_exp = re.compile(r"href=\"(.+?)(?:'|\")", re.UNICODE) 输出:
...
ParseResult(scheme='http', netloc='ev.buaa.edu.cn', path='/', params='', query='', fragment='')
...https://stackoverflow.com/questions/14632333
复制相似问题