cookie操作和代理
cookie操作
爬取豆瓣个人主页
# -*- coding: utf-8 -*-
import scrapy class DoubanSpider(scrapy.Spider):
name = 'douban'
#allowed_domains = ['www.douban.com']
start_urls = ['https://www.douban.com/accounts/login'] #重写start_requests方法
def start_requests(self):
#将请求参数封装到字典
data = {
'source': 'index_nav',
'form_email': '',
'form_password': 'bobo@15027900535'
}
for url in self.start_urls:
yield scrapy.FormRequest(url=url,formdata=data,callback=self.parse)
#针对个人主页页面数据进行解析操作
def parseBySecondPage(self,response):
fp = open('second.html', 'w', encoding='utf-8')
fp.write(response.text) #可以对当前用户的个人主页页面数据进行指定解析操作 def parse(self, response):
#登录成功后的页面数据进行存储
fp = open('main.html','w',encoding='utf-8')
fp.write(response.text) #获取当前用户的个人主页
url = 'https://www.douban.com/people/185687620/'
yield scrapy.Request(url=url,callback=self.parseBySecondPage)
因为要进行登录操作,所以一定要使用post请求进行表单提交,那么就必须重写start_requests()方法;观察代码就可以发现,当登录成功之后再次请求个人主页,不再需要
刻意地处理cookie,那是因为scrapy已经帮我们省去了这样的操作:第一次请求返回的cookie会在第二请求发送的时候被携带。
代理
import scrapy class ProxydemoSpider(scrapy.Spider):
name = 'proxyDemo'
#allowed_domains = ['www.baidu.com/s?wd=ip']
start_urls = ['https://www.baidu.com/s?wd=ip'] def parse(self, response):
fp = open('proxy.html','w',encoding='utf-8')
fp.write(response.text)
配置好配置文件,然后再执行,在proxy.html文件中就会看到本机ip的浏览器页面,ip就是真实的本机ip。
那如何更改ip呢?就用到了代理,在scrapy中使用代理操作需要对下载中间件下手。
那么什么是下载中间件呢?
下载中间件的作用就是拦截请求,将请求的ip进行更换。
流程:
1. 下载中间件类的自制定
a) 继承object
b) 重写process_request(self,request,spider)的方法
2. 配置文件中进行下载中间价的开启。
middlewares.py 就是下载中间件的定义文件
from scrapy import signals #自定义一个下载中间件的类,在类中实现process_request(处理中间价拦截到的请求)方法
class MyProxy(object):
def process_request(self,request,spider):
#请求ip的更换
request.meta['proxy'] = "https://178.128.90.1:8080" # 这里需要一个有效的代理ip
开启下载中间件
# Enable or disable downloader middlewares
# See https://doc.scrapy.org/en/latest/topics/downloader-middleware.html
DOWNLOADER_MIDDLEWARES = {
'proxyPro.middlewares.MyProxy': 543, # 数字大小代表优先级
}
再次执行,打开页面发现ip就被更改了!
cookie操作和代理的更多相关文章
- 爬虫--requests模块高级(代理和cookie操作)
代理和cookie操作 一.基于requests模块的cookie操作 引言:有些时候,我们在使用爬虫程序去爬取一些用户相关信息的数据(爬取张三“人人网”个人主页数据)时,如果使用之前requests ...
- Python脚本控制的WebDriver 常用操作 <二十八> 超时设置和cookie操作
超时设置 测试用例场景 webdriver中可以设置很多的超时时间 implicit_wait.识别对象时的超时时间.过了这个时间如果对象还没找到的话就会抛出异常 Python脚本 ff = webd ...
- cookie操作大全
JavaScript中的另一个机制:cookie,则可以达到真正全局变量的要求. cookie是浏览器 提供的一种机制,它将document 对象的cookie属性提供给JavaScript.可以由J ...
- js 判断js函数、变量是否存在 JS保存和删除cookie操作,判断cookie是否存在的方法
//是否存在指定函数 function isExitsFunction(funcName) { try { if (typeof(eval(funcName)) == " ...
- JS封装cookie操作函数实例(设置、读取、删除)
本文实例讲述了JS封装cookie操作函数.分享给大家供大家参考,具体如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ...
- 网上收集的WebBrowser的Cookie操作
原文:网上收集的WebBrowser的Cookie操作 1.WebBrowser设置Cookie Code highlighting produced by Actipro CodeHighlight ...
- 学习笔记: JavaScript/JQuery 的cookie操作
转自:http://blog.csdn.net/barryhappy/archive/2011/04/27/6367994.aspx cookie是网页存储到用户硬盘上的一小段信息.最常见的作用是判断 ...
- js实用方法记录-简单cookie操作
js实用方法记录-简单cookie操作 设置cookie:setCookie(名称,值,保存时间,保存域); 获取cookie:setCookie(名称); 移除cookie:setCookie(名称 ...
- 前端cookie操作用到的一些小总结
前后端完全分离的是目前web开发的大趋势,包括现下流行的前端框架的应用vue,angular,在不同页面跳转时,前端需要对用户登录状态进行判断,拿到用户的id,除了Ajax从服务器端获取数据外,对co ...
随机推荐
- IT相关术语、缩略词
CLI Command Line Interface 命令行界面 GUI Graphical User Interface 图形用户界面 IP Internet Protocol 因特网协议 JDK ...
- RequestMapping的使用
1.RequestMapping的作用就是 配置url 2.实现功能: 可以在不同的url访问同一个方法.
- #CSS的盒子模型、元素类型
CSS的盒子模型.元素类型 本文首先介绍了CSS元素的统一内部结构模型,盒子模型:然后介绍了CSS元素基于不同分类标准定义的元素类型,包括基于不同内容设置方式定义的replaced元素和non-r ...
- Vim 新手节省时间的小技巧
1. 不关闭终端退出编辑器 使用 Vim 编辑器保存并退出编辑状态是一件轻而易举的事,你只需记住按 ESC 键切换到正常模式,然后输入冒号(:),之后输入 wq 即可实现保存并退出. :wq 如果不想 ...
- 《ArcGIS Runtime SDK for Android开发笔记》——(6)、基于Android Studio的ArcGIS Android工程结构解析
1.前言 Android Studio 是第一个Google官方的 Android 开发环境.其他工具,例如 Eclipse,在 Android Studio 发布之前已经有了大规模的使用.为了帮助开 ...
- iOS获取/删除url中的参数
1.获取URL中的某个参数: - (NSString *)getParameter:(NSString *)parameter urlStr:(NSString *)url { NSError *er ...
- User Agent字符串列表
User Agent字符串列表 --之心 User Agent中文名为用户代理,是Http协议中的一部分,属于头域的组成部分,User Agent也简称UA.它是一个特殊字符串头,是一种向访问网站提供 ...
- c++中explicit关键字用法
C++ explicit关键字用来修饰类的构造函数,表明该构造函数是显式的,既然有"显式"那么必然就有"隐式",那么什么是显示而什么又是隐式的呢? 如果c++类 ...
- 【BZOJ1269】[AHOI2006] 文本编辑器editor(Splay)
点此看题面 大致题意: 让你维护一个字符串,有插入字符串.删除区间.反转区间和输出单个字符操作. \(Splay\) 这应该是一道比较简单的\(Splay\)题(虽然因为各种细节我调了很久). 我们可 ...
- react里面怎么引入样式
模块样式 在刚开始构建好框架的时候,准备开始写业务,在第一个页面的时候就会碰到怎么引入样式的问题,踩过一些坑,不是使用style,头部也不需要另外取名,直接引入css就可以,引入方式是这样 <d ...