Scrapy之Cookie和代理

Posted lshedward

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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,
}

 

 

 

    

以上是关于Scrapy之Cookie和代理的主要内容,如果未能解决你的问题,请参考以下文章

scrapy按顺序启动多个爬虫代码片段(python3)

网络爬虫之scrapy框架详解,scrapy框架设置代理

Scrapy框架之如何给你的请求添加代理

python爬虫之Scrapy 使用代理配置——乾颐堂

scrapy学习2 爬虫中间件,下载器中间件之添加代理

网络爬虫之scrapy框架设置代理