python模拟登录页面下载_Python爬虫实战入门四:使用Cookie模拟登录——获取电子书下载链接...
在实际情况中,很多网站的内容都是需要登录之后才能看到,如此我们就需要进行模拟登录,使用登录后的状态进行爬取。这里就需要使用到Cookie。
现在大多数的网站都是使用Cookie跟踪用户的登录状态,一旦网站验证了登录信息,就会将登录信息保存在浏览器的cookie中。网站会把这个cookie作为验证的凭据,在浏览网站的页面是返回给服务器。
因为cookie是保存在本地的,自然cookie就可以进行篡改和伪造,暂且不表,我们先来看看Cookie长什么样子。
打开网页调试工具,随便打开一个网页,在“network”选项卡,打开一个链接,在headers里面:
Cookie
我们复制出来看看:
__guid=137882464.208312339030071800.1455264073383.613;
__huid=10POq43DvPO3U0izV0xej4%2BFDIemVPybee0j1Z1xnJnpQ%3D;
__hsid=825c7462cc8195a5;
somultiswitch=1;
__seedSign=68;
count=1; sessionID=132730903.3074093016427610600.1483758834211.764;
piao34=1;
city_code=101280101;
customEng=1-7
由一个个键值对组成。
接下来,我们以看看豆(http://kankandou.com)的一本书籍的详情页为例,讲解一下Cookie的使用。
看看豆是一个电子书下载网站,自己Kindle上的书多是从这上面找寻到的。
示例网址为:https://kankandou.com/book/view/22353.html
正常情况下,未登录用户是看不到下载链接的,比如这样:
隐藏了书籍的下载链接。
其头信息如下:
头信息
我们再看看登录之后的页面:
登录后
下载链接已经显示出来了,我们看看头信息的Cookie部分
登陆后Cookie
很明显地与之前未登录状态下的Cookie有区别。
接下来,我们按照上一章爬取腾讯新闻的方法,对示例网址(https://kankandou.com/book/view/22353.html)进行HTTP请求:
# coding:utf-8
import requests
from bs4 import BeautifulSoup
url = 'https://kankandou.com/book/view/22353.html'
wbdata = requests.get(url).text
soup = BeautifulSoup(wbdata,'lxml')
print(soup)
结果如下:
结果
我们从中找到下载链接存在的栏目“书籍导购”的HTML代码:
书籍导购
如同我们在未登录状态使用浏览器访问这个网址一样,只显示了亚马逊的购买链接,而没有电子格式的下载链接。
我们尝试使用以下登录之后的Cookie:
使用Cookie有两种方式,
1、直接将Cookie写在header头部
完整代码如下:
# coding:utf-8
import requests
from bs4 import BeautifulSoup
cookie = '''cisession=19dfd70a27ec0eecf1fe3fc2e48b7f91c7c83c60;CNZZDATA1000201968=1815846425-1478580135-https%253A%252F%252Fwww.baidu.com%252F%7C1483922031;Hm_lvt_f805f7762a9a237a0deac37015e9f6d9=1482722012,1483926313;Hm_lpvt_f805f7762a9a237a0deac37015e9f6d9=1483926368'''
header = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36',
'Connection': 'keep-alive',
'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Cookie': cookie}
url = 'https://kankandou.com/book/view/22353.html'
wbdata = requests.get(url,headers=header).text
soup = BeautifulSoup(wbdata,'lxml')
print(soup)
带Cookie请求
红色椭圆的部分与未带Cookie访问是返回的HTML一致,为亚马逊的购买链接,
红色矩形部分则为电子书的下载链接,这是在请求中使用的Cookie才出现的
对比实际网页中的模样,与用网页登录查看的显示页面是一致的。
功能完成。接下来看看第二种方式
2、使用requests插入Cookie
完整代码如下:
# coding:utf-8
import requests
from bs4 import BeautifulSoup
cookie = {
"cisession":"19dfd70a27ec0eecf1fe3fc2e48b7f91c7c83c60",
"CNZZDATA100020196":"1815846425-1478580135-https%253A%252F%252Fwww.baidu.com%252F%7C1483922031",
"Hm_lvt_f805f7762a9a237a0deac37015e9f6d9":"1482722012,1483926313",
"Hm_lpvt_f805f7762a9a237a0deac37015e9f6d9":"1483926368"
}
url = 'https://kankandou.com/book/view/22353.html'
wbdata = requests.get(url,cookies=cookie).text
soup = BeautifulSoup(wbdata,'lxml')
print(soup)
如此获取到的也是登录后显示的HTML:
requests
这样,我们就轻松的使用Cookie获取到了需要登录验证后才能浏览到的网页和资源了。
这里只是简单介绍了对Cookie的使用,关于Cookie如何获取,手动复制是一种办法,通过代码获取,需要使用到Selenium,接下来的章节会讲解,这里暂且不表。
分享到:
python模拟登录页面下载_Python爬虫实战入门四:使用Cookie模拟登录——获取电子书下载链接...相关推荐
- python爬虫登录下载_Python爬虫实战入门四:使用Cookie模拟登录——获取电子书下载链接...
在实际情况中,很多网站的内容都是需要登录之后才能看到,如此我们就需要进行模拟登录,使用登录后的状态进行爬取.这里就需要使用到Cookie. 现在大多数的网站都是使用Cookie跟踪用户的登录状态,一旦 ...
- python模拟登记获取cookie_Python爬虫实战入门四:使用Cookie模拟登录——获取电子书下载链接...
在实际情况中,很多网站的内容都是需要登录之后才能看到,如此我们就需要进行模拟登录,使用登录后的状态进行爬取.这里就需要使用到Cookie. 使用Cookie进行模拟登录 现在大多数的网站都是使用Coo ...
- python实例豆瓣音乐代码_Python爬虫实战(3)-爬取豆瓣音乐Top250数据(超详细
前言 首先我们先来回忆一下上两篇爬虫实战文章: 第一篇:讲到了requests和bs4和一些网页基本操作. 第二篇:用到了正则表达式-re模块 今天我们用lxml库和xpath语法来爬虫实战. 1.安 ...
- python爬虫实战测评_Python 爬虫实战入门(上)
之前为了工作需要,写了不少爬虫小程序,和同事们聊得过程中发现,很多人对爬虫还是停留在听说过的阶段,基于这个原因,特意写点适合小白看的,希望大家能对爬虫有个小认知. 工欲善其事必先利其器,既然要写爬虫, ...
- python爬取论坛帖子_Python爬虫实战(1):爬取Drupal论坛帖子列表
1,引言 在<Python即时网络爬虫项目: 内容提取器的定义>一文我们定义了一个通用的python网络爬虫类,期望通过这个项目节省程序员一半以上的时间.本文将用一个实例讲解怎样使用这个爬 ...
- python爬百度贴吧_Python爬虫实战之爬取百度贴吧帖子
大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 本篇目标对百度贴吧的任意帖子进行抓取 指定是否只抓取楼主发帖内 ...
- python多线程爬取段子_Python爬虫实战之一秒爬取内涵段子
人生苦短,我用Python,今天来一起爬取一下内涵段子. 话不啰嗦直接代码,gogogog! #coding=utf-8 import urllib2 import re class Spider: ...
- 利用python爬取租房信息_Python爬虫实战(1)-爬取“房天下”租房信息(超详细)
#前言html 先看爬到的信息:python 今天主要用到了两个库:Requests和BeautifulSoup.因此我先简单的说一下这两个库的用法,提到的都是此文须要用到的.编程 #Requests ...
- python爬取控制台信息_python爬虫实战之爬取智联职位信息和博客文章信息
1.python爬取招聘信息 简单爬取智联招聘职位信息 # !/usr/bin/env python # -*-coding:utf-8-*- """ @Author ...
最新文章
- 遂宁专业计算机学校,遂宁计算机专业中职学校哪家强
- C++中的接口(抽象类)
- 20个开源项目托管站点推荐
- 深度学习100例 | 第24天-卷积神经网络(Xception):动物识别
- bzoj4525[Usaco2016 Jan]Angry Cows
- es6 取数组的第一个和最后一个_JS算法题之每日一题- 17.在排序数组中查找元素的第一个和最后一个位置...
- Spark K-Means
- Linux下部署多个Tomcat
- 真相了!AI 程序员:我们根本没有 80w 年薪好么?
- win8的开始菜单不见了怎么办
- JAVA08 多态
- React学习笔记—属性转移
- 亲历漏洞研究最让人难受的地方:看到打补丁版本,才知漏洞一直近在眼前(详述)...
- c语言程序中不能表示数制的是,2017计算机c语言二级考试题库及答案
- 高项_第三章项目立项管理
- 惠普m128fn中文说明书_惠普M128fw使用说明书
- ppt太大怎么压缩变小一点?
- AIC、BIC、QAIC及HQ准则
- PMP知识点(十一、干系人管理)
- matlab eye函数_[线性代数系列1] MATLAB入门笔记
热门文章
- Hibernate的Session会话中get()和load()方法的区别
- aspose 生成word 简单的文档操作
- 多CPU,多核,多进程,多线程以及进程和线程的简单理解以及区别
- VS2010中添加lib库引用
- c++中用new和不用new创建对象的本质区别
- IOS基础之计算器的编写
- onnx模型转tensorflow模型
- 按钮不通过表单连接servlet_JavaWeb之Servlet(一)
- textview文本超出部分用省略号表示
- python logging模块的作用_【python】【logging】python日志模块logging常用功能