Python超级简单入门学习 Urllib库

python爬虫基础之Urllib库

1.案例1:访问url读取返回结果

import urllib2
response = urllib2.urlopen("http://www.网址.com")
print (response.read())	 

说明:
urlopen(url, data, timeout)
  第一个参数url即为URL,第二个参数data是访问URL时要传送的数据,第三个timeout是设置超时时间。
  第二三个参数是可以不传送的,data默认为空None,timeout默认为 socket._GLOBAL_DEFAULT_TIMEOUT
  第一个参数URL是必须要传送的,在这个例子里面我们传送了百度的URL,执行urlopen方法之后,返回一个response对象,返回信息便保存在这里面

2.案例2:构造request访问url读取返回结果

import urllib2
request = urllib2.Request("http://www.baidu.com");
response = urllib2.urlopen(request)
print response.read()	

说明:
运行结果是完全一样的,只不过中间多了一个request对象,更加面向对象

3.案例3:Get提交

import urllib
import urllib2
data = urllib.urlencode({"username":"张三","psw":"123"})
request = urllib2.Request("http://www.baidu.com?"+data)
response = urllib2.urlopen(request)
print response.read()

此处通过urlencode方法对请求参数实现URL编码操作

4.案例4:Post提交

import urllib
import urllib2
data = urllib.urlencode({"username":"park","password":"123"}) 
request = urllib2.Request("https://www.网址.com",data)
response = urllib2.urlopen(request)
print response.read()

5.案例5:设置Headers
  有些网站不会同意程序直接用上面的方式进行访问,如果识别有问题,那么站点根本不会响应,所以为了完全模拟浏览器的工作,我们需要设置一些Headers 的属性。

import urllib  
import urllib2  
url = 'http://www.网址.com'

data = urllib.urlencode({"username":"park","password":"123"}) 
headers = { 'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3559.6 Safari/537.36'}  
request = urllib2.Request(url, data, headers)  
response = urllib2.urlopen(request)  
print response.read() 

6.案例6:代理设置
  urllib2 默认会使用环境变量 http_proxy 来设置 HTTP Proxy。
假如一个网站它会检测某一段时间某个IP 的访问次数,如果访问次数过多,它会禁止访问。则可以设置一些代理服务器,每隔一段时间换一个代理,以此绕过ip检测。

import urllib2
enable_proxy = True
proxy_handler = urllib2.ProxyHandler({"http" : 'http://127.0.0.1:1080'})
null_proxy_handler = urllib2.ProxyHandler({})
if enable_proxy:
    opener = urllib2.build_opener(proxy_handler)
else:
    opener = urllib2.build_opener(null_proxy_handler)
urllib2.install_opener(opener)	 

7.案例7:超时时间设置

import urllib2
response = urllib2.urlopen('http://www.baidu.com', timeout=10)
或
import urllib2
response = urllib2.urlopen('http://www.baidu.com',data, 10)	 

8.案例8:开启调试模式
  可以通过下面的方法把 Debug Log 打开,这样收发包的内容就会在屏幕上打印出来,方便调试

import urllib2
httpHandler = urllib2.HTTPHandler(debuglevel=1)
httpsHandler = urllib2.HTTPSHandler(debuglevel=1)
opener = urllib2.build_opener(httpHandler, httpsHandler)
urllib2.install_opener(opener)
response = urllib2.urlopen('http://www.网址.com')

9.案例9:使用cookie
  当你获取一个URL你使用一个opener(一个urllib2.OpenerDirector的实例)。在前面,我们都是使用的默认的opener,也就是urlopen。它是一个特殊的opener,可以理解成opener的一个特殊实例,传入的参数仅仅是url,data,timeout。
  如果我们需要用到Cookie,只用这个opener是不能达到目的的,所以我们需要创建更一般的opener来实现对Cookie的设置。

import cookielib
import urllib2
#设置保存cookie的文件,同级目录下的cookie.txt
filename = 'cookie.txt'
#声明一个MozillaCookieJar对象实例来保存cookie,之后写入文件
cookie = cookielib.MozillaCookieJar(filename)
#利用urllib2库的HTTPCookieProcessor对象来创建cookie处理器
handler = urllib2.HTTPCookieProcessor(cookie)
#通过handler来构建opener
opener = urllib2.build_opener(handler)
#创建一个请求,原理同urllib2的urlopen
response = opener.open("http://www.baidu.com")
#保存cookie到文件
#ignore_discard的意思是即使cookies将被丢弃也将它保存下来,ignore_expires的意思是如果在该文件中cookies已经存在,则覆盖原文件写入,在这里,我们将这两个全部设置为True。
cookie.save(ignore_discard=True, ignore_expires=True)
 
 
import cookielib
import urllib2
#创建MozillaCookieJar实例对象
cookie = cookielib.MozillaCookieJar()
#从文件中读取cookie内容到变量
cookie.load('cookie.txt', ignore_discard=True, ignore_expires=True)
#创建请求的request
req = urllib2.Request("http://www.baidu.com")
#利用urllib2的build_opener方法创建一个opener
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
response = opener.open(req)
print response.read()

你可能感兴趣的:(学习,python)