cookie

cookie: 获取百度翻译某个词条的结果

一定要对start_requests方法进行重写。

两种解决方案:

1. Request()方法中给method属性赋值成post
2. FormRequest()进行post请求的发送

爬虫相关操作

# -*- coding: utf-8 -*-
import scrapy # 需求:将百度翻译中指定词条对应的翻译结果进行获取
class PostdemoSpider(scrapy.Spider):
name = 'postDemo'
# allowed_domains = ['www.baidu.com']
start_urls = ['https://fanyi.baidu.com/sug'] # 该方法(默认是发送get请求)其实是父类中的一个方法:该方法可以对start_urls列表中的元素进行get请求的发送
# 发起post:
# 1.将Request方法中method参数赋值成post(不建议)
# 2.FormRequest()可以发起post请求(推荐)
def start_requests(self):
print('start_requests()')
# post请求的参数
data = {
'kw': 'dog',
}
for url in self.start_urls:
# formdata:请求参数对应的字典
yield scrapy.FormRequest(url=url, formdata=data, callback=self.parse) def parse(self, response):
print(response.text)

配置

BOT_NAME = 'postPro'

SPIDER_MODULES = ['postPro.spiders']
NEWSPIDER_MODULE = 'postPro.spiders' USER_AGENT = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36' # Obey robots.txt rules
ROBOTSTXT_OBEY = False

代理:

下载中间件作用:拦截请求,可以将请求的ip进行更换。

流程:

1. 下载中间件类的自制定

object

重写process_request(self,request,spider)的方法

2. 配置文件中进行下载中间价的开启。

代码实现

爬虫相关操作

# -*- coding: utf-8 -*-
import scrapy class ProxySpider(scrapy.Spider):
name = 'proxy'
# allowed_domains = ['www.baidu.com']
start_urls = ['http://www.baidu.com/s?wd=ip'] def parse(self, response):
fp = open('proxy.html', 'w', encoding='utf-8')
fp.write(response.text)

中间件

# -*- coding: utf-8 -*-

# Define here the models for your spider middleware
#
# See documentation in:
# https://doc.scrapy.org/en/latest/topics/spider-middleware.html from scrapy import signals # 自定义一个下载中间件的类,在类中实现process_request(处理中间件拦截到的请求)方法 class Myproxy(object):
def process_request(self, request, spider):
# 请求ip的更换
request.meta['proxy'] = 'http://60.217.137.218:8060' # 默认的用不到,可以删除

配置(开启中间件)

BOT_NAME = 'proxyDemo'

SPIDER_MODULES = ['proxyDemo.spiders']
NEWSPIDER_MODULE = 'proxyDemo.spiders' # Crawl responsibly by identifying yourself (and your website) on the user-agent
# USER_AGENT = 'proxyDemo (+http://www.yourdomain.com)'
USER_AGENT = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36' # Obey robots.txt rules
ROBOTSTXT_OBEY = False DOWNLOADER_MIDDLEWARES = {
'proxyDemo.middlewares.Myproxy': 543,
}

    

Scrapy之Cookie和代理的更多相关文章

  1. python scrapy 把cookie并转化为字典的形式

    在用scrapy设置cookie的时候,需要从网页上对应的页面把cookie字段复制下来,并转化为字典的形式,下面代码是对cookie的转化过程 # -*- coding: utf-8 -*- cla ...

  2. Scrapy框架--cookie的获取/传递/本地保存

    环境:Python3.6 + Scrapy1.4 我要实现的东西:1. 完成模拟登陆         2. 登陆成功后提取出cookie,然后保存到本地cookie.txt文件中         3. ...

  3. Scrapy用Cookie实现模拟登录

    模拟登录是爬取某些站点内容的一个关键,有些网站(特别是论坛类),不登录的话,一个数据也拿不到. 模拟登录有这样几个关键: 弄清楚登录的url一些网站打开出现登录的页面,地址栏大多数不是登录提交表单的u ...

  4. scrapy框架中间件配置代理

    scrapy框架中间件配置代理import random#代理池PROXY_http = [ '106.240.254.138:80', '211.24.102.168:80',]PROXY_http ...

  5. scrapy中使用 IP 代理

    在 scrapy 中使用 ip 代理需要借助中间件的功能 首先在settings 中设置好中间件,中间件优先级数字越小越先被执行 , } 然后编写中间件,拦截请求设置代理 class ProxyMid ...

  6. Python网络爬虫Scrapy框架研究 以及 代理设置

    地址:https://github.com/yidao620c/core-scrapy 例子:https://github.com/geekan/scrapy-examples 中文翻译文档: htt ...

  7. requests模块的cookie和代理操作

    一.基于requests模块的cookie操作 引言:有些时候,我们在使用爬虫程序去爬取一些用户相关信息的数据(爬取张三“人人网”个人主页数据)时,如果使用之前requests模块常规操作时,往往达不 ...

  8. scrapy有用的(代理,user-agent,随机延迟等)

    代理 方法一(待测试) 见scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware import os # 设置相应的代理用户名密码,主机和 ...

  9. scrapy 设置cookie池

    代码已经很详细了,可以直接拿来使用了. 包含了: 从网页获取cookie 存入mongodb 定期删除cookie scrapy中间件对cookie池的取用 #!/usr/bin/python #co ...

随机推荐

  1. 1.appium介绍

    appium介绍 官方网站 1.特点 appium 是一个自动化测试开源工具,支持 iOS 平台和 Android 平台上的原生应用,web应用和混合应用. “移动原生应用”是指那些用iOS或者 An ...

  2. centos下安装lnmp各个版本的几种方法

    首先我们用一种yum的方法安装,我们需要rpm源 默认的版本太低了,手动安装有一些麻烦,想采用Yum安装的可以使用下面的方案: 1.检查当前安装的PHP包 yum list installed | g ...

  3. JS interview loop code

    //九九乘法表 document.write("<table width='600' border=0'>"); for(var i=1; i<=9; i++){ ...

  4. pl/sql 存储过程执行execute immediate 卡住

    在存储过程中,执行了create table.update table.insert into table 但是在使用pl/sql的存储过程调试的时候,一有问题就直接卡住(标识:执行中.....) 后 ...

  5. OC static 和变量

    #include <stdio.h> // 如果在不同源文件出现了同名的内部变量,那么这些变量将互不干扰 static int b; // 用static修饰的全部变量,可以称为内部变量 ...

  6. MySQL联合索引最左匹配范例

    MySQL联合索引最左匹配范例 参考文章:http://blog.jobbole.com/24006/ 创建示例表. 示例表来自MySQL官方文档: https://dev.mysql.com/doc ...

  7. ZOJ 3379 Master Spark

    计算出中轴能覆盖到某个点的极角范围,最大覆盖次数即是答案. 首先把中轴和点重合,此时中轴的角度为theta = atan(y/x), 然后以原点为圆心旋转点和抛物线相交求出之间的夹角, 把x = a* ...

  8. hdu-4288 Coder---线段树+离线处理&离散化

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4288 题目大意: 维护一个有序数列{An},有三种操作: 1.添加一个元素. 2.删除一个元素. 3 ...

  9. Python语言程序设计基础(2)—— Python程序实例解析

    温度转换 def tempConvert(ValueStr): if ValueStr[-1] in ['F','f']: ans = (eval(ValueStr[0:-1]) - 32)/1.8 ...

  10. LA 4327 多段图

    题目链接:https://vjudge.net/contest/164840#problem/B 题意: 从南往北走,横向的时间不能超过 c: 横向路上有权值,求权值最大: 分析: n<=100 ...