爬虫中session应用的一个简单实例: 利用requests的session功能登录人人网

requests的session不同于服务器的session,这里的session只是requests的一个方法, requests的模拟登录需要用到这个方法.
首先实例化session:

s = requests.session()

通过对这个方法传入用户名和密码,需要定义一个字典(这里的email和password是网站上登录框里的对应属性):

form_data = {
     
    'email': '用户名',
    'password': '密码'
    }

把用户名和密码传给session后,通过向网站发起post登录请求, 再用"登录"的session向需要的页面发起get请求,这样就get到了登录过的页面.

s.post(post_url, data=form_data)
# res 为登录后的响应页面
res = self.session.get(url)

下面是全部 的代码, 代码只对页面的学校信息进行了输出打印

import requests
from lxml import etree


class RenRenSpider(object):
    def __init__(self):
        self.post_url = 'http://www.renren.com/PLogin.do'
        self.get_url = 'http://www.renren.com/599512731/profile'
        # 实例化session对象
        self.session = requests.session()

    def get_html(self):
        form_data = {
     
            'email': '用户名',
            'password': '密码'
        }
        self.session.post(self.post_url, data=form_data)
        res = self.session.get(self.get_url)
        res.cookies.update()
        res.encoding = 'utf-8'
        html = res.text
        self.parse_html(html)

    @staticmethod
    def parse_html(html):
        parse_html = etree.HTML(html)
        r_list = parse_html.xpath('//*[@id="operate_area"]/div[1]/ul/li[1]/span/text()')[0].strip()
        print(r_list)


if __name__ == '__main__':
    spider = RenRenSpider()
    spider.get_html()
    ```

你可能感兴趣的:(爬虫,python,requests,session)