python-scrapyシミュレーション登録サイト--青果教務管理システムに登録(三)

3300 ワード

前言:
第1編、青果教務管理システムの上陸モジュールを分析し、構想を整理する.
第2編では,従来のpython常用ライブラリrequestsを用いてシミュレーションログインを実現する
第3編ではscrapyを用いてシミュレーションログインを実現する
シミュレーション登録サイトの要点と方法を理解し、httpリクエストの知識を理解することを目的としています.
(1)scrapyアナログ登録
前の記事の考え方に従って、コードを作成すればいいです.ここではくどくど言わない.spiderのコードを置いて
# -*- coding: utf-8 -*-
from _mysql import result

import scrapy
import re
import random
import time
from PIL import Image
from md5tools import md5_encrypt


class AynueduSpider(scrapy.Spider):
    name = 'aynuedu'
    allowed_domains = ['jwglxt.aynu.edu.cn']
    start_urls = ['http://jwglxt.aynu.edu.cn/']

    VIEWSTATE = ''

    #       ,           
    def parse(self, response):
        #  cookie
        headers = response.headers
        newheaders = dict(headers)
        #  referer
        newheaders['Referer'] = 'http://jwglxt.aynu.edu.cn/'

        yield scrapy.Request(url="http://jwglxt.aynu.edu.cn/_data/home_login.aspx",callback=self.parse_loginurl,method='GET',headers=newheaders)


    def parse_loginurl(self,response):
        """
               ,       
        :param response:
        :return:
        """
        headers = response.headers
        newheaders = dict(headers)
        #   referer
        newheaders['Referer'] = 'http://jwglxt.aynu.edu.cn/_data/home_login.aspx'
        newheaders['Accept']='image/webp,image/apng,image/*,*/*;q=0.8'

        #           
        self.VIEWSTATE = re.search(r'

いくつかの説明:
こちらは PIL  ,保存した認証コードを開くために使用します.
ここでコードにはクッキーは表示されません.これはscrapyがすでに作成しています.変更する必要があるリクエストヘッダを変更するだけです.
ここでpostリクエストは、 このような方法を使います.
 scrapy.FormRequest(url=url,formdata=login_data,headers=login_headers,callback=self.parse_login,method="POST")
(2)まとめ
        ここでこの例は基本的に完成し,検証コードの処理のような多くの改善点があり,第1編で紹介した3つの方法である.例えば、アカウントのパスワードを暗号化せずにログインすることができます.など
この例は、青果教務システムのウェブサイトにどのようにログインするかを説明するものではなく、重点ではありません.ポイントは青果教務システムの上陸モジュールであり、爬虫類がよく遭遇する上陸状況である.
(1)ログインモジュールにはrefer,Originなどのカスタムリクエストヘッダが必要であり,当然user-agentを修正することが重要である.
(2)通常の認証コードは,一般に登録する必要がある.
(3)ログインには追加のパラメータが必要であり,正則またはxpathを用いてこれらの追加パラメータを直接動的に取得することができる.
(4)フロントでパスワードと認証コードを暗号化処理した.実際には、正常に暗号化された値を直接持って、ログインを直接シミュレートすることもできますが、複数のユーザーが操作できません.
だから私たちはこの例を持って、統合の例とすることができます.
ソース:https://github.com/gengzi/simulatelogin
コードワードは難しいから、いいねをあげましょう.