这次我们将主要尝试利用python+requsets模拟登录豆瓣爬取复仇者联盟4影评,首先让我们了解一些模拟登录相关知识补充。本文结构如下:

  • request模块介绍与安装

  • getpost方式介绍

  • request模块使用实例

一、request模块介绍与安装

1.requests和urllib区别

  requsetsurllib都是爬虫的常用模块,requsets更加友好。虽然上一篇爬取糗事百科的实战中我们用的urllib模块,但是基本不影响我们快速入手requsets,因为上一篇主要还是介绍爬虫爬取数据的一个流程,正则分析etc.
  查看更多requests模块信息,请查阅: 官方文档

2.requests模块安装教程

   win10上requests安装教程

二、get与post方式介绍

  上一篇爬取糗事百科数据使用的urllib模块,都是用get方式来爬取数据(没有用urllib2.Request的date参数,date参数在post方式时用到)。而postget有什么区别呢?

  HTTP定义了与服务器交互的不同方法,最基本的方法有4种,分别是GETPOSTPUTDELETE,对应着对这个资源的 4个操作。到这里,大家应该有个大概的了解了,GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。

  1. get是从服务器上获取数据,post是向服务器传送数据。
  2. get是把参数数据(如你的账号密码等信息)队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段对应,在URL中可看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
  3. 对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。
  4. get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。
  5. get安全性非常低,post安全性较高

三、request模块使用实例

1.get方式使用实例

  首先,我们看一下requests.get原型:

requests.get(url, params=None, **kwargs)[源代码]

Sends a GET request.

参数 url* – URL for the new Request object. params – (optional) Dictionary or bytes to be sent in the query string for the Request. **kwargs – Optional arguments that request takes.
返回 Response object

  显然这里有多个参数,params参数就是先前提到附在URL后的请求数据信息,暂且不提。和前文一样,F12打开开发者工具,设置URL和headers参数来爬取豆瓣复仇者联盟的影评界面源码。

  • 1.url

    登陆豆瓣找到影评,多尝试翻页可以发现URL格式变化规律如下:

    如果我们需要爬取第二页只需将改为start = 20即可。

  • 2.headers常见反爬虫参数设置

    • Host :请求的服务器主机
    • User-Agent:操作系统版本、浏览器内核、浏览器厂商等信息
    • Referer:当前页面的上一个页面

在这里我们仅设置User-Agent即可。

  • 3.代码及结果展示

    # 1.利用request.get获取网页源码
    url = "https://movie.douban.com/subject/26100958/comments?start=0&limit=20&sort=new_score&status=P"
    headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0)Gecko/20100101 Firefox/66.0"}
    r = requests.get(url, headers=headers)
    html = r.text
    print(html)
    

2.post方式使用实例

经过上面介绍,我们知道网站登录密码肯定就是post方式传递参数拼接URL。那么整个流程为:

  1. post发送账号密码等FormDate(表单数据)给服务器
  2. 服务器返回cookie等信息标识我们的身份
  3. 利用request.session保存cookie等信息(服务器用来识别用户)开始访问网站。

本次,接下来将模拟登陆豆瓣获取个人主页信息说明整个流程。

 1.构造request.post参数

    request.post原型如下:

requests.post(url, data=None, json=None, **kwargs)[源代码]

Sends a POST request.

 首先,我们打开登陆界面,随便输入错误的账号和密码,按下F12,打开开发者界面查看Network,观察服务器响应(抓包)。

  我们可以看到一个可疑的xhr文件basic,里面有Form Date信息即是我们要找的。同时,我们也可以在General中发现真实请求的登陆网址:

headers设置见前,代码见下:

# 1.设置URL 和 headers
loginURL = "https://accounts.douban.com/j/mobile/login/basic"
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0"
}
# 2.分析表单
data = {"ck": "","name": "你的账号","password": "你的密码","remember": "false","ticket": ""
}

 2.session对话保持

  向服务器post参数后,要保存服务器发来的cookie等信息(识别用户),利用requests库的session会话对象跨请求保持这些参数信息。

# 3.创建session对象保存对话
session = requests.Session()
session.post(url=loginURL, headers=headers, data=data)

 3.登陆豆瓣

  登陆豆瓣个人主页,首先要知道我们的个人主页地址,手动登陆进入个人主页界面查看。然后利用session对象进行get请求即可。

# 4.开始登陆豆瓣
# 比如获取登陆后我的主页信息
personalURL = "https://www.douban.com/people/195562116/"
r = session.get(personalURL)
if r.status_code == 200:print("登陆成功!\n")print(r.text)
else:print("登陆失败!")

四、结语

  本次我们初步了解利用post方式模拟登陆豆瓣,下篇文章:爬虫实战2(下):爬取豆瓣影评,我们将展示利用python+request+re爬取豆瓣影评的实战记录。

