数据采集-Scrapy框架使用代理IP要点

小白学大数据 2024-03-14 11:19:24

scrapy框架通过模块化的设计实现了数据采集的通用功能接口,并提供自定义拓展,它将程序员从繁冗的流程式重复劳动中解放出来,给编程人员提供了灵活简便的基础构建,对于普通的网页数据采集,编程人员只需要将主要精力投入在网站数据分析和网站反爬策略分析上,结合代理IP的使用,可以实现项目的高效快速启动。
主要特性包括:
1)参数化设置请求并发数,自动异步执行
2)支持xpath,简洁高效
3)支持自定义中间件middleware
4)支持采集源列表
5)支持独立调试,方便 shell 方式
6)支持数据管道接口定义,用户可以选择文本、数据库等多种方式
在Scrapy框架中使用代理的方式有如下几种:

1.scrapy中间件
在项目中新建middlewares.py文件(./项目名/middlewares.py),内容如下:
#! -*- encoding:utf-8 -*-  
import base64
import sys
import random
PY3 = sys.version_info[0] >= 3
def base64ify(bytes_or_str):
    if PY3 and isinstance(bytes_or_str, str):
        input_bytes = bytes_or_str.encode('utf8')
    else:
        input_bytes = bytes_or_str             
    output_bytes = base64.urlsafe_b64encode(input_bytes)
    if PY3:
        return output_bytes.decode('ascii') 
    else: 
        return output_bytes
class ProxyMiddleware(object):
    def process_request(self, request, spider):
        # 代理服务器(产品官网 www.16yun.cn) 
        proxyHost = "t.16yun.cn"
        proxyPort = "31111"
        # 代理验证信息
        proxyUser = "username"
        proxyPass = "password" 
        request.meta['proxy'] = "http://{0}:{1}".format(proxyHost,proxyPort)
        # 添加验证头
        encoded_user_pass = base64ify(proxyUser + ":" + proxyPass)
        request.headers['Proxy-Authorization'] = 'Basic ' + encoded_user_pass
        # 设置IP切换头(根据需求)
        tunnel = random.randint(1,10000)
        request.headers['Proxy-Tunnel'] = str(tunnel)
修改项目配置文件 (./项目名/settings.py)
    DOWNLOADER_MIDDLEWARES = {
        '项目名.middlewares.ProxyMiddleware': 100,
    }


2.scrapy环境变量

通过设置环境变量,来使用爬虫代理(Windows)
   C:\>set http_proxy=http://username:password@ip:port

 

...全文
107 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

12,042

社区成员

发帖
与我相关
我的任务
社区描述
创建由Python学习者和社区专家组成的国内最大的第三方Python中文社区,帮助社区成员更好地入门学习、职业成长和应用实践
python学习 企业社区
社区管理员
  • Python全栈技术社区
  • Lumos_zbj
  • 北侠大卫
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

创建由Python学习者和社区专家组成的国内最大的第三方Python中文社区,帮助社区成员更好地入门学习、职业成长和应用实践

  • 这里有最新最全的 Python 学习内容及资源,每月多达4次技术公开课
  • 这里有众多 Python 学习者,陪伴你一起交流成长
  • 这里有专业 Python 社区专家、讲师,帮助你跨越学习瓶颈,解决实操难题
  • 这里有丰富的社区活动,可以开阔眼界,结识更多同伴

【最新活动】:

  1. 周四技术公开课讲师招募中,点击查看详情
  2. “Python 社区专家团” 招募中,点击查看详情

 

试试用AI创作助手写篇文章吧