您好,登錄后才能下訂單哦!
Scrapy框架使用代理IP要點是什么,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
scrapy框架通過模塊化的設計實現(xiàn)了數(shù)據(jù)采集的通用功能接口,并提供自定義拓展,它將程序員從繁冗的流程式重復勞動中解放出來,給編程人員提供了靈活簡便的基礎構(gòu)建,對于普通的網(wǎng)頁數(shù)據(jù)采集,編程人員只需要將主要精力投入在網(wǎng)站數(shù)據(jù)分析和網(wǎng)站反爬策略分析上,結(jié)合代理IP的使用,可以實現(xiàn)項目的高效快速啟動。
主要特性包括:
1)參數(shù)化設置請求并發(fā)數(shù),自動異步執(zhí)行
2)支持xpath,簡潔高效
3)支持自定義中間件middleware
4)支持采集源列表
5)支持獨立調(diào)試,方便 shell 方式
6)支持數(shù)據(jù)管道接口定義,用戶可以選擇文本、數(shù)據(jù)庫等多種方式
在Scrapy框架中使用代理的方式有如下幾種:
1.scrapy中間件
在項目中新建middlewares.py文件(./項目名/middlewares.py),內(nèi)容如下:
#! -*- 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):
# 代理服務器(產(chǎn)品官網(wǎng) 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切換頭(根據(jù)需求)
tunnel = random.randint(1,10000)
request.headers['Proxy-Tunnel'] = str(tunnel)
修改項目配置文件 (./項目名/settings.py)
DOWNLOADER_MIDDLEWARES = {
'項目名.middlewares.ProxyMiddleware': 100,
}
2.scrapy環(huán)境變量
通過設置環(huán)境變量,來使用爬蟲代理(Windows)
C:\>set http_proxy=http://username:password@ip:port
關(guān)于Scrapy框架使用代理IP要點是什么問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。