此函数将字符串作为输入,如果字符串以http://
开头或字符串以https://
开头,则函数将假定该字符串是绝对链接。如果URL以/
开头,则该函数会将其转换为绝对链接。
请注意,base
目前是一个全局变量。我主要担心的是这个功能做了太多假设。有没有办法在没有这么多假设的情况下完成解析URL的任务?
def get_url(item):
#absolute link
if item.startswith('http://') or item.startswith('https://'):
url = item
#root-relative link
elif item.startswith('/'):
url = base + item
else:
url = base + "/" + item
return url
答案 0 :(得分:0)
from urlparse import urljoin
base = 'http://myserver.com'
def get_url(item):
return urljoin(base, item)
urljoin
自己处理绝对或相对链接。
<强>实施例强>
print get_url('/paul.html')
print get_url('//otherserver.com/paul.html')
print get_url('https://paul.com/paul.html')
print get_url('dir/paul.html')
<强>输出强>
http://myserver.com/paul.html
http://otherserver.com/paul.html
https://paul.com/paul.html
http://myserver.com/dir/paul.html
答案 1 :(得分:0)
1 - 使用正则表达式
2 - 向您的基本网址添加尾随/
import re
base = 'http://www.example.com/'
def get_url(item):
#absolute link
pattern = "(http|https)://[\w\-]+(\.[\w\-]+)+\S*" # regex pattern to approve http and https started strings
if re.search(pattern, item):
url = item
#root-relative link
else:
url = base + item.lstrip('/')
return url