返回顶部
首页 > 资讯 > 后端开发 > Python >Python爬虫Scrapy框架IP代理如何配置与调试
  • 505
分享到

Python爬虫Scrapy框架IP代理如何配置与调试

2023-06-22 05:06:44 505人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章主要介绍python爬虫scrapy框架IP代理如何配置与调试,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!代理ip的逻辑在哪里一个scrapy 的项目结构是这样的scrapydownloadertest&n

这篇文章主要介绍python爬虫scrapy框架IP代理如何配置与调试,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

代理ip的逻辑在哪里

一个scrapy 的项目结构是这样的

scrapydownloadertest  # 项目文件夹    │  items.py       # 定义爬取结果存储的数据结构    │  middlewares.py  # 中间件(可以理解java的过滤器拦截器)    │  pipelines.py   # 数据管道,对获取到的数据做操作    │  settings.py   # 项目的配置文件    │  __init__.py   # 初始化逻辑    │    ├─spiders  # 放置 Spiders 的文件夹    │  │  HttpProxyIp.py   # 爬取到结果后的处理类    │  │  __init__.py    # spider初始化逻辑scrapy.py

从上可以发现,代理ip的设置肯定是在发送请求之前就要设置好,那么唯一符合条件的地方就是 middlewares.py ,所以关于代理的相关逻辑都写在这个里面。直接在其中添加如下代码:

# Scrapy 内置的 Downloader Middleware 为 Scrapy 供了基础的功能,# 定义一个类,其中(object)可以不写,效果一样class SimpleProxyMiddleware(object):    # 声明一个数组    proxyList = ['http://218.75.158.153:3128','http://188.226.141.61:8080']        # Downloader Middleware的核心方法,只有实现了其中一个或多个方法才算自定义了一个Downloader Middleware    def process_request(self, request, spider):        # 随机从其中选择一个,并去除左右两边空格        proxy = random.choice(self.proxyList).strip()        # 打印结果出来观察        print("this is request ip:" + proxy)        # 设置request的proxy属性的内容为代理ip        request.meta['proxy'] = proxy    # Downloader Middleware的核心方法,只有实现了其中一个或多个方法才算自定义了一个Downloader Middleware    def process_response(self, request, response, spider):        # 请求失败不等于200        if response.status != 200:            # 重新选择一个代理ip            proxy = random.choice(self.proxyList).strip()            print("this is response ip:" + proxy)            # 设置新的代理ip内容            request.mete['proxy'] = proxy            return request        return response

每个 Downloader Middleware 定义了一个或多个方法的类,核心的方法有如下三个:

  • process_request(request, spider)

  • process_response(request,response, spider)

  • process_exception(request, exception, spider)

然后找到 setting.py 文件中的这块区域

Python爬虫Scrapy框架IP代理如何配置与调试

修改如下,也就是取消注释,加上刚刚写的Middleware 类的路径

Python爬虫Scrapy框架IP代理如何配置与调试

以上就已经配置好了一个简单的代理ip,此时来到 httpProxyIp.py 这个文件, 这个文件是我通过命令 scrapy genspider httpProxyIp icanhazip.com 生成的,创建成功内容如下:

# -*- coding: utf-8 -*-import scrapyclass HttpproxyipSpider(scrapy.Spider):    name = 'httpProxyIp'    allowed_domains = ['icanhazip.com']    start_urls = ['http://icanhazip.com/']    def parse(self, response):        pass

我们修改一下,最终代码如下所示:

# -*- coding: utf-8 -*-import scrapyfrom scrapy.cmdline import executeclass HttpproxyipSpider(scrapy.Spider):    # spider 任务名    name = 'httpProxyIp'    # 允许访问的域名    allowed_domains = ['icanhazip.com']    # 起始爬取的url    start_urls = ['http://icanhazip.com/']    # spider 爬虫解析的方法,关于内容的解析都在这里完成; self表示实例的引用, response爬虫的结果    def parse(self, response):        print('代理后的ip: ', response.text)# 这个是main函数也是整个程序入口的惯用写法if __name__ == '__main__':    execute(['scrapy', 'crawl', 'httpbin'])

此时运行程序 scrapy crawl httpProxyIp 可以看到结果输出

Python爬虫Scrapy框架IP代理如何配置与调试

很明显,这里没有打印出我们想要的结果,说明之前 proxyList = ['http://218.75.158.153:3128','http://188.226.141.61:8080'] 没有用,我们找找有没有可以用的,这里用免费的,所以找起来费点时间 免费代理ip

