from urllib import request,parse
from urllib.error import HTTPError,URLError
from http import cookiejar
#定义一个类用来实现cookie的存储
class Cookieset(object):
def __init__(self):
#这里类似于创建一个容易用来存放你的cookie
cookie_object = cookiejar.CookieJar()
#这个作用是如果在执行opener时遇到了cookie就把cookie放到cookie_object里面
handler = request.HTTPCookieProcessor(cookie_object)
#把opener变成类里的属性
self.opener = request.build_opener(handler)
#对象内的get方法
def get(self,url,headers=None):
#调用外部的get函数
return get(url,headers=headers,opener=self.opener)
#对象内的post方法
def post(self,url,form=None,headers=None):
return post(url,form=form,headers=headers,opener=self.opener)
#从下面的urlrequest详细封装了post方法函数
def post(url,form=None,headers=None,opener=None):
return urlrequests(url,form=form,headers=headers,opener=opener)
#从下面的urlrequest详细封装了get方法函数
def get(url,headers=None,opener=None):
return urlrequests(url,headers=headers,opener=opener)
#定义总方法
def urlrequests(url,form=None,headers=None,opener=None):
html_bytes = b''
#自定义请求名字
user_agent = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36'
if not headers:
headers = {
'User-Agent':user_agent
}
try:
#判断是否给他传递了form参数
if form:
#把form装换成字符串
form_str = parse.urlencode(form)
#把其转换成bytes
form_bytes = form_str.encode('utf-8')
#调用函数
req = request.Request(url,data=form_bytes,headers=headers)
else:
req = request.Request(url,headers=headers)
# 判断是否有opener传入
if opener:
response = opener.open(req)
else:
response = request.urlopen(req)
html_bytes = response.read()
#异常捕获
except HTTPError as e:
print(e)
except URLError as e:
print(e)
return html_bytes
if __name__ == '__main__':
pass
#在这里你可以根据自己的需求传入你自己的URL,headers和form;
#你也可以选择get和post方法,方法是封装在类里面的函数
用cookie来通过一个简单的登录验证的爬虫方法
猜你喜欢
转载自blog.csdn.net/yangbenhao/article/details/81674935
今日推荐
周排行