爬虫实战2(上):爬取豆瓣影评
这次我们将主要尝试利用python
+requsets
模拟登录豆瓣爬取复仇者联盟4影评,首先让我们了解一些模拟登录相关知识补充。本文结构如下:
request模块介绍与安装
get与post方式介绍
request模块使用实例
一、request模块介绍与安装
1.requests和urllib区别
requsets
和urllib
都是爬虫的常用模块,requsets更加友好。虽然上一篇爬取糗事百科的实战中我们用的urllib模块,但是基本不影响我们快速入手requsets,因为上一篇主要还是介绍爬虫爬取数据的一个流程,正则分析etc.
查看更多requests
模块信息,请查阅: 官方文档
2.requests模块安装教程
win10上requests安装教程
二、get与post方式介绍
上一篇爬取糗事百科数据使用的urllib
模块,都是用get
方式来爬取数据(没有用urllib2.Request的date参数,date参数在post方式时用到)。而post
和get
有什么区别呢?
HTTP定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE,对应着对这个资源的查,改,增,删 4个操作。到这里,大家应该有个大概的了解了,GET
一般用于获取/查询资源信息,而POST
一般用于更新资源信息。
- get是从服务器上获取数据,post是向服务器传送数据。
- get是把参数数据(如你的账号密码等信息)队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段对应,在URL中可看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
- 对于get方式,服务器端用
Request.QueryString
获取变量的值,对于post方式,服务器端用Request.Form
获取提交的数据。- get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。
- 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 theRequest
. **kwargs – Optional arguments thatrequest
takes.返回 Response
object
显然这里有多个参数,params参数就是先前提到附在URL后的请求数据信息,暂且不提。和前文一样,F12打开开发者工具,设置UR
L和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。那么整个流程为:
post
发送账号密码等FormDate
(表单数据)给服务器- 服务器返回
cookie
等信息标识我们的身份 - 利用
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(上):爬取豆瓣影评相关推荐
- python3爬取视频原理_Python3爬虫实战:以爬取豆瓣电影为例
爬虫又称为网页蜘蛛,是一种程序或脚本. 但重点在于,它能够按照一定的规则,自动获取网页信息. 爬虫的基本原理--通用框架 1.挑选种子URL: 2.讲这些URL放入带抓取的URL列队: 3.取出带抓取 ...
- Python网络爬虫实战练习:爬取豆瓣图书信息
一.注意事项 1.文件名尽量使用英文,避免出现编码问题 2.含中文的文件写入,注意标注编码,如: with open(r"C:\Users\10335\Desktop\response.tx ...
- Python爬虫实战(一):爬取豆瓣电影top250排名
先上代码 #coding=utf-8 import re import urllib.requestdef getHtml(url):page = urllib.request.urlopen(url ...
- Python网络爬虫实战12:爬取豆瓣电影中热门电影数据
代码实例 # coding:utf8 import json import requests from bs4 import BeautifulSoup import openpyxlwb = ope ...
- python爬取豆瓣电影top250_Python爬虫实战(一):爬取豆瓣电影top250排名
先上代码 #coding=utf-8 import re import urllib.request def getHtml(url): page = urllib.request.urlopen(u ...
- Python爬虫实战003:爬取豆瓣电影分类排行榜
import requests import jsonif __name__ == '__main__':url = "https://movie.douban.com/j/chart/to ...
- 用python爬取豆瓣影评及影片信息(评论时间、用户ID、评论内容)
爬虫入门:python爬取豆瓣影评及影片信息:影片评分.评论时间.用户ID.评论内容 思路分析 元素定位 完整代码 豆瓣网作为比较官方的电影评价网站,有很多对新上映影片的评价,不多说,直接进入正题. ...
- python爬取豆瓣影评_【python爬虫实战】爬取豆瓣影评数据
概述: 爬取豆瓣影评数据步骤: 1.获取网页请求 2.解析获取的网页 3.提速数据 4.保存文件 源代码: # 1.导入需要的库 import urllib.request from bs4 impo ...
- #私藏项目实操分享#Python爬虫实战,requests+xpath模块,Python实现爬取豆瓣影评
前言 利用利用requests+xpath爬取豆瓣影评,废话不多说. 让我们愉快地开始吧~ 开发工具 Python版本:3.6.4 相关模块: requests模块: jieba模块: pandas模 ...
最新文章
- 速查笔记(Linux Shell编程上)
- python dict()函数(用于创建一个字典)
- 倒计时小工具_送你3个倒数计日的小程序,让你不再遗忘重要事
- 【codevs1074】食物链
- window 配置react native 、Android Studio环境
- 【图神经网络入门】GAT图注意力网络
- rsa算法的java实现,RSA算法的实现——java版
- 深度学习caffe:权值初始化
- matlab2012a for mac,matlab 2016a mac |matlab 2016a for mac免费版专业版 32位/64位 - 系统天堂...
- 【gazebo要素9】 SDF制作Model文件(2)
- 简单的钓鱼网站的制作
- 1.1 第一课:操作示范 [Ps教程]
- python学习的读书路线
- 态势感知“裸奔”的中国人 | 专访 360 张翀斌
- linux sis启动命令,Linux系统开机过程详细分析
- 魔兽世界 圣骑士唯一的远程武器任务
- mysql修改 mysql.sock路径导致登录时异常
- WPF制作贪吃蛇小游戏
- 小鱼发现玩机械臂的小姐姐越来越多了。。。再说说手眼标定那些事~
- 华中科技大学计算机与网络,华中科技大学计算机与网络习题.pdf
热门文章
- KrbException: Clock skew too great (37) - PREAUTH_FAILED问题解决与服务器时钟同步
- 【WebAPI 验证】给 webapi加上token 验证(包括上传文件方法)
- ASP.net 简单登录界面
- Amazon面试体验分享2020年SDE-1(全职推荐)
- Codeforces Round #620 (Div. 2)(D. Shortest and Longest LIS)(O(n log n)的最长上升子序列或者贪心)
- win10matlab2016启动卡,教你解决win10专业版开机卡死的方法
- c语言随机产生三个大写字母,C语言编写的随机产生四则运算测试题
- 数据库多对多关系建表
- adb 禁止app联网_ADB大法好!无需ROOT也可以使用APP Ops来管理手机应用权限
- 一种基于Android、iOS系统的移动端车牌识别方法,实现手机拍照识别车牌