Python爬虫Scrapy框架IP代理如何配置与调试

Python爬虫Scrapy框架IP代理如何配置与调试

这样就完成了scrapy的代理设置和验证调试。

如何配置动态的代理ip

这里使用的是收费的代理ip了,你可以使用快代理或者阿布云等云服务商提供的服务,当你注册并缴费之后,会给你一个访问url和用户名密码,这里直接看代码吧! 同样在 middlewares.py新建一个类

Python爬虫Scrapy框架IP代理如何配置与调试

修改 setting.py 的 DOWNLOADER_MIDDLEWARES 内容

DOWNLOADER_MIDDLEWARES = {    # 注释掉之前的例子改用AbuyunProxyMiddleware    # 'scrapydownloadertest.middlewares.SimpleProxyMiddleware': 100,    'scrapydownloadertest.middlewares.AbuyunProxyMiddleware': 100,}

其他地方不动,我们在启动看看,这里换种启动方式,因为使用的是PyCharm开发工具,所以可以直接

Python爬虫Scrapy框架IP代理如何配置与调试

Python爬虫Scrapy框架IP代理如何配置与调试

http://icanhazip.com/是一个显示当前访问者ip的网站,可以很方便的用来验证scrapy的代理ip 设置是否成功。

以上是“python爬虫Scrapy框架IP代理如何配置与调试”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网Python频道!

--结束END--

本文标题: Python爬虫Scrapy框架IP代理如何配置与调试

本文链接: https://lsjlt.com/news/302887.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python爬虫Scrapy框架IP代理如何配置与调试
    这篇文章主要介绍Python爬虫Scrapy框架IP代理如何配置与调试,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!代理ip的逻辑在哪里一个scrapy 的项目结构是这样的scrapydownloadertest&n...
    99+
    2023-06-22
  • Python爬虫Scrapy框架IP代理的配置与调试
    目录代理ip的逻辑在哪里如何配置动态的代理ip在调试爬虫的时候,新手都会遇到关于ip的错误,好好的程序突然报错了,怎么解决,关于ip访问的错误其实很好解决,但是怎么知道解决好了呢?怎...
    99+
    2024-04-02
  • 如何入门Python Scrapy爬虫框架
    如何入门Python Scrapy爬虫框架,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Scrapy概述Scrapy是Python开发的一个非常流行的网络爬虫框架,可以用来...
    99+
    2023-06-02
  • python爬虫框架scrapy代理中间件掌握学习教程
    目录代理的使用场景使用 HttpProxyMiddleware 中间件代理的使用场景 编写爬虫代码的程序员,永远绕不开就是使用代理,在编码过程中,你会碰到如下情形: 网络不好,需要代...
    99+
    2024-04-02
  • 干货Python爬虫如何设置代理IP
    在Python爬虫中设置代理IP可以通过使用第三方库如requests或urllib库来实现。以下是一个使用requests库设置代...
    99+
    2023-09-21
    Python
  • python 爬虫如何使用代理IP
    作为一名数据采集者,我们都是知道,一个网站要是频繁访问都会被封IP,那要怎么解决这个问题呢?不可能一直频繁的更换设备,不光数据不能同步,这些设备的成本也是无法预计的,所以这个时候就需要代理IP了。以亿牛云(https://www.16yun...
    99+
    2023-06-02
  • 如何用Python爬虫抓取代理IP
    本篇文章为大家展示了如何用Python爬虫抓取代理IP,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。不知道大家在访问网站的时候有没有遇到过这样的状况就是被访问的网站会给出一个提示,提示的显示是“访问...
    99+
    2023-06-02
  • 讲解Python的Scrapy爬虫框架使用代理进行采集的方法
    1.在Scrapy工程下新建“middlewares.py” # Importing base64 library because we'll need it ONLY in case if the p...
    99+
    2022-06-04
    爬虫 框架 方法
  • python爬虫时如何知道是否代理ip伪装成功
    有时候我们的爬虫程序添加了代理,但是我们不知道程序是否获取到了ip,尤其是动态转发模式的,这时候就需要进行检测了,以下是一种代理是否伪装成功的检测方式,这里推介使用亿牛云提供的代码示例。Python¶requests #!&nbs...
    99+
    2023-06-02
  • 如何在python中使用proxybroker构建一个爬虫免费IP代理池
    今天就跟大家聊聊有关如何在python中使用proxybroker构建一个爬虫免费IP代理池,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。python可以做什么Python是一种编程...
    99+
    2023-06-06
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作