Python3中urllib使用介绍
来源:互联网 发布:hive sql minus用法 编辑:程序博客网 时间:2024/05/29 04:47
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.requestfile=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.requestimport urllib.parseurl = '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 dataproxy_addr='61.163.39.70:9999'data=use_proxy(proxy_addr,'http://www.baidu.com')print(len(data))
Cookie
的使用
应用场景:爬取的网页涉及登录信息。访问每一个互联网页面,都是通过HTTP
协议进行的,而HTTP
协议是一个无状态协议,所谓的无状态协议即无法维持会话之间的状态。
import urllib.requestimport urllib.parseimport urllib.errorimport http.cookiejarurl='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
- Python3中urllib使用介绍
- Python3 中urllib的使用
- python3.x中urllib的使用
- python3.x 中urllib的使用
- Python3中urllib.request.retrieve的使用
- python3中urllib库的使用
- Python3 urllib模块使用
- Python3中urllib详细使用方法
- Python3中urllib学习笔记
- Python3中urllib详细使用方法
- python3 下载文件urllib使用
- python3 urllib使用debug输出
- Python3: urllib.request 的使用
- Urllib.request用法简单介绍(Python3.3)
- python3.3中urllib.request.open问题
- Python3中urllib的UnicodeDecodeError错误
- Python3中urllib的一点坑
- Python3:urllib中urlopen()函数新特点
- 高精度加法入门详解
- OCLint的部分规则(Migration 部分)
- 调用系统的拨打电话
- ACM集训日记-8月19日
- Telehash (JSON + UDP + DHT = Freedom )
- Python3中urllib使用介绍
- CSS z-index的用法
- 关于EL表达式在JSP页面中不能识别的问题
- Picasso源码分析
- 【学习笔记】DOM中的节点操作函数以及属性
- MOS管好坏的判别方法
- 解析Java异常处理机制
- Sublime Text3快捷键
- [py]py装饰器原理