Scrapy之Cookie和代理

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,
}

    

原文地址:https://www.cnblogs.com/lshedward/p/10697412.html

时间: 2024-11-02 19:11:56

Scrapy之Cookie和代理的相关文章

scrapy带cookie登录简单的网站

在爬数据的时候,登录一直是一个比较麻烦的问题.我也一直在网上找过各种资料,都挺麻烦的,因为需要分析各种http过程,感觉太麻烦了. 不过最近在一个同学的帮助下,找到了使用cookie登录的方法.因为带cookie登录的话,server会认为你是一个已登录的用户,所以就会返回给你一个已登录的内容 本文介绍的方法,是使用python的scrapy框架登录的方法.而且也只能登录一些比较简单的网站,对于那种大型的网站,因为目前我也还没有验证过,所以不敢保证.但是经过验证,登录豆瓣是万试万灵的. 1. 获

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

环境:Python3.6 + Scrapy1.4 我要实现的东西:1. 完成模拟登陆 ????????2. 登陆成功后提取出cookie,然后保存到本地cookie.txt文件中 ????????3. 再次使用时从本地的cookie.txt中读取cookie,省略模拟登陆. 看了一些关于Scrapy操作cookie的博客,写的大同小异(都不好使...).我总结一下我尝试出来的关于cookie的提取和传递的操作,亲测可用 Cookie的传递和提取 from scrapy.http.cookies

Python爬虫系列之----Scrapy(七)使用IP代理池

一.手动更新IP池 1.在settings配置文件中新增IP池: IPPOOL=[ {"ipaddr":"61.129.70.131:8080"}, {"ipaddr":"61.152.81.193:9100"}, {"ipaddr":"120.204.85.29:3128"}, {"ipaddr":"219.228.126.86:8123"},

scrapy抓取免费代理IP

1.创建项目 scrapy startproject getProxy 2.创建spider文件,抓取www.proxy360.cn www.xicidaili.com两个代理网站内容 cd项目的spiders模块下执行 scrapy genspider proxy360Spider proxy360.cn scrapy genspider xiciSpider xicidaili.com scrapy shell http://www.proxy360.cn/Region/China scra

让scrapy变相支持socks代理和代理池

上一篇文章中写了如何让scrapy支持HTTP代理 不过scrapy默认是不支持socks代理的,有时候纯HTTP代理又容易被G F W拦截,采集国外被屏蔽的网站又需要用到代理,好吧,能力是被需求逼出来的. 下面说一个解决方案 在美国或香港部署一台linux vps 以debian为例 安装必要组件 apt-get install build-essential autoconf libtool libssl-dev gcc -y 安装git apt-get install git -y 下载s

scrapy 设置cookie池

代码已经很详细了,可以直接拿来使用了. 包含了: 从网页获取cookie 存入mongodb 定期删除cookie scrapy中间件对cookie池的取用 #!/usr/bin/python #coding=utf-8 #__author__='dahu' #data=2017- # import requests import time from pymongo import MongoClient import cookielib import urllib2 from bson.obje

25-3 requests模块的cookie和代理操作

一.基于requests模块的cookie操作 引言:有些时候,我们在使用爬虫程序去爬取一些用户相关信息的数据(爬取张三"人人网"个人主页数据)时,如果使用之前requests模块常规操作时,往往达不到我们想要的目的,例如: 1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 import requests 4 if __name__ == "__main__": 5 6 #张三人人网个人信息页面的url 7 url

爬虫之cookie与代理

一, 基于requests模块的cookie操作 引言:有些时候,我们在使用爬虫程序去爬取一些用户相关信息的数据(爬取张三“人人网”个人主页数据)时,如果使用之前requests模块常规操作时,往往达不到我们想要的目的,例如: #!/usr/bin/env python # -*- coding:utf-8 -*- import requests if __name__ == "__main__": #张三人人网个人信息页面的url url = 'http://www.renren.c

scrapy爬虫框架介绍

一 介绍 Scrapy一个开源和协作的框架,其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的,使用它可以以快速.简单.可扩展的方式从网站中提取所需的数据.但目前Scrapy的用途十分广泛,可用于如数据挖掘.监测和自动化测试等领域,也可以应用在获取API所返回的数据(例如 Amazon Associates Web Services ) 或者通用的网络爬虫. Scrapy 是基于twisted框架开发而来,twisted是一个流行的事件驱动的python网络框架.因此Scrapy使用了一