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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值