在实际情况中,很多网站的内容都是需要登录之后才能看到,如此我们就需要进行模拟登录,使用登录后的状态进行爬取。这里就需要使用到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模拟登录——获取电子书下载链接...相关推荐

  1. python爬虫登录下载_Python爬虫实战入门四:使用Cookie模拟登录——获取电子书下载链接...

    在实际情况中,很多网站的内容都是需要登录之后才能看到,如此我们就需要进行模拟登录,使用登录后的状态进行爬取.这里就需要使用到Cookie. 现在大多数的网站都是使用Cookie跟踪用户的登录状态,一旦 ...

  2. python模拟登记获取cookie_Python爬虫实战入门四:使用Cookie模拟登录——获取电子书下载链接...

    在实际情况中,很多网站的内容都是需要登录之后才能看到,如此我们就需要进行模拟登录,使用登录后的状态进行爬取.这里就需要使用到Cookie. 使用Cookie进行模拟登录 现在大多数的网站都是使用Coo ...

  3. python实例豆瓣音乐代码_Python爬虫实战(3)-爬取豆瓣音乐Top250数据(超详细

    前言 首先我们先来回忆一下上两篇爬虫实战文章: 第一篇:讲到了requests和bs4和一些网页基本操作. 第二篇:用到了正则表达式-re模块 今天我们用lxml库和xpath语法来爬虫实战. 1.安 ...

  4. python爬虫实战测评_Python 爬虫实战入门(上)

    之前为了工作需要,写了不少爬虫小程序,和同事们聊得过程中发现,很多人对爬虫还是停留在听说过的阶段,基于这个原因,特意写点适合小白看的,希望大家能对爬虫有个小认知. 工欲善其事必先利其器,既然要写爬虫, ...

  5. python爬取论坛帖子_Python爬虫实战(1):爬取Drupal论坛帖子列表

    1,引言 在<Python即时网络爬虫项目: 内容提取器的定义>一文我们定义了一个通用的python网络爬虫类,期望通过这个项目节省程序员一半以上的时间.本文将用一个实例讲解怎样使用这个爬 ...

  6. python爬百度贴吧_Python爬虫实战之爬取百度贴吧帖子

    大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 本篇目标对百度贴吧的任意帖子进行抓取 指定是否只抓取楼主发帖内 ...

  7. python多线程爬取段子_Python爬虫实战之一秒爬取内涵段子

    人生苦短,我用Python,今天来一起爬取一下内涵段子. 话不啰嗦直接代码,gogogog! #coding=utf-8 import urllib2 import re class Spider: ...

  8. 利用python爬取租房信息_Python爬虫实战(1)-爬取“房天下”租房信息(超详细)

    #前言html 先看爬到的信息:python 今天主要用到了两个库:Requests和BeautifulSoup.因此我先简单的说一下这两个库的用法,提到的都是此文须要用到的.编程 #Requests ...

  9. python爬取控制台信息_python爬虫实战之爬取智联职位信息和博客文章信息

    1.python爬取招聘信息 简单爬取智联招聘职位信息 # !/usr/bin/env python # -*-coding:utf-8-*- """ @Author  ...

最新文章

  1. 遂宁专业计算机学校,遂宁计算机专业中职学校哪家强
  2. C++中的接口(抽象类)
  3. 20个开源项目托管站点推荐
  4. 深度学习100例 | 第24天-卷积神经网络(Xception):动物识别
  5. bzoj4525[Usaco2016 Jan]Angry Cows
  6. es6 取数组的第一个和最后一个_JS算法题之每日一题- 17.在排序数组中查找元素的第一个和最后一个位置...
  7. Spark K-Means
  8. Linux下部署多个Tomcat
  9. 真相了!AI 程序员:我们根本没有 80w 年薪好么?
  10. win8的开始菜单不见了怎么办
  11. JAVA08 多态
  12. React学习笔记—属性转移
  13. 亲历漏洞研究最让人难受的地方:看到打补丁版本,才知漏洞一直近在眼前(详述)...
  14. c语言程序中不能表示数制的是,2017计算机c语言二级考试题库及答案
  15. 高项_第三章项目立项管理
  16. 惠普m128fn中文说明书_惠普M128fw使用说明书
  17. ppt太大怎么压缩变小一点?
  18. AIC、BIC、QAIC及HQ准则
  19. PMP知识点(十一、干系人管理)
  20. matlab eye函数_[线性代数系列1] MATLAB入门笔记

热门文章

  1. Hibernate的Session会话中get()和load()方法的区别
  2. aspose 生成word 简单的文档操作
  3. 多CPU,多核,多进程,多线程以及进程和线程的简单理解以及区别
  4. VS2010中添加lib库引用
  5. c++中用new和不用new创建对象的本质区别
  6. IOS基础之计算器的编写
  7. onnx模型转tensorflow模型
  8. 按钮不通过表单连接servlet_JavaWeb之Servlet(一)
  9. textview文本超出部分用省略号表示
  10. python logging模块的作用_【python】【logging】python日志模块logging常用功能