以下代码不会返回单个非空urlparse.netloc或urlparse.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功能,因为这是一个课程练习,而不是现实世界的场景。 很抱歉没有更清楚!
答案 0 :(得分:2)
你的正则表达式错了:
x = "<a href='http://www.bbcnews.com'>foo</a>"
link_exp.findall(x)
# ["'http://www.bbcnews.com"]
请注意,您要包含开场白。
答案 1 :(得分:0)
使用此:
link_exp = re.compile(r"href=\"(.+?)(?:'|\")", re.UNICODE)
输出:
...
ParseResult(scheme='http', netloc='ev.buaa.edu.cn', path='/', params='', query='', fragment='')
...