【Python数据解析】Python模拟登录(一) requests.Session应用

   
近来是因为某些原因,需要使用Python模拟登录网站,可是此前对这块并不理解,而且目的网站的登录方法相比较复杂,
所以一下卡在这边了,于是我决定从简单的模仿开端,逐步深远地讨论下这块。

新建一个Python Django工程:

注:本文仅为沟通学习所用。

Win+R进入cmd命令界面,并cd到指定工程目录下,比如自己的工程目录是E:\wamp\Apache24\www\

登录特点:明文传输,有例外标志数据

 
 
会话对象requests.Session可以跨请求地涵养某些参数,比如cookies,即在同一个Session实例发出的有着请求都维持同一个cookies,而requests模块每一趟会活动处理cookies,那样就很有益于地拍卖登录时的cookies问题。在cookies的拍卖上对话对象一句话可以顶过一些句urllib模块下的操作。即一定于urllib中的:

cj = http.cookiejar.CookieJar()
pro = urllib.request.HTTPCookieProcessor(cj)
opener = urllib.request.build_opener(pro)
urllib.request.install_opener(opener)

输入E: 跳转E盘

如法炮制登录V站

本篇著作的职责是使用request.Session模拟登录V2EX(http://www.v2ex.com/)这个网站,即V站。

工具:
Python 3.5,BeautifulSoup模块,requests模块,Chrome

这一个网站登录的时候抓到的数额如下:

图片 1

内部用户名(u)、密码(p)都是公开传输的,很有益。once的话从剖析登录URL: http://www.v2ex.com/signin
的源文件(下图)可以看到,应该是历次登录的特有数据,我们需要提前把它抓出来再放到Form
Data里面POST给网站。

图片 2

 抓出来仍然老方法,用BeautifulSoup神器即可。这里又学到一种抓标签里面元素的章程,比如抓上边的”value”,用soup.find(‘input’,{‘name’:’once’})[‘value’]即可

即抓取含有
name=”once”的input标签中的value对应的值。

于是构建postData,然后POST。

怎么显得登录成功吗?这里透过访问 http://www.v2ex.com/settings
即可,因为这一个网址没有登录是看不住的:

图片 3

经过地点的辨析,写出源代码(参考了alexkh的代码):

import requests
from bs4 import BeautifulSoup

url = "http://www.v2ex.com/signin"
UA = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.13 Safari/537.36"

header = { "User-Agent" : UA,
           "Referer": "http://www.v2ex.com/signin"
           }

v2ex_session = requests.Session()
f = v2ex_session.get(url,headers=header)

soup = BeautifulSoup(f.content,"html.parser")
once = soup.find('input',{'name':'once'})['value']
print(once)

postData = { 'u': 'whatbeg',
             'p': '*****',
             'once': once,
             'next': '/'
             }

v2ex_session.post(url,
                  data = postData,
                  headers = header)

f = v2ex_session.get('http://www.v2ex.com/settings',headers=header)
print(f.content.decode())

下一场运行发现成功登录:

图片 4

地点趴下来的网页源代码即为http://www.v2ex.com/settings的代码。这里once为91279.

图片 5

迄今,登录成功。

 

输入cd wamp\Apache24\
跳转到指定目录下

输入django-admin.py startproject www
树立Python Django工程,生成了一个文书夹www,其布局为:
www/
manage.py
www/
__init.py
settings.py
urls.py
wsgi.py

其中:
manage.py:一个命令行工具,通过它可以调用Django
shell和数据库等。键入python manage.py -h,查看它的连带职能。
__init__.py:让 Python 把该目录当成一个支付包
(即一组模块)所需的公文。这是一个空文件,一般你不需要修改它。
settings.py:项目标默认设置,包括数据库音信,调试标志以及其他一些办事的变量。
urls.py:django项目标URL设置。 可视其为你的django网站的目录,
负责把URL格局映射到应用程序。
wsgi.py: 服务器网关接口(Python Web Server Gateway
Interface),web服务器和web服务程序或者框架之间的一种简易而通用的接口。

输入cd www
进入www目录,此处可以输入python manage.py
runserver运行服务器,启动成功后,在ie浏览器的网址上输入http://127.0.0.1:8000/开展测试,同时在键盘上按ctrl+break退出服务器

新建一个Python Django项目:

输入django-admin.py startapp firstapp
创办firstapp项目,并转移名称为firstapp文件夹,其布局为

firstapp/
__init__.py

admin.py

models.py

tests.py

views.py
migrations /
__init.py
**
备注, 比方您早就披露过Hello
world页面,可是没有使用网页框架,只是简短的在hello.html文本文件中输入Hello
World,然后上传出一个网页服务器上,如:http://
127.0.0.1/helloWorld.html.**

那么您应有通晓下Python
Django五个地方:

一是页面的情节是靠view
function(视图函数)来促成;

二是URL定义在urls.py文件的
URLconf配置信息里。

 

打开www/www/settings.py 文件修改INSTALLED_APPS,在最后一行添加我们建立的firstapp项目名称,修改后如下:

INSTALLED_APPS = (

    'django.contrib.admin',

    'django.contrib.auth',

    'django.contrib.contenttypes',

    'django.contrib.sessions',

    'django.contrib.messages',

    'django.contrib.staticfiles',


    'firstapp',

)

备考,这一步是怎么呢? 新建的 app
假若不加到 INSTALL_APPS 中的话, django
就不可以自动找到app中的模板文件(app-name/templates/下的文本)和静态文件(app-name/static/中的文件)
, 前面你会学习到它们分别用来干什么.

新建一个静态网页测试:

下一场在firstapp文件夹下建立templates文件夹,并在templates文件夹下新建一个名为home.html的文本,其编码格式设为utf-8,该文件中写入:

<!DOCTYPE html>

<html>

<head>

*    <title>欢迎光临</title>***

</head>

<body>

欢迎光临自强学堂

</body>

</html>

打开www/www/
下的urls.py文件,直接修改文件内容:

from django.conf.urls import include, url

from django.contrib import admin


urlpatterns = [

    url(r'^$', 'firstapp.views.home', name='home'),

    # url(r'^blog/', include('blog.urls')),


    url(r'^admin/', include(admin.site.urls)),

]

输入python manage.py
runserver运行服务器,启动成功后,在ie浏览器的网址上输入http://127.0.0.1:8000/,在网页上看见欢迎光临自强学堂

备注:推荐学习网址:
http://www.ziqiangxuetang.com/django/django-tutorial.html