热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

02网络请求(03cookie)

1、cookie简介2、爬虫自动登录访问授权页面人人网举例:需要登录才能才能查看(经验:不管对方网址是否反扒,都加上请求头&

 1、COOKIE简介

2、爬虫自动登录访问授权页面 

 

 

人人网举例:需要登录才能才能查看(经验:不管对方网址是否反扒,都加上请求头,才是最安全的)

 

 

# -*- coding: utf-8 -*-# 爬虫自动登录访问授权页面(自动获取COOKIE)# 大鹏董成鹏主页: http://www.renren.com/880151247/profile
# 人人网登录url: http://www.renren.com/PLogin.dofrom urllib import request
from urllib import parse
from http.COOKIEjar import COOKIEJarheaders = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36'}def get_opener():# 1 登录# 1.1 创建一个COOKIEjar对象COOKIEjar = COOKIEJar()# 1.2 使用COOKIEjar创建一个HTTPCOOKIEProcess对象handler = request.HTTPCOOKIEProcessor(COOKIEjar)# 1.3 使用上一步创建的handler创建一个openeropener = request.build_opener(handler)return openerdef login_renren(opener):# 1.4 使用opener发送登录的请求(人人网的邮箱和密码)data = {'email': '970138074@qq.com','password': 'pythonspider'}login_url = "http://www.renren.com/PLogin.do"req = request.Request(login_url, data=parse.urlencode(data).encode('utf-8'), header=headers)opener.open(req)def visit_profile(opener):# 2 访问个人主页dapeng_url = "http://www.renren.com/880151247/profile"# 获取个人主页的页面的时候,不要新建一个opener,而应该使用之前的那个opener,因为之前那个opener已经包含了登录所需的COOKIE信息req = request.Request(dapeng_url, headers=headers)resp = opener.open(req)with open('renren.html', 'w', encoding='utf-8') as fp:# write函数必须写入一个str的数据类型# resp.read()读出来的是一个bytes数据类型# byte -> decode -> str# str -> encode -> bytesfp.write(resp.read().decode('utf-8'))if __name__ == '__main__':opener = get_opener()login_renren(opener)visit_profile(opener)

3、COOKIE信息的保存与加载

1)保存COOKIE到本地

保存COOKIE到本地,可以使用COOKIEjar的save方法,并且需要指定一个文件名

# 1.保存COOKIE
# -*- coding: utf-8 -*-from urllib import request
from http.COOKIEjar import MozillaCOOKIEJarCOOKIEjar = MozillaCOOKIEJar('COOKIE.txt') # 指定存储的位置及文件名字
handler = request.HTTPCOOKIEProcessor(COOKIEjar)
opener = request.build_opener(handler)resp = opener.open('http://www.baidu.com/')COOKIEjar.save() # 上面指定了文件名字,此处则不用再次指定名字(否则需要指定文件名)

2)从本地加载COOKIE

从本地加载COOKIE,需要使用COOKIEjar的load方法,并且也需要指定方法

# 2.写入COOKIE
from urllib import request
from http.COOKIEjar import MozillaCOOKIEJarCOOKIEjar = MozillaCOOKIEJar('COOKIE.txt') # 指定存储的位置及文件名字
COOKIEjar.load(ignore_discard=True)
handler = request.HTTPCOOKIEProcessor(COOKIEjar)
opener = request.build_opener(handler)resp = opener.open('http://httpbin.org/COOKIEs')
for COOKIE in COOKIEjar:print(COOKIE)# COOKIEjar.save(ignore_discard=True)

 


推荐阅读
  • Scrapy 爬取图片
    1.创建Scrapy项目scrapystartprojectCrawlMeiziTuscrapygenspiderMeiziTuSpiderhttps:movie.douban.c ... [详细]
  • 文章目录简介HTTP请求过程HTTP状态码含义HTTP头部信息Cookie状态管理HTTP请求方式简介HTTP协议(超文本传输协议)是用于从WWW服务 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 最近在学Python,看了不少资料、视频,对爬虫比较感兴趣,爬过了网页文字、图片、视频。文字就不说了直接从网页上去根据标签分离出来就好了。图片和视频则需要在获取到相应的链接之后取做下载。以下是图片和视 ... [详细]
  • 目录爬虫06scrapy框架1.scrapy概述安装2.基本使用3.全栈数据的爬取4.五大核心组件对象5.适当提升scrapy爬取数据的效率6.请求传参爬虫06scrapy框架1. ... [详细]
  • 博主使用代理IP来自于网上免费提供高匿IP的这个网站用到的库frombs4importBeautifulSoupimportrandomimporturllib.re ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了正则表达式python相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 使用正则表达式爬取36Kr网站首页新闻的操作步骤和代码示例
    本文介绍了使用正则表达式来爬取36Kr网站首页所有新闻的操作步骤和代码示例。通过访问网站、查找关键词、编写代码等步骤,可以获取到网站首页的新闻数据。代码示例使用Python编写,并使用正则表达式来提取所需的数据。详细的操作步骤和代码示例可以参考本文内容。 ... [详细]
  • 深入理解CSS中的margin属性及其应用场景
    本文主要介绍了CSS中的margin属性及其应用场景,包括垂直外边距合并、padding的使用时机、行内替换元素与费替换元素的区别、margin的基线、盒子的物理大小、显示大小、逻辑大小等知识点。通过深入理解这些概念,读者可以更好地掌握margin的用法和原理。同时,文中提供了一些相关的文档和规范供读者参考。 ... [详细]
  • 延迟注入工具(python)的SQL脚本
    本文介绍了一个延迟注入工具(python)的SQL脚本,包括使用urllib2、time、socket、threading、requests等模块实现延迟注入的方法。该工具可以通过构造特定的URL来进行注入测试,并通过延迟时间来判断注入是否成功。 ... [详细]
  • css元素可拖动,如何使用CSS禁止元素拖拽?
    一、用户行为三剑客以下3个CSS属性:user-select属性可以设置是否允许用户选择页面中的图文内容;user-modify属性可以设置是否允许输入 ... [详细]
  • 跨站的艺术XSS Fuzzing 的技巧
    作者|张祖优(Fooying)腾讯云云鼎实验室对于XSS的漏洞挖掘过程,其实就是一个使用Payload不断测试和调整再测试的过程,这个过程我们把它叫做F ... [详细]
  • nginx 解决跨域问题 No: 'AccessControlAllowOrigin' header is present on the requested resource
    错误信息:1, ... [详细]
author-avatar
魔帝君
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有