Python笔记(十三):urllib模块

(一)      URL地址

URL地址组件


URL组件


说明


scheme


网络协议或下载方案


net_loc


服务器所在地(也许含有用户信息)


path


使用(/)分割的文件或CGI应用的路径


params


可选参数


query


连接符(&)分割的一系列键值对


fragment


指定文档内特定锚的部分

net_loc组件

user:[email protected]:port


组件


说明


user


用户名或登录


password


用户密码


host


运行web服务器的计算机名称或地址(必需)


port


端口号(如果不是默认的80)

 

(二)      urllib

这里主要说明urllib.request和urllib.parse.

(三)      urllib.request

urllib.request


组件


说明

urlopen(url,data=None)

打开URL链接,并返回一个文件类型对象,就像open用二进制只读方式在本地打开了一个文件一样。

url:可以是url字符串,也可以是请求对象

data:url是post请求时,可以指定要传的数据

urlretrieve(url,filename=None)

下载url中的文件

filename:文件名及路径(没有指定路径则存放到当前工作目录下)

urlopen对象方法


组件


说明

read()

读取所有数据

readline()

读取一行数据

readlines()

读取所有行,作为列表返回

fileno()

返回文件句柄

close()

关闭url连接(close及上面4个方法和open的同名方法是一样的)

info()

返回MIME(多目标因特网邮件扩展)头文件。这个头文件通知浏览器返回的文件类型、以及可用哪类应用程序打开。

geturl()

返回真正的url(例如如果出现重定向,就可以从最终打开的文件中获得真正的url)

getcode()

返回HTTP状态码

 1 import  urllib.request
 2 url = ‘https://tieba.baidu.com/p/5475267611‘
 3 #打开url(就像用open二进制只读方式打开一个文件一样),使用read读取所有数据
 4 html = urllib.request.urlopen(url).read()
 5 print(type(html))
 6
 7 url_file = ‘https://imgsa.baidu.com/forum/w%3D580/sign=99114e38abec08fa260013af69ef3d4d/e549b13533fa828bc80c7764f61f4134960a5a85.jpg‘
 8 #下载url中的文件并保存
 9 urllib.request.urlretrieve(url_file,‘C:\Temp\\1.jpg‘)
10
11 #返回MIEM头文件
12 html_info = urllib.request.urlopen(url).info()
13 print(html_info)

(四)      urlib.parse

urlib.parse


函数


说明


urlparse(urlstr)


将url解析为一个元组(scheme=‘‘, netloc=‘‘, path=‘‘, params=‘‘, query=‘‘, fragment=‘‘)


urlunparse(urltup)


和urlparse相反,将url组件(一个元组)拼接为完整的url


urljoin(base,url)


将base的根域名和url拼接为一个完整的url

base:函数会自动截取net_loc及前面的所有内容

 1 import urllib.parse
 2
 3 url = ‘https://www.cnblogs.com/cate/python/‘
 4 newurl = ‘/cate/ruby/‘
 5 #将url解析为一个元组(scheme=‘‘, netloc=‘‘, path=‘‘, params=‘‘, query=‘‘, fragment=‘‘)
 6 urlpar = urllib.parse.urlparse(url)
 7 print(‘urlparse示例:‘,urlpar)
 8 #和urlparse刚好相反,将元组(scheme=‘‘, netloc=‘‘, path=‘‘, params=‘‘, query=‘‘, fragment=‘‘)拼接为完整的url
 9 urlunp = urllib.parse.urlunparse(urlpar)
10 print(‘urlunparse示例:‘,urlunp)
11 #将url netloc及前面部分的内容与newurl连接起来
12 url_ruby = urllib.parse.urljoin(url,newurl)
13 print(‘urljoin示例:‘,url_ruby)

原文地址:https://www.cnblogs.com/simple-free/p/8966795.html

时间: 2024-08-01 11:27:00

Python笔记(十三):urllib模块的相关文章

Python3学习笔记(urllib模块的使用)转http://www.cnblogs.com/Lands-ljk/p/5447127.html

Python3学习笔记(urllib模块的使用) 1.基本方法 urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None) -         url:  需要打开的网址 -         data:Post提交的数据 -         timeout:设置网站的访问超时时间 直接用urllib.request模块的urlopen()

Python爬虫之urllib模块1

