python之cookie使用

cookie是web主机服务器返回给客户端登陆信息的一种密钥。在爬虫时,对于需要登陆账号密码的网站,若不使用cookie,则不能获取需要的信息。当使用cookie时,客户端可以多次直接获取服务器网页信息,不必重复登陆自己的账号密码。cookie的使用分为两种,第一种:将cookie放在header信息里面,采用post的请求方式,进行网页信息的获取。例如:

import urllib.request,urllib.parse
url='http://****com/'
headers={'user-agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36',
         'cookie':'************H_PS_PSSID=1421_21122_26350_28413; BDSFRCVID=kY-OJeC62uipAp69jB0prglYsg5rbsOTH6aV1uteHfFNlQlK3xZmEG0PeM8g0KubhaS4ogKKBeOTHn0F_2uxOjjg8UtVJeC6EG0P3J; H_BDCLCKID_SF=tJPDVI82JCD3j-5cbjAWq4tehHRWXCr9WDTm_Doa24JNqKLwMxK2KbDshbreK5QHKj79-pPKKxLaftbNy-jPX4Auh-4ehpTL3mkjbn5zfn02OP5PM-Q6j-4syPRGKxRnWI_jKfA-b4ncjRcTehoM3xI8LNj405OTt2LE3-oJqCLMbDIR3D; delPer=0; PSINO=2; ZD_ENTRY=baidu; PHPSESSID=eeoser3pl2vivvnbgn14bad960; Hm_lvt_4010fd5075fcfe46a16ec4cb65e02f04=1550109976,1550112542; BDUSS=NKTVZMQTNOZzNvVXB5bTIySDluNUFpelVNYnBMMW5EU1hTSjhOQnk1Sm9aSXhjQUFB****',
         'connection':'keep-alive',
         'accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8'}

request=urllib.request.Request(url,headers=headers)
w=urllib.request.urlopen(request).read()
print(w.decode())

可以直接爬取自己账号下该网站的信息。这种方式最简单,但不实用,需要手动输入cookie信息,cookie信息的获取不介绍,打开所需要的网站,F12,F5即可查看cookie,host等headers信息。

目前主流的是将cookie信息保存到自己的客户端,然后通过调取该文件,进行爬虫。即第二种方法:建立cookie.txt文档,保存cookie,随后再使用时即可任意调用cookie.txt文件

1.保存cookie信息到本地文件:

import urllib.request,urllib.parse
import  http.cookiejar
url='http://i.baidu.com'
headers={'user-agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36',
      'connection':'keep-alive',
     'accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8'
         }
cookiefile='D:/cookie.txt'
cookie=http.cookiejar.MozillaCookieJar(cookiefile)
#cookie.load(cookiefile,ignore_discard=True, ignore_expires=True)
handler=urllib.request.HTTPCookieProcessor(cookie)
opener=urllib.request.build_opener(handler)
request=urllib.request.Request(url,headers=headers)
response=opener.open(request)
cookie.save(ignore_discard=True, ignore_expires=True)
for item in cookie :
    print(item.name, item.value)

2.调用cookie文件进行网站访问import urllib.request,urllib.parse

import urllib.request,urllib.parse
import  http.cookiejar
url='http://i.baidu.com'
headers={'user-agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36',
      'connection':'keep-alive',
     'accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8'
         }
cookiefile='D:/cookie.txt'
cookie=http.cookiejar.MozillaCookieJar()
cookie.load(cookiefile,ignore_discard=True, ignore_expires=True)
handler=urllib.request.HTTPCookieProcessor(cookie)
opener=urllib.request.build_opener(handler)
request=urllib.request.Request(url,headers=headers)
response=opener.open(request)
for item in cookie :
    print(item.name, item.value)

以上是常规cookie的使用方法,在python爬虫中,针对需要通过账号密码登陆的网站,cookie信息可以较方便的爬虫,不必再输入账号、密码,类似一张通行证。但前提是提前输入账号密码登录网站,获取cookie。然后保存cookie,需要爬虫时,调用该cookie(备注,此cookie一定是登录账号后的cookie,否则进入不了需要输入账号的网站)。

 
原文地址:https://www.cnblogs.com/xuehaiwuya0000/p/10373663.html