scrapy框架之代理的使用
2024-08-27 06:04:35
首先我们检测ip是否可用:
1.对于免费代理的检测
#免费代理或不用密码的代理
url = 'http://httpbin.org/get' proxy = '127.0.0.0:8000' proxies = {
'http': 'http://' + proxy,
'https': 'https://' + proxy,
} response = requests.get(url, proxies=proxies, verify=False)
print(response.text)
注:这里的proxy改成你要检测的ip即可
返回结果中:"origin": "127.0.0.0" #即为你的代理,可用
2.对于付费代理的检测:
#测试付费代理和加密代理
url = 'http://httpbin.org/get' proxy_host = '127.0.0.0'
proxy_port = '' proxy_user = 'root'
proxy_pass = 'root' proxy_meta = 'http://%(user)s:%(pass)s@%(host)s:%(port)s' % {
'host': proxy_host,
'port': proxy_port,
'user': proxy_user,
'pass': proxy_pass,
} proxies = {
'http': proxy_meta,
'https': proxy_meta,
} response = requests.get(url, proxies=proxies)
print(response.text)
将上面的ip和账户之类的换成你自己的即可(参照阿布云给的示例进行付费检测)
下面将代理运用到scrapy框架中:
在scrapy框架中有两种方法进行
1.直接编写在scrapy爬虫代码中
2.利用中间件middlewares.py进行
现在我将详细讲述下这两种分别如何进行
首先我们需要有一个可用的ip
对于方法一:利用meta函数进行携带即可访问
scrapy爬虫代码中:
import scrapy class ProxySpider(scrapy.Spider):
name = 'proxy'
allowed_domains = ["httpbin.org"] def start_requests(self):
url = 'http://httpbin.org/get'
proxy = '127.0.0.0:8000' proxies = ""
if url.startswith("http://"):
proxies = "http://"+str(proxy)
elif url.startswith("https://"):
proxies = "https://"+str(proxy)
#注意这里面的meta={'proxy':proxies},一定要是proxy进行携带,其它的不行,后面的proxies一定 要是字符串,其它任何形式都不行
yield scrapy.Request(url, callback=self.parse,meta={'proxy':proxies}) def parse(self,response):
print(response.text)
(好多坑啊,写代码的时候踩着都想流泪)
对于方法二:利用middlewares中间件进行
1.在middlewares.py问件中添加如下代码即可:
#配置代理
class ProxyMiddleware(object):
def process_request(self,request,spider):
if request.url.startswith("http://"):
request.meta['proxy']="http://"+'127.0.0.0:8000' # http代理
elif request.url.startswith("https://"):
request.meta['proxy']="https://"+'127.0.0.0:8000' # https代理
2.在settings.py文件中添加配置
# Enable or disable downloader middlewares
# See https://doc.scrapy.org/en/latest/topics/downloader-middleware.html
DOWNLOADER_MIDDLEWARES = {
#这个biquge为你项目的名字,我是爬笔趣阁的,2333~
'biquge.middlewares.ProxyMiddleware': 100,
}
3.scrapy爬虫代码中正常编写代码,不用做任何修改/添加
import scrapy class ProxySpider(scrapy.Spider):
name = 'proxy'
allowed_domains = ["httpbin.org"]
# start_urls = ['http://httpbin.org/get'] def start_requests(self):
url = 'http://httpbin.org/get'
yield scrapy.Request(url, callback=self.parse) def parse(self,response):
print(response.text)
ip代理池的应用:https://blog.csdn.net/u013421629/article/details/77884245
最新文章
- DIV未知宽度高度垂直水平居中
- SPOJ-SUBST1 New Distinct Substrings(后缀数组)
- webvnc利器-noVNC集成实战
- win10查看连接过的wifi密码
- [转载]JavaScript 中小数和大整数的精度丢失
- CODESOFT对话框中的显示字体怎么修改
- Unity Scripting Tutorials 要点记录
- WPF之RichTextBox丢失光标仍然选中文本
- DOS批处理命令-pause
- 【BZOJ 1798】 [Ahoi2009]Seq 维护序列seq
- ios面试题集锦(一)
- C# MVC分页,razor,view传送model
- 我的MYSQL学习心得 备份和恢复(详细)
- OCP-1Z0-051-题目解析-第8题
- JBPM——MyEclipse开发环境的搭建
- sql 查询表共多少列
- CSS3秘笈:第九章
- Spring框架——事务处理(编程式和声明式)
- <;CEPH中国-深圳站-技术交流会演讲PPT>; YY云平台Ceph Block应用实践 &; 我写的书 《CEPH实战》
- WordPress版微信小程序开发系列(二):安装使用问答