Python爬虫与模拟登录

借用cookie进行登录验证的原理

一般情况用户使用浏览器进行登录操作,认证通过后服务器返回给用户一个cookie用来保存登录态。cookie是一些经过加密的键值对,在服务器端解密后能够提取到一些用户信息。cookie值在浏览器中按F12键后,输入密码点击登录后可以查看。如下图所示:
这里写图片描述

利用requests包进行登录代理

  • 我们首先将浏览器里复制到的cookie字符串进行处理,转化成为Python的字典格式。

  • 然后就是拼接要爬取页面的url字符串

  • 有了爬取页面的url之后,利用requests模块将url和cookie发送给服务端

  • 如果上一步执行顺利的话,s.text事实上已经是登录后网页的源码了。为了方便提取数据,我们引入etree模块,对s.text进行转换,这样就能利用xpath对标签进行精准选择了。

  • 获取标签xpath。chrome浏览器鼠标在目标内容处右键->查看->在高亮源码处右键->copy->xpath。selector.xpath()返回值是一个list,千万要注意呀!

#coding=utf-8   
import re  
import os  
import time
import sys
import re
import urllib2
import urllib
import requests
import cookielib
from lxml import etree

reload(sys)
sys.setdefaultencoding("utf8")
####################################

if __name__ == '__main__':
    cookies = {}
    raw_cookies = """
    # your own cookies here!
    """
    for line in raw_cookies.split(';'):
        key, value = line.split('=', 1)
        cookies[key]=value

    #print cookies
    for i in range(1, 45):
        if (i == 1):
            myurl="http://rs.xidian.edu.cn/home.php?mod=spacecp&ac=plugin&id=bt:history"
            s = requests.get(myurl, cookies=cookies)
            selector = etree.HTML(s.text)
            for j in range(9, 32):
                with open('1.txt', 'a') as f:
                    f.write(selector.xpath('//*[@id="ct"]/div[1]/div/div[1]/table/tbody/tr['+str(j)+']/td[3]')[0].text+'\r\n')
                    f.close()
        else :
            myurl = "http://rs.xidian.edu.cn/home.php?mod=spacecp&ac=plugin&id=bt:history&page="+str(i)
            s = requests.get(myurl, cookies=cookies)
            selector = etree.HTML(s.text)
            for j in range(2, 32):
                with open('1.txt', 'a') as f:
                    f.write(selector.xpath('//*[@id="ct"]/div[1]/div/div[1]/table/tbody/tr['+str(j)+']/td[3]')[0].text+'\r\n')
                    f.close()

如果过程顺利的话,这时候应该已经在 1.txt 文件里有我们想要的数据了。本文将数据的获取和处理解耦合,至于怎么处理,排成怎样的格式,有太多方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值