python3 urllib怎么用-问答-阿里云开发者社区-阿里云

开发者社区> 云计算小粉> 正文

python3 urllib怎么用

2018-05-10 20:09:59 909 1

python3 urllib怎么用

取消 提交回答
全部回答(1)
  • 元芳啊
    2019-07-17 22:19:59

    Py2.x:

    Urllib库
    Urllin2库
    Py3.x:

    Urllib库
    变化:

    在Pytho2.x中使用import urllib2——-对应的,在Python3.x中会使用import urllib.request,urllib.error。
    在Pytho2.x中使用import urllib——-对应的,在Python3.x中会使用import urllib.request,urllib.error,urllib.parse。
    在Pytho2.x中使用import urlparse——-对应的,在Python3.x中会使用import urllib.parse。
    在Pytho2.x中使用import urlopen——-对应的,在Python3.x中会使用import urllib.request.urlopen。
    在Pytho2.x中使用import urlencode——-对应的,在Python3.x中会使用import urllib.parse.urlencode。
    在Pytho2.x中使用import urllib.quote——-对应的,在Python3.x中会使用import urllib.request.quote。
    在Pytho2.x中使用cookielib.CookieJar——-对应的,在Python3.x中会使用http.CookieJar。
    在Pytho2.x中使用urllib2.Request——-对应的,在Python3.x中会使用urllib.request.Request。
    快速爬取一个网页
    import urllib.request

    file=urllib.request.urlopen('http://www.baidu.com')

    data=file.read() #读取全部

    dataline=file.readline() #读取一行内容

    fhandle=open("./1.html","wb") #将爬取的网页保存在本地
    fhandle.write(data)
    fhandle.close()

    浏览器的模拟
    应用场景:有些网页为了防止别人恶意采集其信息所以进行了一些反爬虫的设置,而我们又想进行爬取。
    解决方法:设置一些Headers信息(User-Agent),模拟成浏览器去访问这些网站。

    import urllib.request
    import urllib.parse

    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)
    reponse = urllib.request.urlopen(request).read()

    fhandle = open("./baidu.html", "wb")
    fhandle.write(reponse)
    fhandle.close()

    代理服务器的设置
    应用场景:使用同一个IP去爬取同一个网站上的网页,久了之后会被该网站服务器屏蔽。
    解决方法:使用代理服务器。 (使用代理服务器去爬取某个网站的内容的时候,在对方的网站上,显示的不是我们真实的IP地址,而是代理服务器的IP地址)

    def use_proxy(proxy_addr,url):

    import urllib.request
    proxy=urllib.request.ProxyHandler({'http':proxy_addr})
    opener=urllib.request.build_opener(proxy,urllib.request.HTTPHandler)
    urllib.request.install_opener(opener)
    data=urllib.request.urlopen(url).read().decode('utf8')
    return data
    

    proxy_addr='61.163.39.70:9999'
    data=use_proxy(proxy_addr,'http://www.baidu.com')
    print(len(data))

    Cookie的使用
    应用场景:爬取的网页涉及登录信息。访问每一个互联网页面,都是通过HTTP协议进行的,而HTTP协议是一个无状态协议,所谓的无状态协议即无法维持会话之间的状态。

    import urllib.request
    import urllib.parse
    import urllib.error
    import http.cookiejar

    url='http://bbs.chinaunix.net/member.php?mod=logging&action=login&loginsubmit=yes&loginhash=La2A2'
    data={

    'username':'zhanghao',
    'password':'mima',

    }
    postdata=urllib.parse.urlencode(data).encode('utf8')
    header={

    'User-Agent':'Mozilla/5.0 (X11; Fedora; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'

    }

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

    使用http.cookiejar.CookieJar()创建CookieJar对象

    cjar=http.cookiejar.CookieJar()

    使用HTTPCookieProcessor创建cookie处理器,并以其为参数构建opener对象

    cookie=urllib.request.HTTPCookieProcessor(cjar)
    opener=urllib.request.build_opener(cookie)

    将opener安装为全局

    urllib.request.install_opener(opener)

    try:

    reponse=urllib.request.urlopen(request)

    except urllib.error.HTTPError as e:

    print(e.code)
    print(e.reason)
    

    fhandle=open('./test1.html','wb')
    fhandle.write(reponse.read())
    fhandle.close()

    url2='http://bbs.chinaunix.net/forum-327-1.html' #打开test2.html文件,会发现此时会保持我们的登录信息,为已登录状态。也就是说,对应的登录状态已经通过Cookie保存。
    reponse2=urllib.request.urlopen(url)
    fhandle2=open('./test2.html','wb')
    fhandle2.write(reponse2.read())
    fhandle2.close()

    0 0
相关问答

3

回答

专有云升级aliyun-python-sdk-core后报错。而location-readonly.aliyuncs.com域名可以通过curl访问。

萌萌怪兽 2018-10-15 20:46:31 51519浏览量 回答数 3

6

回答

osscmd,一条命令上传和下载的python工具

wood23 2012-06-30 12:08:18 39902浏览量 回答数 6

5

回答

设置跨域资源共享CORS并使用JS表单PostObject直接上传到OSS

wood23 2015-02-12 08:11:09 40622浏览量 回答数 5

22

回答

爬虫数据管理【问答合集】

我是管理员 2018-08-10 16:37:41 146804浏览量 回答数 22

41

回答

OSS FTP工具发布啦

oss-dev 2015-12-23 16:58:56 66021浏览量 回答数 41

42

回答

【精品问答集锦】Python热门问题

小六码奴 2019-05-30 15:27:34 135581浏览量 回答数 42

249

回答

阿里云LNAMP(Linux + Nginx + Apache + MySQL + PHP)环境一键安装脚本

云代维 2014-02-14 15:26:06 302626浏览量 回答数 249

24

回答

【精品问答】python技术1000问(1)

问问小秘 2019-11-15 13:25:00 471492浏览量 回答数 24

30

回答

基础语言百问-Python

薯条酱 2017-05-17 18:01:13 64762浏览量 回答数 30

21

回答

OSS新手视频教程!

聚小编 2013-01-14 18:09:51 57998浏览量 回答数 21
189
文章
6218
问答
推荐问答
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载