Scrapy框架配置HTTP代理万能调试方法有哪些?

2026-04-20 03:061阅读0评论SEO资讯
  • 内容介绍
  • 相关推荐

本文共计734个文字,预计阅读时间需要3分钟。

Scrapy框架配置HTTP代理万能调试方法有哪些?

本文分为两部分:

一、HTTP代理的逻辑

知道做过Python爬虫的人都知道,HTTP代理的设置非常关键。在设置HTTP代理时,要注意以下几点:

1. 发送请求时,确保代理设置正确。

2.代理的逻辑点在于:

- 代理服务器地址和端口 - 代理类型(如HTTP、HTTPS) - 代理用户名和密码(如有)

二、在Scrapy项目结构中添加代理设置

实际上,只需要在Scrapy项目的配置文件中添加代理设置即可。以下是具体步骤:

1. 在Scrapy项目的根目录下创建一个名为`settings.py`的文件。

2.在`settings.py`文件中添加以下代码:

python

DOWNLOADER_MIDDLEWARES={ 'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': 400, 'myproject.middlewares.MyCustomDownloaderMiddleware': 543,}

DOWNLOADER_MIDDLEWARES={ 'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 110, 'myproject.middlewares.MyCustomProxyMiddleware': 111,}

HTTPPROXY='http://代理服务器地址:代理端口'HTTPS_PROXY='https://代理服务器地址:代理端口'PROXY_USERNAME='代理用户名'PROXY_PASSWORD='代理密码'

3. 在`myproject/middlewares.py`文件中创建自定义中间件`MyCustomProxyMiddleware`:

pythonclass MyCustomProxyMiddleware(object): def process_request(self, request, spider): request.meta['proxy']=HTTPPROXY if PROXY_USERNAME and PROXY_PASSWORD: base64_user_agent=base64.b64encode('%s:%s' % (PROXY_USERNAME, PROXY_PASSWORD)).decode() request.headers['Proxy-Authorization']='Basic ' + base64_user_agent

这样,在Scrapy项目中添加代理设置就完成了。

​本文分为两部分:

一、HTTP代理的逻辑​

做过python爬虫的都知道,HTTP代理的设置时要在发送请求钱设置好,那HTTP代理的逻辑点在哪里呢?实际上,只需要在Scrapy的项目结构中添加就好,具体代码如下:

# Scrapy 内置的 Downloader Middleware 为 Scrapy 供了基础的功能, # 定义一个类,其中(object)可以不写,效果一样 class SimpleProxyMiddleware(object): # 声明一个数组 proxyList = ['你购买的HTTP代理地址'] # 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

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

1.process_request(request,spider)

2.process_response(request,response,spider)

3.process_exception(request,exception,spider)

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

#DDWNLQADER_MIDDLEWARES = {# *images.middlewares.ImagesDownloaderMiddleware": 543, # *images middlewares,LocalProxyMiddleware*: 100#}

这部分需要修改,也就是取消注释,加上刚刚写的Middleware类的路径

#DDWNLQADER_MIDDLEWARES = { 'scrapydownloadertest.middlewares.SimpleProxyMiddleware': 100,|}

这样,我们就配置好了一个简单的HTTP代理,此时来到icanhazip.com/'] def parse(self, response): pass

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

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

Scrapy框架配置HTTP代理万能调试方法有哪些?

本文共计734个文字,预计阅读时间需要3分钟。

Scrapy框架配置HTTP代理万能调试方法有哪些?

本文分为两部分:

一、HTTP代理的逻辑

知道做过Python爬虫的人都知道,HTTP代理的设置非常关键。在设置HTTP代理时,要注意以下几点:

1. 发送请求时,确保代理设置正确。

2.代理的逻辑点在于:

- 代理服务器地址和端口 - 代理类型(如HTTP、HTTPS) - 代理用户名和密码(如有)

二、在Scrapy项目结构中添加代理设置

实际上,只需要在Scrapy项目的配置文件中添加代理设置即可。以下是具体步骤:

1. 在Scrapy项目的根目录下创建一个名为`settings.py`的文件。

2.在`settings.py`文件中添加以下代码:

python

DOWNLOADER_MIDDLEWARES={ 'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': 400, 'myproject.middlewares.MyCustomDownloaderMiddleware': 543,}

DOWNLOADER_MIDDLEWARES={ 'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 110, 'myproject.middlewares.MyCustomProxyMiddleware': 111,}

HTTPPROXY='http://代理服务器地址:代理端口'HTTPS_PROXY='https://代理服务器地址:代理端口'PROXY_USERNAME='代理用户名'PROXY_PASSWORD='代理密码'

3. 在`myproject/middlewares.py`文件中创建自定义中间件`MyCustomProxyMiddleware`:

pythonclass MyCustomProxyMiddleware(object): def process_request(self, request, spider): request.meta['proxy']=HTTPPROXY if PROXY_USERNAME and PROXY_PASSWORD: base64_user_agent=base64.b64encode('%s:%s' % (PROXY_USERNAME, PROXY_PASSWORD)).decode() request.headers['Proxy-Authorization']='Basic ' + base64_user_agent

这样,在Scrapy项目中添加代理设置就完成了。

​本文分为两部分:

一、HTTP代理的逻辑​

做过python爬虫的都知道,HTTP代理的设置时要在发送请求钱设置好,那HTTP代理的逻辑点在哪里呢?实际上,只需要在Scrapy的项目结构中添加就好,具体代码如下:

# Scrapy 内置的 Downloader Middleware 为 Scrapy 供了基础的功能, # 定义一个类,其中(object)可以不写,效果一样 class SimpleProxyMiddleware(object): # 声明一个数组 proxyList = ['你购买的HTTP代理地址'] # 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

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

1.process_request(request,spider)

2.process_response(request,response,spider)

3.process_exception(request,exception,spider)

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

#DDWNLQADER_MIDDLEWARES = {# *images.middlewares.ImagesDownloaderMiddleware": 543, # *images middlewares,LocalProxyMiddleware*: 100#}

这部分需要修改,也就是取消注释,加上刚刚写的Middleware类的路径

#DDWNLQADER_MIDDLEWARES = { 'scrapydownloadertest.middlewares.SimpleProxyMiddleware': 100,|}

这样,我们就配置好了一个简单的HTTP代理,此时来到icanhazip.com/'] def parse(self, response): pass

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

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

Scrapy框架配置HTTP代理万能调试方法有哪些?