python-43:两个重要的问题

在模拟登陆中,还有两个重要的问题,前面一直找不到提出来的机会,在这里一块儿提一下,这两个问题就是 headers 内容的增长和 cookies 的有效期
1. headers 内容的增长
    咱们先看一张图和两段代码php

代码1:python

user_agent = 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:40.0) Gecko/20100101 Firefox/40.0'
headers = {'User-Agent':user_agent}

代码2:编程

user_agent = 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:39.0) Gecko/20100101 Firefox/39.0'
host = 'www.lvye.org'
referer = 'http://www.lvye.org/index.php'
cookies = 'PHPSESSID=8e1mu8g2akohgtdvlitv314ct3; lvyebbs=290738b8c90d8cf97c03922248ba629e134e944a1248e7351eded398c4bb6b1a'
 
heasers = {'User-Agent':user_agent,
           'Host':host,
           'Referer':referer,
           'Cookie':cookies}

这是爬虫代码中关于headers的部分,咱们前面也提到过,图片中heahers有不少的内容,咱们在编写代码时并不知道咱们要使用哪个,我当时给出的方法是,发现不成功的时候再将headers里面的内容一个一个的加上去。首先确定的是这个方法是没有错的,可是,咱们能够有不少种作法去实现它,好比,你能够用代码2中的方法,先定义变量而后加入字典,这种作法也没有错,但实际上还有另一种方法,咱们先来看代码浏览器

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
__author__ = '217小月月坑'

'''
 另外一种headers的形式
'''

import urllib2
# 要登录的网址

url = 'http://www.lvye.org/userinfo.php?uid=409557'
request = urllib2.Request(url)
# 另外一种加入headers的方法
request.add_header("User-Agent", "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:39.0) Gecko/20100101 Firefox/39.0")
request.add_header("Host", "www.lvye.org")
request.add_header("Referer", "http://www.lvye.org/index.php")
request.add_header("Cookie", "lvyebbs=290738b8c90d8cf97c03922248ba629e134e944a1248e7351eded398c4bb6b1a; PHPSESSID=edqhc21p48l4js6rg0eo3vafm0")

response = urllib2.urlopen(request)
print response.read()

这里咱们使用了另外一种方法:request.add_header,这个"request."引发了个人注意,这不是使用urllib2.Request建立的请求吗,因此到头来仍是要看这个函数,前面在第12小节的时候咱们已经稍微的讲解了urllib2.Request这个函数,为了便于理解那时只讲了很小的一部分,毕竟那个时候还用不到那么多。怎么查看函数前面也已经说了,使用python自带的help方法,显示的内容不少,我这里只是截取了一部分,你们能够本身去看一下cookie

咱们先来看一些名词,"module","class","methods", 这三个单词翻译成中文就是 模块,类,方法,这是面向对象编程的一些基本的概念,有兴趣的同窗能够本身去看,可是我如今并不打算详细的讲解这个,我就这么简单的说吧,urllib2是python里面的一个模块,urllib2这个模块里面有不少的类,Request 就是其中的一个类,像前面使用到的urlopen也是一个类,而Request这个类里面有不少的方法,好比,add_date,add_headers,等等。python里面该怎么找一个模块里面含有什么类,一个类里面含有什么方法呢,作法有不少种编辑器

  1. 查看相关的文档,或者查看函数原型等等
    ide

  2. python对于类和方法的引用是以"."来引用的,在不少python专门的ide和编辑器中,只要输入模块,而后"."就会有不少的候选项,而后在里面找到你想要的函数

至于request.add_header,咱们知道request是这么来的: request = urllib2.Request(url),用专业的话来讲request是urllib2.Request这个类里面的一个实例,因此它继承了urllib2.Request里面的全部特性。或者一种简单的说法是,使用urllib2.Request 生成的request就是Request这个类克隆出来的一个儿子,它跟Request如出一辙,只是名字不同,并且它可使用Request里面的方法网站

2. cookies 的时效性ui

    咱们在登陆网站的时候通常会有"七天以内自动登陆"或者"一个月内自动登陆"的选项,这个就是cookies的时效性,有的cookies长有的cookies短,咱们在程序编码的时候不可能知道这个网站的cookies能持续多长时间,你们也能够对比一下我这篇文章里使用的cookies和上一次代码中写的cookies不同,那么,这种状况下应该怎么办呢

答案只能是获取最新的那个cookies,也就是最后一次打开网页的cookies,方法前面我其实已经说过了,还记得我在41小节的时候说的使用浏览器查看cookies吗?

"按F12调出控制台而后按F5刷新"

这里的F5刷新就是刷新网页,保证获取到的cookies是最新的

相关文章
相关标签/搜索