爬虫实战2(上):爬取豆瓣影评相关推荐

  1. python3爬取视频原理_Python3爬虫实战:以爬取豆瓣电影为例

    爬虫又称为网页蜘蛛,是一种程序或脚本. 但重点在于,它能够按照一定的规则,自动获取网页信息. 爬虫的基本原理--通用框架 1.挑选种子URL: 2.讲这些URL放入带抓取的URL列队: 3.取出带抓取 ...

  2. Python网络爬虫实战练习:爬取豆瓣图书信息

    一.注意事项 1.文件名尽量使用英文,避免出现编码问题 2.含中文的文件写入,注意标注编码,如: with open(r"C:\Users\10335\Desktop\response.tx ...

  3. Python爬虫实战(一):爬取豆瓣电影top250排名

    先上代码 #coding=utf-8 import re import urllib.requestdef getHtml(url):page = urllib.request.urlopen(url ...

  4. Python网络爬虫实战12:爬取豆瓣电影中热门电影数据

    代码实例 # coding:utf8 import json import requests from bs4 import BeautifulSoup import openpyxlwb = ope ...

  5. python爬取豆瓣电影top250_Python爬虫实战(一):爬取豆瓣电影top250排名

    先上代码 #coding=utf-8 import re import urllib.request def getHtml(url): page = urllib.request.urlopen(u ...

  6. Python爬虫实战003:爬取豆瓣电影分类排行榜

    import requests import jsonif __name__ == '__main__':url = "https://movie.douban.com/j/chart/to ...

  7. 用python爬取豆瓣影评及影片信息(评论时间、用户ID、评论内容)

    爬虫入门:python爬取豆瓣影评及影片信息:影片评分.评论时间.用户ID.评论内容 思路分析 元素定位 完整代码 豆瓣网作为比较官方的电影评价网站,有很多对新上映影片的评价,不多说,直接进入正题. ...

  8. python爬取豆瓣影评_【python爬虫实战】爬取豆瓣影评数据

    概述: 爬取豆瓣影评数据步骤: 1.获取网页请求 2.解析获取的网页 3.提速数据 4.保存文件 源代码: # 1.导入需要的库 import urllib.request from bs4 impo ...

  9. #私藏项目实操分享#Python爬虫实战,requests+xpath模块,Python实现爬取豆瓣影评

    前言 利用利用requests+xpath爬取豆瓣影评,废话不多说. 让我们愉快地开始吧~ 开发工具 Python版本:3.6.4 相关模块: requests模块: jieba模块: pandas模 ...

最新文章

  1. 速查笔记(Linux Shell编程上)
  2. python dict()函数(用于创建一个字典)
  3. 倒计时小工具_送你3个倒数计日的小程序,让你不再遗忘重要事
  4. 【codevs1074】食物链
  5. window 配置react native 、Android Studio环境
  6. 【图神经网络入门】GAT图注意力网络
  7. rsa算法的java实现,RSA算法的实现——java版
  8. 深度学习caffe:权值初始化
  9. matlab2012a for mac,matlab 2016a mac |matlab 2016a for mac免费版专业版 32位/64位 - 系统天堂...
  10. 【gazebo要素9】 SDF制作Model文件(2)
  11. 简单的钓鱼网站的制作
  12. 1.1 第一课:操作示范 [Ps教程]
  13. python学习的读书路线
  14. 态势感知“裸奔”的中国人 | 专访 360 张翀斌
  15. linux sis启动命令,Linux系统开机过程详细分析
  16. 魔兽世界 圣骑士唯一的远程武器任务
  17. mysql修改 mysql.sock路径导致登录时异常
  18. WPF制作贪吃蛇小游戏
  19. 小鱼发现玩机械臂的小姐姐越来越多了。。。再说说手眼标定那些事~
  20. 华中科技大学计算机与网络,华中科技大学计算机与网络习题.pdf

热门文章

  1. KrbException: Clock skew too great (37) - PREAUTH_FAILED问题解决与服务器时钟同步
  2. 【WebAPI 验证】给 webapi加上token 验证(包括上传文件方法)
  3. ASP.net 简单登录界面
  4. Amazon面试体验分享2020年SDE-1(全职推荐)
  5. Codeforces Round #620 (Div. 2)(D. Shortest and Longest LIS)(O(n log n)的最长上升子序列或者贪心)
  6. win10matlab2016启动卡,教你解决win10专业版开机卡死的方法
  7. c语言随机产生三个大写字母,C语言编写的随机产生四则运算测试题
  8. 数据库多对多关系建表
  9. adb 禁止app联网_ADB大法好!无需ROOT也可以使用APP Ops来管理手机应用权限
  10. 一种基于Android、iOS系统的移动端车牌识别方法,实现手机拍照识别车牌