美文网首页
scrapy代理的使用

scrapy代理的使用

作者: 微凉_半夏 | 来源:发表于2018-10-25 19:17 被阅读0次
首先我们检测ip是否可用:

1.对于免费代理的检测

#免费代理或不用密码的代理
url = 'http://httpbin.org/get'

proxy = '127.0.0.0:8000'

proxies = {
    'http': 'http://' + proxy,
    'https': 'https://' + proxy,
}


response = requests.get(url, proxies=proxies, verify=False)
print(response.text)

注:这里的proxy改成你要检测的ip即可
返回结果中:"origin": "127.0.0.0" #即为你的代理,可用

2.对于付费代理的检测:

#测试付费代理和加密代理
url = 'http://httpbin.org/get'

proxy_host = '127.0.0.0'
proxy_port = '8000'

proxy_user = 'root'
proxy_pass = 'root'

proxy_meta = 'http://%(user)s:%(pass)s@%(host)s:%(port)s' % {
    'host': proxy_host,
    'port': proxy_port,
    'user': proxy_user,
    'pass': proxy_pass,
}

proxies = {
    'http': proxy_meta,
    'https': proxy_meta,
}

response = requests.get(url, proxies=proxies)
print(response.text)

将上面的ip和账户之类的换成你自己的即可(参照阿布云给的示例进行付费检测)

下面将代理运用到scrapy框架中:

在scrapy框架中有两种方法进行

1.直接编写在scrapy爬虫代码中
2.利用中间件middlewares.py进行
现在我将详细讲述下这两种分别如何进行

首先我们需要有一个可用的ip
对于方法一:利用meta函数进行携带即可访问
scrapy爬虫代码中:

import scrapy

class ProxySpider(scrapy.Spider):
    name = 'proxy'
    allowed_domains = ["httpbin.org"]

    def start_requests(self):
        url = 'http://httpbin.org/get'
        proxy = '127.0.0.0:8000'

        proxies = ""
        if url.startswith("http://"):
            proxies = "http://"+str(proxy)
        elif url.startswith("https://"):
            proxies = "https://"+str(proxy)
        #注意这里面的meta={'proxy':proxies},一定要是proxy进行携带,其它的不行,后面的proxies一定 要是字符串,其它任何形式都不行
        yield scrapy.Request(url, callback=self.parse,meta={'proxy':proxies})

    def parse(self,response):
        print(response.text)

(好多坑啊,写代码的时候踩着都想流泪)

对于方法二:利用middlewares中间件进行
1.在middlewares.py问件中添加如下代码即可:

#配置代理
class ProxyMiddleware(object):
    def process_request(self,request,spider):
        if request.url.startswith("http://"):
            request.meta['proxy']="http://"+'127.0.0.0:8000'          # http代理
        elif request.url.startswith("https://"):
            request.meta['proxy']="https://"+'127.0.0.0:8000'         # https代理

2.在settings.py文件中添加配置

# Enable or disable downloader middlewares
# See https://doc.scrapy.org/en/latest/topics/downloader-middleware.html
DOWNLOADER_MIDDLEWARES = {
   #这个biquge为你项目的名字,我是爬笔趣阁的,2333~
   'biquge.middlewares.ProxyMiddleware': 100,  
}

3.scrapy爬虫代码中正常编写代码,不用做任何修改/添加

import scrapy

class ProxySpider(scrapy.Spider):
    name = 'proxy'
    allowed_domains = ["httpbin.org"]
    # start_urls = ['http://httpbin.org/get']

    def start_requests(self):
        url = 'http://httpbin.org/get'
        yield scrapy.Request(url, callback=self.parse)

    def parse(self,response):
        print(response.text)

以上就是scrapy使用代理的整个思路和流程,如有问题可在下面留言

相关文章

  • 32.scrapy中间件的使用

    scrapy中间件的使用 学习目标: 应用 scrapy中使用间件使用随机UA的方法 应用 scrapy中使用代理...

  • Scrapy 使用代理

    一、使用开放代理(没有用户名和密码) 二、使用独享代理(有用户名和密码) 三、setting设置 开启下载中间件

  • scrapy使用代理

    最近一直访问网站访问不了,以为是网站在维护一直没有管它,直到客户截图发过来,我才发现自己手机也是可以访问的,就是使...

  • scrapy代理的使用

    首先我们检测ip是否可用: 1.对于免费代理的检测 注:这里的proxy改成你要检测的ip即可返回结果中:"ori...

  • [scrapy]scrapy爬取京东商品信息——以自营手机为例

    关于scrapy以及使用的代理轮换中间件请参考我的爬取豆瓣文章: 【scrapy】scrapy按分类爬取豆瓣电影基...

  • scrapy代理的设置

    scrapy代理的设置 在我的上一篇文章介绍了scrapy下载器中间件的使用,这里的scrapyIP的代理就是用这...

  • aiohttp与requests效率对比

    之前使用scrapy爬取了一些代理网站的代理,因为像知乎等网站针对ip进行了反爬,如果限制了ip地址,需要使用代理...

  • python scrapy 代理中间件,爬虫必掌握的内容之一

    本篇博客为大家说明一下 scrapy 中代理相关知识点。 代理的使用场景 编写爬虫代码的程序员,永远绕不开就是使用...

  • 6.python爬虫 scrapy 伪装代理和fake_user

    scrapy 伪装代理和fake_userAgent的使用 伪装浏览器代理 在爬取网页是有些服务器对请求过滤的不是...

  • 第七章 反爬虫机制

    反爬虫机制 标签(空格分隔): python scrapy scrapy 架构 useragent 用户代理切换 ...

网友评论

      本文标题:scrapy代理的使用

      本文链接:https://www.haomeiwen.com/subject/bcictqtx.html