scrapy使用代理ip_useragent怎么改

scrapy使用代理ip_useragent怎么改#使用了fake库fromfake_useragentimportUserAgent#配置headersclassRandomUserAgentMidddlware(object):#随机更换user-agentdef__init__(self,crawler):super(RandomUserAgentMidddlware,self).__init__()self.ua=UserAgent()#.

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

# 使用了fake库
from fake_useragent import UserAgent


# 配置headers
class RandomUserAgentMidddlware(object):
    # 随机更换user-agent
    def __init__(self, crawler):
        super(RandomUserAgentMidddlware, self).__init__()
        self.ua = UserAgent()
        # 从配置文件读取随机类型
        self.ua_type = crawler.settings.get('RANDOM_UA_TYPE', 'random')

    @classmethod
    def from_crawler(cls, crawler):
        return cls(crawler)

    def process_request(self, request, spider):
        # 通过配置文件的随机类型进行调用
        def get_ua():
            return getattr(self.ua, self.ua_type)

        request.headers.setdefault('User-Agent', get_ua())

# 使用了阿里云的IP代理服务
from myscrapy.aliproxy import get_proxy_ip


# 配置代理
class ProxyMiddleware(object):
    def process_request(self, request, spider):
        request.meta['proxy'] = get_proxy_ip()

setting中开启中间件:

DOWNLOADER_MIDDLEWARES = {
    'myscrapy.middlewares.MyscrapyDownloaderMiddleware': 543,
    'myscrapy.middlewares.RandomUserAgentMidddlware': 0,
    'myscrapy.middlewares.ProxyMiddleware': 1,
}

封装阿里云IP代理:

import urllib.request
import json


def get_proxy_ip():
    host = 'http://zip.market.alicloudapi.com'
    path = '/devtoolservice/ipagency'
    method = 'GET'
    appcode = 'xxxxxxxxxxxx'
    querys = 'foreigntype=0&protocol=0'
    bodys = {}
    url = host + path + '?' + querys

    request = urllib.request.Request(url)
    request.add_header('Authorization', 'APPCODE ' + "xxxxxxxxx")
    response = urllib.request.urlopen(request)
    content = response.read()
    if (content):
        load = json.loads(str(content, encoding='utf8'))
        address_ = load['result'][0]['address']
        return address_

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/172658.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 新手如何快速上手双拼,提高打字速度-by小鹤双拼输入法QQ群友-弧

    新手如何快速上手双拼,提高打字速度-by小鹤双拼输入法QQ群友-弧新手如何快速上手双拼,提高打字速度-by小鹤双拼输入法QQ群友-弧更新时间:2013-5-30新手如何快速上手双拼,提高打字速度首先说明,此文仅供参考,每个人需要选择适合自己的方法~纵然效率很重要,终究多练是王道。亲们加油吧……一个月从零开始到速度过百真心不难的。第一,双拼方案选择。(1)如果你已经熟练了某种双拼方案,其实没什么必要去更换——条件反射的更改比建立还要难,需要一…

    2022年6月16日
    45
  • java二维数组两种初始化方法[通俗易懂]

    java二维数组两种初始化方法[通俗易懂]写这篇博客的原因是因为从大一学习c语言开始就对二维数组的声明和初始化一直没有搞懂。。。。直到学到了Java依旧搞得不是很清楚。先看一道Java的基础题这道题错误的选项是B.二维数组的初始化的两种方式看了很多网上的博客,大部分都说是三种初始化的方式,我这里将其归为两种,有不同想法的小伙伴可以留言讨论。什么是二维数组:数组是一个容器,用来存储数据的。现在数组中存…

    2022年6月11日
    40
  • linux版navicat安装和激活成功教程「建议收藏」

    linux版navicat安装和激活成功教程「建议收藏」 原 linux版navicat安装和激活成功教程 2017年09月27日10:27:00 ispotu 阅读数:30819 <spanclass="tags-boxartic-tag-box"&a

    2025年6月8日
    0
  • php中str什么意思_php中isset函数作用

    php中str什么意思_php中isset函数作用strstr()函数是PHP中的一个内置函数,语法为strstr(string,search,before_search),用于搜索字符串在另一字符串中是否存在,如果是,返回该字符串及剩余部分,否则返回FALSE。此函数区分大小写。phpstrstr()函数怎么用?strstr()函数搜索字符串在另一字符串中是否存在,如果是,返回该字符串及剩余部分,否则返回FALSE。注:该函数是二进制…

    2022年10月15日
    0
  • 毕业前写了20万行代码,让我从成为同学眼里的面霸

    毕业前写了20万行代码,让我从成为同学眼里的面霸作者:小傅哥博客:https://bugstack.cn沉淀、分享、成长,让自己和他人都能有所收获!????一、前言20万行代码写完,毕业了找一份工作不是问题!刚一毕业因为找不到工作,就得报名去参加Java培训的大有人在。并不是说参加培训就不好,只不过以你现在这个毕业的时间点参加,就会显得特别匆忙。因为你的压力既来自于培训还需要花家里一笔不小的费用,也有同班同学已经找到一份不错的工作开始赚钱的比对。大学四年其实有足够的时间让你学会编程,也能从一个较长时间的学习中,知道自己适合不适合做程序员。

    2022年6月12日
    20
  • traceroute的原理与使用

    traceroute的原理与使用traceroute,路由跟踪,用来跟踪一个分组从源点到终点的整个过程。原理分析traceroute是通过ICMP协议中的时间超时差错报告报文来实现的,他从源主机到目的主机发送一连串的IP数据报p1-pn,并且数据报是无法交付的udp数据报。第一个数据报的TTL设置为1,这样当这个数据报转发到第一个路由器的时候,路由器收到后TTL减1,减完1之后发现TTL变为0,路由器会向源主机发送一个超时差…

    2022年7月21日
    16

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号