zoukankan      html  css  js  c++  java
  • 爬虫实例(一):模拟登录CSDN

    1.采用python模拟登录CSDN的时候分为三步走:

    1.获取url=https://passport.csdn.net/account/login;

    2.分析登录信息:从网页中得到username,password和hideen标签隐藏的属性,在CSDN中有三个隐藏标签,lt,execution,_eventId  //注意这三个标签是动态的比能够写死

    3.POST数据分析:

    1.构造属于hearder,同时大部分网站登录需要cookie,必须设置cookie处理器暴走cookie,使用Session模块会自动将cookies保存,会自动将数据保存,Session能够自动保持其中会话过程(学习Java中网络编程),在登录CSDN过程中有Js编写出来的jsessionid动态的网页密码,在访问过程中要将其加入到URL+‘;’+'jsessionid'形式。

    但是此爬虫过程中没有图片或者验证码之类的东西,还需要深入研究。。。。下节再看

    
    
     1 #----coding-GBK----
     2 
     3 import requests
     4 from lxml import html
     5 import re
     6 
     7 Username="XXXXXX"
     8 PassWord="XXXXXXX"
     9 
    10 url="https://passport.csdn.net/account/login"
    11 def craw_csdn():
    12     s=requests.Session()
    13     datas={'username':Username,'password':PassWord}
    14     head={'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'}
    15     
    16     b=s.post(url,data=datas)
    17     ##print (b.text)
    18     tree=html.fromstring(b.text)
    19     lt=list(set(tree.xpath("//input[@name='lt']/@value")))[0]
    20     
    21     execution=list(set(tree.xpath("//input[@name='execution']/@value")))[0]
    22       
    23     eventid=list(set(tree.xpath("//input[@name='_eventId']/@value")))[0]
    24     jsessionid=list(set(tree.xpath("//link/@href")))[0]
    25     jsessionid=str(re.findall('jsessionid=(.*)',jsessionid)[0])
    26     
    27     post_url=url+';'+'jsessionid='+jsessionid
    28     print (post_url)
    29     payload={
    30              'username':Username,
    31              'password':PassWord,
    32              'lt':lt,
    33              'execution':execution,
    34              '_eventId':eventid
    35              }
    36     
    37     agent='Mozilla/5.0 (Windows NT 6.1; WOW64; rv:48.0) Gecko/20100101 Firefox/48.0'
    38     head={
    39       'Accept':"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
    40       'User-Agent':agent,
    41       'Host':'passport.csdn.net',
    42       'Referer':'https://passport.csdn.net/account/login?from=http://my.csdn.net/my/mycsdn',
    43       
    44       }
    45     r=s.post(post_url,data=payload,headers=head)
    46     print(r.text)
      if __name__=="__main__":
    47 craw_csdn()
    
    

    结果显示出来登录的是CSDN中HTML还要web流程中深入挖掘其他的东西:

    
    

     4.网易云课堂上第二课爬取到的第二关的代码:

     1 #--coding:utf-8-----
     2 #!/usr/bin/env python
     3 import requests
     4 from lxml import html 
     5 from _cffi_backend import string
     6 
     7 url='http://www.heibanke.com/accounts/login'
     8 logurl='http://www.heibanke.com/lesson/crawler_ex02/'
     9 
    10 ##采用尝试方式发送数据得到其中cirf值
    11 def post_data_url(s,url,data):
    12     b=s.get(url)
    13     
    14     tree=html.fromstring(b.text)
    15     auth_token=list(set(tree.xpath("//input[@name='csrfmiddlewaretoken']/@value")))[0]
    16     print auth_token
    17     
    18     ##使用这句话将cookies保存下来
    19     params={'csrfmiddlewaretoken':b.cookies.get('csrftoken')}
    20     params.update(data)##将csrf加入到payload中
    21 
    22     r=s.post(url,data=params)##post向服务器发送的请求
    23     return r,s
    24 
    25 s=requests.Session()
    26 payload={
    27          'username':'test',
    28          'password':'test123'
    29          }
    30 r,s=post_data_url(s,url,payload)
    31 
    32 print r.status_code
    33 
    34 for i in range(30):
    35     rr,s=post_data_url(s,logurl,{'username':'heibanke','password':str(i)})
    36     if rr.text.find(u'错误')>0:
    37         print i,"no correct"
    38         i+=1
    39     else:
    40         print rr.text
    41         break
    42     
    43     

     5.模拟登录CSDN的时候,采用requests_Session()模块,采用httpfix抓取:

    从其中得到的信息中:post数据包,同时发现post 的url中有一段就jessionId的动态码,在python书写过程中必须要将其加入到url中同时得到post数据包提交的方法:

    post -Data:

     红色箭头表示post的url,发现自动加上jessionid的东西

  • 相关阅读:
    MongoDB Http Interface
    从python2.7和python3.0的语法差异总结
    从python2.7和python3.0的语法差异总结
    MongoDB聚合aggregate
    MongoDB聚合aggregate
    Windows 有没有办法查看文件被哪个进程占用
    Windows 有没有办法查看文件被哪个进程占用
    开启mongodb 的web
    开启mongodb 的web
    MongoDB基本命令操作
  • 原文地址:https://www.cnblogs.com/woainifanfan/p/5754580.html
Copyright © 2011-2022 走看看