前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python中urllib的整理

python中urllib的整理

作者头像
py3study
发布2020-01-19 16:00:19
3690
发布2020-01-19 16:00:19
举报
文章被收录于专栏:python3python3

本不想使用这个玩意,奈何看到很多地方使用,随手整理下

urllib模块提供的urlretrieve()函数,urlretrieve()方法直接将远程数据下载到本地

urlretrieve(url, filename=None, reporthook=None, data=None)。

  • 参数filename指定了保存本地路径(如果参数未指定,urllib会生成一个临时文件保存数据。)
  • 参数reporthook是一个回调函数,当连接上服务器、以及相应的数据块传输完毕时会触发该回调,我们可以利用这个回调函数来显示当前的下载进度
  • 参数data指post导服务器的数据,该方法返回一个包含两个元素的(filename, headers) 元组,filename 表示保存到本地的路径,header表示服务器的响应头

urlopen一般常用的有三个参数:

urllib.requeset.urlopen(url,data,timeout)

        url:  需要打开的网址

        data:Post提交的数据

        timeout:设置网站的访问超时时间

urlopen返回对象提供一些基本方法(快速请求)

read() :返回文本数据

readline():返回一行

info():表示远程服务器返回的头信息。

getcode():返回Http状态码,如果是http请求,200表示请求成功完成;404表示网址未找到。

geturl():返回请求的url。

直接用urllib.request模块的urlopen()获取页面,req的数据格式为bytes类型,需要decode()解码,转换成str类型

代码语言:javascript
复制
import urllib.request
import re
url = 'http://tieba.baidu.com/p/2460150866'
req=urllib.request.urlopen(url).read().decode()
r=re.findall(r'src="(.*?\.jpg)" pic_ext',req)
x=0
for i in r:
    local='F://python/'
    urllib.request.urlretrieve(i,local+ '%s.jpg' % x)
    x=x+1

浏览器的模拟(需要添加headers头信息,urlopen不支持,需要使用Request)

import urllib.request

url='http://www.baidu.com'

header={'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.96 Safari/537.36'}

request=urllib.request.Request(url,headers=header)

response=urllib.request.urlopen(request).read()

f=open('file1','wb')

f.write(response)

f.close()

代码语言:javascript
复制
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-03-16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档