对于Python:如何解析包含“..”的URL感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍python解析url参数,并为您提供关于Android:如何解析带有URL字符串的URI对象?、P
对于Python:如何解析包含“ ..”的URL感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍python解析url参数,并为您提供关于Android:如何解析带有URL字符串的URI对象?、Python - 使用Tinyurl API的URL缩短器、python – Flask:如何获取动态生成的图像文件的URL?、Python中的urllib2模块解析的有用信息。
本文目录一览:- Python:如何解析包含“ ..”的URL(python解析url参数)
- Android:如何解析带有URL字符串的URI对象?
- Python - 使用Tinyurl API的URL缩短器
- python – Flask:如何获取动态生成的图像文件的URL?
- Python中的urllib2模块解析
Python:如何解析包含“ ..”的URL(python解析url参数)
我需要唯一地标识和存储一些URL。问题在于有时它们会包含“
..”,就像http://somedomain.com/foo/bar/../../some/url
基本上,http://somedomain.com/some/url
如果我没记错的话。
是否有Python函数或复杂的方法来解析此URL?
答案1
小编典典有一个简单的解决方案使用urllib.parse.urljoin
:
>>> from urllib.parse import urljoin>>> urljoin(''http://www.example.com/foo/bar/../../baz/bux/'', ''.'')''http://www.example.com/baz/bux/''
但是,如果没有结尾斜杠(最后一个组件是文件,而不是目录),则最后一个组件将被删除。
此修复程序使用urlparse函数提取路径,然后使用(的posixpath版本)os.path
对组件进行规范化。用斜杠补偿一个神秘的问题,然后将URL重新连接在一起。以下是doctest
能够的:
from urllib.parse import urlparseimport posixpathdef resolve_components(url): """ >>> resolve_components(''http://www.example.com/foo/bar/../../baz/bux/'') ''http://www.example.com/baz/bux/'' >>> resolve_components(''http://www.example.com/some/path/../file.ext'') ''http://www.example.com/some/file.ext'' """ parsed = urlparse(url) new_path = posixpath.normpath(parsed.path) if parsed.path.endswith(''/''): # Compensate for issue1707768 new_path += ''/'' cleaned = parsed._replace(path=new_path) return cleaned.geturl()
Android:如何解析带有URL字符串的URI对象?
我有一个表示包含空格的URL的字符串,并希望将其转换为URI对象。如果我只是尝试通过创建它
String myString = "http://myhost.com/media/File Name that has spaces inside.mp3";URI myUri = new URI(myString);
它给了我
java.net.URISyntaxException: Illegal character in path at index X
其中index X
是URL字符串中第一个空格的位置。
如何解析myString
为URI
对象?
答案1
小编典典实际上,您应该使用URI编码
“无效”字符。由于该字符串实际上包含完整的URL,因此很难对其进行URI编码。您不知道/
应该考虑哪些斜杠,哪些不是。您无法String
事先预测到这一点。确实需要在更高层次上解决该问题。那String
是哪里来的
它是硬编码的吗?然后只需相应地自己更改即可。它作为用户输入进来吗?验证并显示错误,让用户自己解决。
无论如何,如果可以确保 仅 是URL中的空格使其无效,那么您也可以仅使用逐个字符串替换%20
:
URI uri = new URI(string.replace(" ", "%20"));
或者,如果可以确保 _仅_是最后一个斜杠之后的部分需要进行URI编码,那么也可以在android.net.Uri
实用工具类的帮助下进行操作:
int pos = string.lastIndexOf(''/'') + 1;URI uri = new URI(string.substring(0, pos) + Uri.encode(string.substring(pos)));
请注意,这URLEncoder
不适用于该任务,因为它旨在按照application/x-www-form-urlencoded
规则对查询字符串参数名称/值进行编码(用于HTML表单)。
Python - 使用Tinyurl API的URL缩短器
简介
在网络时代,简洁的链接对于通过社交网站、短信和其他通信方式分发超链接至关重要。然而,过长的 URL 可能会在共享时带来挑战,并且在发送消息时可能会被截断。长 URL 通常很难记住,并且输入起来也非常困难。为了解决当前的问题,创建了 TinyURL 等网址缩短平台来管理这项任务。 Python 提供了一种方便的方法来连接这些选项。在这篇文章中,我们将编写一段 Python 代码来与 TinyURL 网站 API 系统交互。
定义
链接缩短器是一种软件,它接收较长的 URL 作为数据并生成更小、更方便的 URL。这有助于创建更易于交换和调用的扩展 URL。当人们点击此缩写 URL 时,会将其转发到真实的长 URL。链接缩短器广泛应用于社交网站、电子邮件通信以及需要方便交换冗长 URL 的任何情况。这些工具可将扩展的网站链接缩短为更小且更易于处理的链接。
语法
import requests url = ''http://tinyurl.com/api-create.php?url='' long_url = ''https://www.example.com/path/to/content/'' response = requests.get(url+long_url) short_url = response.text print(short_url)
这段代码最初导入了用于发出请求的模块,以通过 HTTP 执行请求。名为“url”的变量保存 TinyURL 应用程序编程接口的基本链接。这个“original_url”变量存储我们需要减少长度的网址。接下来,我们使用 requests.get() 方法向 TinyURL API 发出 HTTP 请求,并传递 API 的整个 URL 以及附加的延长 URL。
来自 TinyURL 应用程序编程接口的回复将使用 response.text 属性作为文本数据发回。随后将其分配给名为“short_url”的变量。最终,代码显示缩写的网址。
立即学习“Python免费学习笔记(深入)”;
算法
第 1 步:导入 requests 模块
第 2 步:生成为 TinyURL API 端点设计的主 URL
第三步:设置需要缩写的扩展URL
步骤 4:向 TinyURL 服务发起 HTTP 请求,包括冗长的 URL
第 5 步:从结果中获取压缩 URL 并显示
方法
方法一:使用requests.get()方法。
方法 2:使用 PyShorteners 方法
方法一:使用requests.get()方法。
示例
import requests def shorten(url): base_url = ''http://tinyurl.com/api-create.php?url='' response = requests.get(base_url+url) short_url = response.text return short_url long_url = ''https://www.example.com/path/to/content/'' short_url = shorten(long_url) print(short_url)
输出
https://tinyurl.com/2jvveeo5
最初,代码引入了“requests”模块。该模块通常与 Python 一起使用来创建 Web 请求。该模块用于向 TinyURL 接口发送查询并获取压缩 URL。然后,脚本建立一个称为“shorten ()”的函数。该函数接受 URL 作为值并输出紧凑的 URL。基本 URL 充当构建 API 请求的开始。
为了生成缩写 URL,软件向 TinyURL 应用程序编程接口发送 HTTP GET 调用。此过程是将“base_url”与提供的参数“url”组合在一起。 “requests”模块的“get()”方法用于通过包含构造的 URL 来发起请求。服务器查询的答案放置在“result”变量中。为了从服务器的响应中提取缩写 URL,代码获取响应实例的“text”参数。随后将获得的缩写 URL 分配给表示为“short_url”的变量。
这个冗长的 URL 作为输入传递给“shorten()”函数。然后使用“print()”命令显示紧凑的 URL。如果执行此脚本,结果是从输入“long_url”的链接缩短 API 获取的缩写 URL。
每次执行该程序时,生成的压缩 URL 都会不同。这是因为这是基于链接缩短器 API 的回复。可以使用缩写 URL 将用户引导至主要扩展 URL。这使得交换和保留变得更加简单。
方法 2:使用 PyShorteners 方法
示例
import pyshorteners long_url = ''https://www.example.com/path/to/content/'' s = pyshorteners.Shortener() short_url = s.tinyurl.short(long_url) print(short_url)
输出
https://tinyurl.com/abcd123
首先,该脚本引入“pyshorteners”模块文件。该模块提供了一个 Python 包,该包提供 URL 收缩功能选项。该模块用于生成缩写网址。然后,该算法将扩展 URL 分配给名为“long_url”的变量。这些是我们要截断的初始 URL。
该脚本利用“is.gd”模块生成“Reducer”类的新对象。然后将此实例设置为变量“s”。该对象将用于检索工具集提供的网站缩短功能。
为了创建缩写 URL,算法会触发“s.tinyurl”字段上的“compress()”方法。 “short()”函数接受扩展 URL 作为变量并生成相关的缩写 URL。在本例中,“long_url”变量作为输入发送。生成的缩短 URL 记录在“short_url”变量中。
总之,该脚本利用“display()”函数在命令提示符中显示压缩的 URL。如果执行此代码,您将获得由与给定的“long_url”相对应的“pyshorteners”模块创建的缩写 URL。每次执行该程序时,创建的紧凑 URL 都会不同。它依赖于程序访问的特定网址缩短服务。
该程序的目的是展示如何使用“shortenurl”库快速从大 URL 生成简洁 URL。对于您想要分发统一资源定位器的简短紧凑版本的情况,这可能会有所帮助。
结论
链接缩短已成为当代通信的重要组成部分。该工具有助于创建冗长而复杂的网址,使其更易于管理并且更易于与朋友和同事传递。在这篇学习文章中,我们展示了如何利用短 URL API 来压缩基于 Python 的 URL。我们研究了双重策略,包括完整的可运行代码示例和解释。
总而言之,此 API 提供了一种简单且值得信赖的技术,可通过简单的过程使用 Python 来缩短网址。该过程可以在短时间内执行。通过利用 Python 编程语言和 TinyURL 的 API,生成较短的网址变得比以往任何时候都容易。通过遵循本文中给出的演示,任何新手程序员都可以利用 TinyURL API 生成网址缩短器。人们可以进一步将这些项目整合到他们的任务中。
以上就是Python - 使用Tinyurl API的URL缩短器的详细内容,更多请关注php中文网其它相关文章!
python – Flask:如何获取动态生成的图像文件的URL?
from flask import Flask,redirect,url_for app = Flask(__name__) @app.route('/') def index(): generate_img("test.jpg"); return '<img src=' + url_for(filename='test.jpg') + '>'
generate_img()将随机图像输出到当前目录(与此脚本相同的文件夹).
我得到404,我导航到mydomain.com/test.jpg但它不在那里.
解决方法
也许你想创建一个直接返回图像的资源?
编辑:类似的东西应该能够提供图像.
@app.route("/imgs/<path:path>") def images(path): generate_img(path) fullpath = "./imgs/" + path resp = flask.make_response(open(fullpath).read()) resp.content_type = "image/jpeg" return resp
EDIT2:当然,generate_img可能会被重写,因此它永远不会写入磁盘,而是直接返回图像数据.
Python中的urllib2模块解析
Name
urllib2 - An extensible library for opening URLs using a variety of protocols
1. Description
The simplest way to use this module is to call the urlopen function,which accepts a string containing a URL or a Request object . It opens the URL and returns the results as file-like object.
2. Classes
exceptions.IOError(exceptions.EnvironmentError)
URLError
HTTPError(URLError, urllib.addinfourl)
AbstractBasicAuthHandler
HTTPBasicAuthHandler(AbstractBasicAuthHandler, BaseHandler)
ProxyBasicAuthHandler(AbstractBasicAuthHandler, BaseHandler)
AbstractDigestAuthHandler
BaseHandler
AbstractHTTPHandler
HTTPHandler
HTTPSHandler
FTPHandler
CacheFTPHandler
FileHandler
HTTPCookieProcessor
HTTPDefaultErrorHandler
HTTPDigestAuthHandler(BaseHandler, AbstractDigestAuthHandler)
HTTPErrorProcessor
HTTPRedirectHandler
ProxyDigestAuthHandler(BaseHandler, AbstractDigestAuthHandler)
ProxyHandler
UnknownHandler
HTTPPasswordMgr
HTTPPasswordMgrWithDefaultRealm
OpenerDirector
Request
3. 两种访问网页模式:
模式1
导入模块
import urllib2
发送请求
request = urllib2.Request(url, data=None, headers={}, origin_req_host=None, unverifiable=False)
打开request对象,返回服务器相应对象
response = urllib2.urlopen(request)
输出网页代码内容
print response.read()
通过构建一个request对象,服务器响应请求得到应答,这样显得逻辑上清晰明确。
模式2
导入模块
import urllib2
打开url对象,返回服务器相应对象
response = urllib2.urlopen(url, data=None, timeout=<object object>, cafile=None, capath=None, cadefault=False, context=None)
输出网页代码内容
print response.read()
4. 设置Headers
很多服务器或代理服务器会查看HTTP头,进而控制网络流量,实现负载均衡,限制不正常用户的访问。所以我们要学会设置HTTP头,来保证一些访问的实现。
代码如下:
import urllib
import urllib2
url = ''http://www.server.com/login''
user_agent = ''Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)''
values = {''username'' : ''cqc'', ''password'' : ''XXXX'' }
headers = { ''User-Agent'' : user_agent }
data = urllib.urlencode(values)
request = urllib2.Request(url, data, headers)
response = urllib2.urlopen(request)
page = response.read()
这样,我们设置了一个headers,在构建request时传入,在请求时,就加入了
headers传送,服务器若识别了是浏览器发来的请求,就会得到响应。
常见的User Agent
1.Android
Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19
Mozilla/5.0 (Linux; U; Android 4.0.4; en-gb; GT-I9300 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30
Mozilla/5.0 (Linux; U; Android 2.2; en-gb; GT-P1000 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
2.Firefox
Mozilla/5.0 (Windows NT 6.2; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0
Mozilla/5.0 (Android; Mobile; rv:14.0) Gecko/14.0 Firefox/14.0
3.Google Chrome
Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36
Mozilla/5.0 (Linux; Android 4.0.4; Galaxy Nexus Build/IMM76B) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19
5. 设置代理服务器
控制代理服务器,防止服务器限制IP。每隔一段时间换一个代理服务器。代理服务器的ip你可以从网页中自己选择和定期更换,控制代理服务器,每隔一段时间换一个代理服务器。代理服务器URL:http://www.xicidaili.com/
代码如下:
import urllib2
enable_proxy = True
proxy_handler = urllib2.ProxyHandler({"http":"61.135.217.7:80"})
null_proxy_handler = urllib2.ProxyHandler({})
if enable_proxy:
opener = urllib2.build_opener(proxy_handler)
else:
opener = urllib2.build_opener(null_proxy_handler)
urllib2.install_opener(opener)
6. 超时设置
urlopen方法第三个参数就是timeout的设置,可以设置等待多久超时,为了解决一些网站实在响应过慢而造成的影响。
import urllib2
response = urllib2.urlopen(''http://www.baidu.com'', timeout=10)
关于Python:如何解析包含“ ..”的URL和python解析url参数的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于Android:如何解析带有URL字符串的URI对象?、Python - 使用Tinyurl API的URL缩短器、python – Flask:如何获取动态生成的图像文件的URL?、Python中的urllib2模块解析等相关内容,可以在本站寻找。
本文标签: