⑴ urllib.parse在python2.7中怎么用
最新版的python3.3.0已经发布了。相较于python3.0,3.2的改动并不大。但网上的大量的教程等大都以2.x版本为基础。这为想要从python3.0学起的菜鸟带来了不少的困难。 作为一只菜鸟,最近想学习一下python中urllib模块的使用方法。从网上找的最简单的实例:把google 首页的html抓取下来并显示在控制台上 代码:
[python]view plain
importurllib
printurllib.urlopen('http://www.google.com').read()
[python]view plain
importurllib
help(urllib)
3.0版本中已经将urllib2、urlparse、和robotparser并入了urllib中,并且修改urllib模块,其中包含5个子模块,即是help()中看到的那五个名字。
为了今后使用方便,在此将每个包中包含的方法列举如下:
urllib.error:ContentTooShortError; HTTPError; URLError
urllib.parse:parseqs; parseqsl; quote; quotefrombytes; quote_plus; unquote unquoteplus; unquoteto_bytes; urldefrag; urlencode; urljoin;urlparse; urlsplit; urlunparse; urlunsplit
urllib.request:AbstractBasicAuthHandler; AbstractDigestAuthHandler; BaseHandler; CatheFTPHandler; FTPHandler; FancyURLopener; FileHandler; HTTPBasicAuthHandler; HTTPCookieProcessor; HTTPDefaultErrorHandler; HTTPDigestAuthHandler; HTTPErrorProcessorl; HTTPHandler; HTTPPasswordMgr; ; HTTPRedirectHandler; HTTPSHandler;OpenerDirector;ProxyBasicAuthHandler ProxyDigestAuthHandler; ProxyHandler; Request; URLopener; UnknowHandler; buildopener; getproxies; installopener; pathname2url; url2pathname; urlcleanup;urlopen; urlretrieve;
urllib.response:addbase; addclosehook; addinfo; addinfourl;
urllib.robotparser:RobotFileParser
在2.X版本下,打开HTML文档的实例:
[python]view plain
importurllib
webURL="http://www.python.org"
localURL="index.html"
#通过URL打开远程页面
u=urllib.urlopen(webURL)
buffer=u.read()
printu.info()
print"从%s读取了%d字节数据."%(u.geturl(),len(buffer))
#通过URL打开本地页面
u=urllib.urlopen(localURL)
buffer=u.read()
printu.info()
print"从%s读取了%d字节数据."%(u.geturl(),len(buffer))
[html]view plain
Date:Fri,26Jun200910:22:11GMT
Server:Apache/2.2.9(Debian)DAV/2SVN/1.5.1mod_ssl/2.2.9OpenSSL/0.9.8gmod_wsgi/2.3Python/2.5.2
Last-Modified:Thu,25Jun200909:44:54GMT
ETag:"105800d-46e7-46d29136f7180"
Accept-Ranges:bytes
Content-Length:18151
Connection:close
Content-Type:text/html
从http://www.python.org读取了18151字节数据.
Content-Type:text/html
Content-Length:865
Last-modified:Fri,26Jun200910:16:10GMT
从index.html读取了865字节数据.
若要通过urllib模块中的urlopen(url [,data])函数打开一个HTML文档,必须提供该文档的URL地址,包括文件名。函数urlopen不仅可以打开位于远程web服务器上的文件,而 且可以打开一个本地文件,并返回一个类似文件的对象,我们可以通过该对象从HTML文档中读出数据。
一旦打开了HTML文档,我们就可以像使用常规文件一样使用read([nbytes])、readline()和readlines()函数来对文件进行读操作。若要读取整个HTML文档的内容的话,您可以使用read()函数,该函数将文件内容作为字符串返回。
打开一个地址之后,您可以使用geturl()函数取得被获取网页的真正的URL。这是很有用的,因为urlopen(或使用的opener对象)也许会伴随一个重定向。获取的网页URL也许和要求的网页URL不一样。
另一个常用的函数是位于从urlopen返回的类文件对象中的info()函数,这个函数可以返回URL位置有关的元数据,比如内容长度、内容类型,等等。下面通过一个较为详细的例子来对这些函数进行说明。
--------------------------------------------------------------------------------------------------------------------------
在2.X版本下,urlparse使用实例:
[python]view plain
importurlparse
URLscheme="http"
URLlocation="www.python.org"
URLpath="lib/mole-urlparse.html"
modList=("urllib","urllib2",
"httplib","cgilib")
#将地址解析成组件
print"用Google搜索python时地址栏中URL的解析结果"
parsedTuple=urlparse.urlparse(
"http://www.google.com/search?
hl=en&q=python&btnG=Google+Search")
printparsedTuple
#将组件反解析成URL
print"反解析python文档页面的URL"
unparsedURL=urlparse.urlunparse(
(URLscheme,URLlocation,URLpath,'','',''))
print" "+unparsedURL
#将路径和新文件组成一个新的URL
print"利用拼接方式添加更多python文档页面的URL"
formodinmodList:
newURL=urlparse.urljoin(unparsedURL,
"mole-%s.html"%(mod))
print" "+newURL
#通过为路径添加一个子路径来组成一个新的URL
print"通过拼接子路径来生成Python文档页面的URL"
newURL=urlparse.urljoin(unparsedURL,
"mole-urllib2/request-objects.html")
print" "+newURL
[python]view plain
用Google搜索python时地址栏中URL的解析结果
('http','www.google.com','/search','',
'hl=en&q=python&btnG=Google+Search','')
反解析python文档页面的URL
http://www.python.org/lib/mole-urlparse.html
利用拼接方式添加更多python文档页面的URL
http://www.python.org/lib/mole-urllib.html
http://www.python.org/lib/mole-urllib2.html
http://www.python.org/lib/mole-httplib.html
http://www.python.org/lib/mole-cgilib.html
通过拼接子路径来生成Python文档页面的URL
⑵ python中url用什么符号拼接
普通的加号就可以啦
myUrl = self.url + str(i) + '.html'
⑶ 最基础的format拼接url放在for里怎么写
用代码写。
通过python的format函数即可完成拼接,把所以ID放到一个集合里,使用for循环就可以批量替换了。
输入python回车之后,urls列表中将tag=python赋值给tag,在for循环的作用下赋值了两次,之后整个的被看成是一个整体,此时,继续for循环,将1和2赋值给变量i,但是此时的url构造已经是一个完整。
⑷ python3中为什么urlparse.urljoin没有了
python3对urllib和urllib2进行了重构,拆分成了urllib.request, urllib.response, urllib.parse, urllib.error等几个子模块,这样的架构从逻辑和结构上说更加合理。
urljoin现在对应的函数是urllib.parse.urljoin
⑸ python url拼接代码
方法来自网络,保存以便以后自用。
经测试可正确拼接下列形式
base1 = ' http://www.bagtree.com/' url1 = '../../themes/bagtree_2011/images/pin.gif'
base2 = ' http://info.ceo.hc360.com/list/qygl-ldl.shtml' url2 = '/2011/11/250020188368.shtml'
base3 = ' http://info.ceo.hc360.com/2012/07/190833206838.shtml' url3 = '190833206838-2.shtml'
1_url = " https://pvp.qq.com/web201605/ "
2_url="/herodetail/531.shtml"
add_url =" https://pvp.qq.com/web201605/herodetail/531.shtml "
⑹ python爬虫如何给url设置变量
url='http://xxxxxxx.simple.com/xxxxxxxx'
data={
'xxx':0,
'type':0,
'status':3,
'actName':''}
cookies={'xxxx':'xxxxxx',
'uid':'xxxxxx'}
data['xxx']=44
h=requests.get(url,params=data,cookies=cookies,timeout=3000)
#url可以通过h.url查看
requests可以通过params自动拼接
如果是urllib, 没用过, 只知道parse可以拼接参数
>>>importurllib
>>>urllib.parse.urlencode({"a":11,"b":22})
'a=11&b=22'
⑺ 【Python中常用的库系列】——操作url的模块urlparse 模块
文章目录
一、功能介绍
二、功能介绍
1.`urlparse.urlparse`
2.`urlparse.urlsplit`
3.`urlparse.urljoin`
一、功能介绍
官方文档 :http://docs.python.org/library/urlparse.html
作用:urlparse模块主要是用于解析url中的参数 对url按照一定格式进行 拆分或拼接
注意:urlparse 模块在 python 3.0 中 已经改名为 urllib.parse
二、功能介绍
1.urlparse.urlparse
1.1 获取ParseResult对象
将url分为6个部分,返回一个包含6个字符串的元组:协议、位置、路径、参数、查询、片段。
举例:
import urlparse
url_change = urlparse.urlparse('https://i.cnblogs.com/EditPosts.aspx?opt=1')
print url_change
'''
输出结果:
ParseResult(scheme='https', netloc='i.cnblogs.com', path='/EditPosts.aspx', params='', query='opt=1', fragment='')
'''
scheme 是协议
netloc 是域名服务器
path 相对路径
params是参数
query是查询的条件
fragment是片段
1.2获取结果的某一项
import urlparse
url_change = urlparse.urlparse('https://i.cnblogs.com/EditPosts.aspx?opt=1')
print url_change.query # opt=1
print url_change.scheme # https
1.3获取结果的某一项,用字典或元组展示
import urlparse
url_change = urlparse.urlparse('https://i.cnblogs.com/EditPosts.aspx?opt=1')
print urlparse.parse_qs(url_change.query) # {'opt': ['1']}
print urlparse.parse_qsl(url_change.query) # [('opt', '1')]
2.urlparse.urlsplit
2.1获取SplitResult对象
和urlparse差不多,将url分为5部分,返回一个包含5个字符串项目的元组:协议、位置、路径、查询、片段。
import urlparse
url_change = urlparse.urlsplit('https://i.cnblogs.com/EditPosts.aspx?opt=1')
print url_change
'''
输出结果:
SplitResult(scheme='https', netloc='i.cnblogs.com', path='/EditPosts.aspx', query='opt=1', fragment='')
'''
scheme 是协议
netloc 是域名服务器
path 相对路径
query是查询的条件
fragment是片段
2.2获取某一项
print url_change.scheme # https
3.urlparse.urljoin
将相对的地址组合成一个url,对于输入没有限制,开头必须是http://或者https://,否则将不组合前面。
import urlparse
new_url = urlparse.urljoin('https://.com/ssss/','88888')
print new_url
'''
https://.com/ssss/88888
''' 注意 :如果输入错误信息 如 new_url = urlparse.urljoin('122','88888') 并不会将两者合并,而输出后边的链接,即‘88888’
域名放在第一个参数,第二个参数为要和域名拼接的子链接
⑻ 利用Python缩短URL链接
有时候我们要把一些链接发短信通知别人,如果链接太长,一条短信支持不了。
发现Python就可以解决这个问题。
第一步: 安装库
在windows下,输入cmd,进入DOS界面,输入 pip install pyshorteners
当然,前提是你已经安装了pip
第二步:写程序
第三步:调用程序
如果你是用Jupyter Notebook,你可以参考以下步骤
⑼ python爬虫数据提取
理论上可以,实际要看目标网页的情况,反爬虫机制、js动态刷新抓取都是比较头疼的。
当然如果不考虑效率,selenium 之类的网页自动化方式,通常都可以实现。
⑽ Python有包可以合并两个url吗就是将两个url整合成为一个,不同的应用扫描访问不同的url
from urllib import parse
parse.join()可以合并URL