本文来自网友投稿.作者PG,一个待毕业待就业二流大学生.玄魂工作室未对该文章内容做任何改变. 因为本人一直对推理悬疑比较感兴趣,所以这次爬取的网站也是平时看一些悬疑故事的网站,同时也是因为这个网站在编码上面和一些大网站的博客不同,并不那么规范,所以对于初学者还是有一定的挑战性的.我打算把这个爬虫分三次讲,所以每次都先完成一个小目标(当然不是一个亿啦),这次课我们先爬取当前页面的并且下载第一篇文章.第二次课我们就将爬取当前页面的=所有的链接进行下载,第三次课我们将把整个板块的文章都下载下来. 演示

Python爬虫进阶——urllib模块使用案例【淘宝】

很多时候呢,我们都是读取本地HTML文件来进行爬虫练手,但每次都要手打不同的HTML明显耗时耗力: 还有些小伙伴不喜欢F12,偏偏喜欢在Pycharm中查看HTML的源代码: -- 难道每次都只能"复制--新建--粘贴--保存"一条龙服务吗? 不不不,我们还有Python的第三方库--urllib. urllib模块是模拟浏览器去访问URL地址,然后拿到服务器响应回来的数据,也就是整个HTML文件. 代码如下: import urllib.request as ur # urlopen

Python 学习之urllib模块---用于发送网络请求,获取数据

1.urllib urllib是Python标准库的一部分,包含urllib.request,urllib.error,urllib.parse,urlli.robotparser四个子模块. (1)urllib.request用法 1)urlopen函数:用于打开一个URL(urlopen返回一个类文件对象,可以像文件一样操作) 例如: import urllib.request web=urllib.request.urlopen('http://www.baidu.com') conten

python笔记22-常用模块

模块就是一个python文件,用哪个模块就要import哪个模块 1.调用模块 # import model #import的本质就是把这个python从头到尾执行一遍## model.run1()#调用model模块下的run1函数# model.run2()# model.run() 2.调用模块下函数 # from model import run,run1 (方法1)# #只导入某个函数的时候,只导入run,run1函数# run()# run1() # from model impor

Python 学习之urllib模块---用于发送网络请求,获取数据(5)

查询城市天气最后一节 需要导入上一节的结果city10.py #!/usr/bin/python# -*- coding: UTF-8 -*-import urllib.requestfrom  city10 import city     #从city10.py里导入city变量名称import json         #json包,loads的用法import traceback cityname=input('你想查询什么城市的天气?\n') citycode=city.get(city

python笔记6:模块

6. 模块(一个 .py 文件称为一个模块Module) import 语句 类似 _xxx 和 __xxx 这样的 函数/变量 是非公开的(private),不应该被直接引用 函数定义: 外部不需要引用的函数全部定义成private,只有外部需要引用的函数才定义为public. 实例属性和类属性 千万不要把实例属性和类属性使用相同的名字,因为相同名称的实例属性将屏蔽掉类属性,但是当你删除实例属性后,再使用相同的名称,访问到的将是类属性. @property装饰器 --简化代码,避免每个函数编写

Python 学习之urllib模块---用于发送网络请求,获取数据(3)

上节内容,是得到了省/直辖市编码,如web='http://m.weather.com.cn/data5/city01',我们需要继续获取此接口的数据,于是进行下面的操作 for  i  in   b:                #i=b[0],b[1],b[2]...... code=i.split('|')[0] web='http://m.weather.com.cn/data5/city%s' web1=web %code content2=urllib.request.urlope

Python 学习之urllib模块---用于发送网络请求,获取数据(2)

接着上一次的内容. 先说明一下关于split()方法:它通过指定分隔符对字符串进行切片,如果参数num 有指定值,则仅分隔 num 个子字符串(把一个字符串分割成很多字符串组成的list列表) 语法:str.split(str="", num=string.count(str)). 参数:str 分隔符,默认为空格.num 分割次数 返回值:返回分割后的字符串列表 例如:你需要将一个英语句子中的每一个单词拿出来单独处理,就可以将其进行分割. 如:a=' I am a new stude

Python 学习之urllib模块---用于发送网络请求,获取数据(4)

承接将查询城市编码的结果保存到文件中,以字典的形式保存,目的是为了在查询某个城市的天气的时候,能够通过输入的城市名称,找到对应的城市编码.所以此结果字典的数据结构,就是city={城市名称:城市编码} so,可以这样编写: 当然,你可以打印出结果看看. 现在我们就需要将这个结果写到文件中去了.注意,这里就需要用到昨天说的python3编码的知识啦,结尾有提到哦. import  codecs ff=codecs.open('c:\Python34\city10.py','w','utf-8')