Python3中urllib使用介绍

Py2.x:

  • Urllib
  • Urllin2

Py3.x:

  • Urllib

变化:

  • 在Pytho2.x中使用import urllib2——-对应的,在Python3.x中会使用import urllib.requesturllib.error
  • 在Pytho2.x中使用import urllib——-对应的,在Python3.x中会使用import urllib.requesturllib.errorurllib.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()
  • 47
    点赞
  • 207
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
### 回答1: 使用 Python3 安装 urllib3 的方法是在命令行输入: `pip3 install urllib3`。 如果你没有安装 pip3,那么需要先安装 pip3,在命令行输入: `sudo apt-get install python3-pip` ### 回答2: 要安装urllib3,首先需要确保您已经安装了Python3解释器。接下来,您可以按照以下步骤来安装urllib3: 1. 打开终端或命令提示符窗口。 2. 执行以下命令来安装urllib3: ```bash pip3 install urllib3 ``` 这将使用pip3工具在您的Python3解释器安装urllib3包。在终端或命令提示符窗口,您将看到一些输出信息,以显示安装过程和安装的版本号。 3. 当安装完成后,您可以在Python脚本使用urllib3包。只需在Python脚本的开头添加以下导入语句: ```python import urllib3 ``` 现在,您可以使用urllib3库提供的各种功能来进行网络请求、处理URL等操作。 请注意,如果您已经安装了某个包的不同版本,并且想要更新到最新版本,可以使用以下命令: ```bash pip3 install --upgrade urllib3 ``` 这将更新已安装的urllib3包到最新版本。 ### 回答3: 要安装Pythonurllib3,可以按照以下步骤进行操作: 1. 打开你的终端或命令提示符。 2. 确保你已经安装了Python 3。你可以在命令行输入 "python3 --version" 来验证是否已安装。 3. 运行以下命令来安装urllib3: ```bash pip3 install urllib3 ``` 4. 如果你在Linux或macOS上进行操作,可能需要使用sudo来获取管理员权限: ```bash sudo pip3 install urllib3 ``` 5. 等待命令执行完毕,这样urllib3库就会被成功安装到你的Python环境了。 安装成功后,你就可以在自己的Python脚本使用urllib3库来实现网络请求、发送HTTP请求等各种功能了。如果你想使用urllib3库的特定版本,也可以在安装命令指定版本号,例如: ```bash pip3 install urllib3==1.25.3 ``` 这样就会安装指定的1.25.3版本。如果你已经安装了urllib3库,但希望更新到最新版本,可以使用以下命令: ```bash pip3 install --upgrade urllib3 ``` 这样就会将urllib3库更新到最新可用版本。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值