Python爬虫入门:使用urllib模块获取请求页面信息
  欢迎来到拖更王的小博客,天天想着要把学习和工作中遇到的内容发布到空间,但是因为忙总是忘(这个借口真好)。以后还应该会坚持什么时候想起来什么时候更新的好习惯吧。
  今天说一下python爬虫中一个常用的模块urllib,urllib和requests一样都是用来发起页面请求进行获取页面信息的模块,但是不同的是requests要比urllib更强大,用起来更方便,requests属于第三方模块,需要单独安装,而urllib属于内置模块,可以直接导入使用,下面就使用urllib写两个小的案例进行实际演示,建议新手也跟着操作一下。一个是获取页面信息,一个是使用cookie登录人人网登录。
# 导入urllib模块,想用哪种方式自己选择
# import urllib.request
from urllib import request
# 目标网址
url = ‘http://www.baidu.com’
# 发起请求
response = request.urlopen(url)
# 使用*种导入模块的方式如下
# response = urllib.request.urlopen(url)
# 直接打印response的话只能得到一个HTTPResposne类型的对象
# print(response)
# 所以需要使用read()方法解析获取页面,*后并转码为utf-8
html = response.read().decode(‘utf-8’)
# 打印获取页面
print(html)
  部分网站有简单的反爬措施,比如需要加上headers信息,如User-Agent、Cookie等,添加上即可。
  此时再多加上一行创建请求对象的代码即可。如下:
# 在解析页面时,部分网站需要添加请求头信息来跳过基本的反爬措施,可以使用Request构建带有请求头的对象
resobj = request.Request(url,headers=headers)
from urllib import request, parse
# 使用cookiejar获取cookie
from http import cookiejar
# 构造cookie_bag储存对象
cookie_bag = cookiejar.CookieJar()
# 请求页面时将获取的cookie存入cookie_bag中
handler = request.HTTPCookieProcessor(cookie_bag)
# 在相应页面时处理cookie的时候使用handler内部中的build_opener创建一个opener对象,用来存储cookie对象
opener = request.build_opener(handler)
# url建议从network进行复制选择
url = ‘http://www.renren.com/ajaxLogin/login?’
# form可以F12查看从network中查看一下登录的Form Data,如没有登录一下进行刷新,并勾选Preserve log
form = {
    ’email’:’xxxxx@163.com’,
    ‘icode’:”,
    ‘origURL:http’:’//www.renren.com/home’,
    ‘domain’:’renren.com’,
    ‘key_id’:’1′,
    ‘captcha_type’:’web_login’,
    ‘password’:’xxxxx’,
    ‘rkey’:’cb15f985754fd884a44506ff5db1256e’,
    ‘f’:”,
}
form = parse.urlencode(form).encode(‘utf-8’)
response = opener.open(url, form)
res = response.read()
print(res)