Python如何安装urllib2库-Python教程

资源魔 25 0

urllib2 是 Python2.7 自带的模块(没有需求下载,导入便可应用)。

urllib2库的根本应用

所谓网页抓取,就是把URL地点中指定的网络资本从网络流中读掏出来,保留到内陆。 正在Python中有不少库能够用来抓取网页,咱们先学习urllib2。

urllib2 是 Python2.7 自带的模块(没有需求下载,导入便可应用)
urllib2 民间文档:https://docs.python.org/2/library/urllib2.html
urllib2 源码:https://hg.python.org/cpython/file/2.7/Lib/urllib2.py

urllib2 正在 python3.x 中被改成urllib.request

urlopen

咱们先来段代码:

# urllib2_urlopen.py
 
# 导入urllib2 库
import urllib2
 
# 向指定的url发送申请,并前往效劳器呼应的类文件工具
response = urllib2.urlopen("http://www.百度.com")
 
# 类文件工具支持 文件工具的操作办法,如read()办法读取文件全副内容,前往字符串
html = response.read()
 
# 打印字符串
print html

执行写的python代码,将打印后果

Power@PowerMac ~$: python urllib2_urlopen.py

实际上,假如咱们正在阅读器上关上baidu主页, 右键抉择“查看源代码”,你会发现,跟咱们方才打印进去的是如出一辙。也就是说,下面的4行代码就曾经帮咱们把baidu的首页的全副代码爬了上去。

一个根本的url申请对应的python代码真的十分简略。

Request

正在咱们第一个例子里,urlopen()的参数就是一个url地点;

然而假如需求执行更复杂的操作,比方添加HTTP报头,必需创立一个 Request 实例来作为urlopen()的参数;而需求拜访的url地点则作为 Request 实例的参数。

咱们编纂urllib2_request.py

# urllib2_request.py
 
import urllib2
 
# url 作为Request()办法的参数,结构并前往一个Request工具
request = urllib2.Request("http://www.百度.com")
 
# Request工具作为urlopen()办法的参数,发送给效劳器并接纳呼应
response = urllib2.urlopen(request)
 
html = response.read()
 
print html

运转后果是齐全同样的:

新建Request实例,除了了必需要有 url 参数以外,还能够设置另外两个参数:
data(默许空):是随同 url 提交的数据(比方要post的数据),同时 HTTP 申请将从 "GET"形式 改成 "POST"形式。
headers(默许空):是一个字典,蕴含了需求发送的HTTP报头的键值对。
这两个参数上面会说到。

User-Agent

然而这样间接用urllib2给一个网站发送申请的话,的确略有些冒昧了,就好比,人家每一家都有门,你以一个路人的身份间接闯出来显然没有是很礼貌。并且有一些站点没有喜爱被顺序(非工钱拜访)拜访,有可能会回绝你的拜访申请。

然而假如咱们用一个非法的身份去申请他人网站,显然人家就是欢送的,以是咱们就应该给咱们的这个代码加之一个身份,就是所谓的User-Agent头。

阅读器 就是互联网世界上公认被容许的身份,假如咱们心愿咱们的爬虫顺序更像一个实在用户,那咱们第一步,就是需求假装成一个被公认的阅读器。用没有同的阅读器正在发送申请的时分,会有没有同的User-Agent头。 urllib2默许的User-Agent头为:Python-urllib/x.y(x以及y是Python主版本以及次版本号,例如 Python-urllib/2.7)

#urllib2_useragent.py
 
import urllib2
 
url = "http://www.itcast.cn"
 
#IE 9.0 的 User-Agent,蕴含正在 ua_header里
ua_header = {"User-Agent" : "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0;"} 
 
#  url 连同 headers,一同结构Request申请,这个申请将附带 IE9.0 阅读器的User-Agent
request = urllib2.Request(url, headers = ua_header)
 
# 向效劳器发送这个申请
response = urllib2.urlopen(request)
 
html = response.read()
print html

增加更多的Header信息

正在 HTTP Request 中退出特定的 Header,来结构一个完好的HTTP申请音讯。

能够经过挪用Request.add_header() 增加/修正一个特定的header 也能够经过挪用Request.get_header()来查看已有的header。

增加一个特定的header

# urllib2_headers.py
 
import urllib2
 
url = "http://www.itcast.cn"
 
#IE 9.0 的 User-Agent
header = {"User-Agent" : "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0;"} 
request = urllib2.Request(url, headers = header)
 
#也能够经过挪用Request.add_header() 增加/修正一个特定的header
request.add_header("Connection", "keep-alive")
 
# 也能够经过挪用Request.get_header()来查看header信息
# request.get_header(header_name="Connection")
 
response = urllib2.urlopen(req)
 
print response.code     #能够查看呼应状态码
html = response.read()
 
print html

随机增加/修正User-Agent

# urllib2_add_headers.py
 
import urllib2
import random
 
url = "http://www.itcast.cn"
 
ua_list = [
    "Mozilla/5.0 (Windows NT 6.1; ) Apple.... ",
    "Mozilla/5.0 (X11; CrOS i686 2268.111.0)... ",
    "Mozilla/5.0 (Macintosh; U; PPC Mac OS X.... ",
    "Mozilla/5.0 (Macintosh; Intel Mac OS... "
]
 
user_agent = random.choice(ua_list)
 
request = urllib2.Request(url)
 
#也能够经过挪用Request.add_header() 增加/修正一个特定的header
request.add_header("User-Agent", user_agent)
 
# 第一个字母年夜写,前面的全副小写
request.get_header("User-agent")
 
response = urllib2.urlopen(req)
 
html = response.read()
print html

相干教程保举:Python视频教程

以上就是Python若何装置urllib2库的具体内容,更多请存眷资源魔其它相干文章!

标签: Python python教程 python编程 python使用问题

抱歉,评论功能暂时关闭!