python学习_Python如何安装urllib2库

python学习_Python如何安装urllib2库

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.baidu.com")
 
# 类文件工具撑持 文件工具的操纵办法,如read()办法读取文件局部内容,前往字符串
html = response.read()
 
# 打印字符串
print html

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

Power@PowerMac ~$: python urllib2_urlopen.py

实践上,假如咱们正在阅读器上翻开百度主页, 右键挑选“检查源代码”,你会发明,跟咱们方才打印进去的是如出一辙。也便是说,下面的4行代码就曾经帮咱们把百度的首页的局部代码爬了上去。

一个根本的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.baidu.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库的具体内容,更多请存眷酷吧易资源网别的相关文章!

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

酷吧易资源网 python教程 python学习_Python如何安装urllib2库 https://www.kubayi.com/5003.html

常见问题

相关文章

评论
暂无评论