pythonurl函数 Python中url

url编码问题在python中怎么解决

最近在抓取一些js代码产生的动态数据,需要模拟js请求获得所需用的数据,遇到对url进行编码和解码的问题,就把遇到的问题总结一下,有总结才有进步,才能使学到的知识更加清晰。对url进行编码和解码,python提供了很方便的接口进行调用。

创新互联是一家专注于成都做网站、网站制作、成都外贸网站建设与策划设计,河曲网站建设哪家好?创新互联做网站,专注于网站建设10年,网设计领域的专业建站公司;建站业务涵盖:河曲等地区。河曲做网站价格咨询:028-86922220

url中的query带有特殊字符(不是url的保留字)时需要进行编码。当url中带有汉字时,需要特殊的处理才能正确编码,以下都只针对这种情形,当然也适用于纯英文字符的url。

(1) url编码:

import urllib

url = 'wd=哈哈'   #如果此网站编码是gbk的话,需要进行解码,从gbk解码成unicode,再从Unicode编码编码为utf-8格式。

url = url.decode('gbk', 'replace')

print urllib.quote(url.encode('utf-8', 'replace'))

结果: 3a%2f%2ftest.com%2fs%3fwd%3d%e5%93%88%e5%93%88

(2) url解码:

import urllib

encoded_url = est.com%2fs%3fwd%3d%e5%93%88%e5%93%88'

print urllib.unquote(encoded_url).decode('utf-8', 'replace').encode('gbk', 'replace')  #反过来

函数调用的参数以及结果都是utf-8编码的,所以在对url编码时,需要将参数串的编码从原始编码转换成utf-8,

对url解码时,需要将解码结果从utf-8转换成原始编码格式。

依据网站采用的编码不同,或是gbk或是utf-8,赋赋予不同的编码,进行不同的url转码。GBK格式,一个中文字符转为%xx%xx,共两组;utf-8格式,一个中文字符转为%xx%xx%xx,共三组。

import sys,urllib 

s = '杭州'

urllib.quote(s.decode(sys.stdin.encoding).encode('gbk'))

%BA%BC%D6%DD

urllib.quote(s.decode(sys.stdin.encoding).encode('utf8'))

'%E6%9D%AD%E5%B7%9E'

[python] view plain copy

a = "墨西哥女孩被拐4年接客4万次 生的孩子成为人质-搜狐新闻"

print urllib.quote(urllib.quote(a))

进行两次编码转换后,会变为:%25E5%25A2%25A8%25E8%25A5%25BF%25E5%2593%25A5%25E5%25A5%25B3%25E5%25AD%25A9%25E8%25A2%25AB%25E6%258B%25904%25E5%25B9.................................................................................这样的形式。

同样需要两次解码后才能得到中文。

最近用python写了个小爬虫自动下点东西,但是url 是含中文的,而且中文似乎是 gbk 编码然后转成 url的。举个例子吧,我如果有个unicode字符串“历史上那些牛人们.pdf”,那么我转换成url之后是, 

t="%20%E5%8E%86%E5%8F%B2%E4%B8%8A%E9%82%A3%E4%BA%9B%E7%89%9B%E4%BA%BA%E4%BB%AC.pdf", 

但是对方网站给的是 s="%C0%FA%CA%B7%C9%CF%C4%C7%D0%A9%C5%A3%C8%CB%C3%C7.PDF"

print urllib.unquote("%C0%FA%CA%B7%C9%CF%C4%C7%D0%A9%C5%A3%C8%CB%C3%C7.PDF").decode('gbk').encode('utf-8')

历史上那些牛人们.PDF

python里怎么获得一个url最后一个/后的字符串

1、python处理字符串非常简单,获取url最后一个/之后的字符串,使用字符串函数rindex得到最后一个/位置,然后再对url字符串进行切片就可以得到url最后一个/后的字符串

2、代码:

url = ''

ri = url.rindex('/')

ss = url[ri + 1:]

print(ss)

3、输出果:

1242758094522051179.html

4、函数说明:

rindex(...)

S.rindex(sub[,

start[,

end]])

-

int

从字符串右则查找指字符串,sub要查找了内容,start起始位置,end结束位置,函数返回位置。

5、字符串切片说明:

str[start:end]

获取字符串以start开始位置end位置之前的字符结束的字符,如果start为空为从字符串起始开始,如果end为空则到字符串末尾。以示例中代码为例url[ri

+

1:]就是取url中ri+1位置到url结尾的子字符串。

python爬虫怎么获取到的网站的所有url

首先我们可以先获取要下载图片的整个页面信息。

getjpg.py

#coding=utf-8

import urllib

def getHtml(url):

page = urllib.urlopen(url)

html = page.read()

return html

print html

Urllib 模块提供了读取web页面数据的接口,我们可以像读取本地文件一样读取www和ftp上的数据。首先,我们定义了一个getHtml()函数:

urllib.urlopen()方法用于打开一个URL地址。

read()方法用于读取URL上的数据,向getHtml()函数传递一个网址,并把整个页面下载下来。执行程序就会把整个网页打印输出。


分享文章:pythonurl函数 Python中url
链接分享:http://ybzwz.com/article/hghopp.html