首先我们检测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

最新文章

  1. DIV未知宽度高度垂直水平居中
  2. SPOJ-SUBST1 New Distinct Substrings(后缀数组)
  3. webvnc利器-noVNC集成实战
  4. win10查看连接过的wifi密码
  5. [转载]JavaScript 中小数和大整数的精度丢失
  6. CODESOFT对话框中的显示字体怎么修改
  7. Unity Scripting Tutorials 要点记录
  8. WPF之RichTextBox丢失光标仍然选中文本
  9. DOS批处理命令-pause
  10. 【BZOJ 1798】 [Ahoi2009]Seq 维护序列seq
  11. ios面试题集锦(一)
  12. C# MVC分页,razor,view传送model
  13. 我的MYSQL学习心得 备份和恢复(详细)
  14. OCP-1Z0-051-题目解析-第8题
  15. JBPM——MyEclipse开发环境的搭建
  16. sql 查询表共多少列
  17. CSS3秘笈:第九章
  18. Spring框架——事务处理(编程式和声明式)
  19. <CEPH中国-深圳站-技术交流会演讲PPT> YY云平台Ceph Block应用实践 & 我写的书 《CEPH实战》
  20. WordPress版微信小程序开发系列(二):安装使用问答

热门文章

  1. Socket网络编程——C++实现
  2. 软件工程卷1 抽象与建模 (Dines Bjorner 著)
  3. webpack的一些坑
  4. redis 下key的过期时间详解 :expire
  5. 用luks方式对磁盘进行加密以及加密磁盘的自动挂载
  6. 每日一问:简述 View 的绘制流程
  7. SQL数据同步到ELK(一)- 日常开篇
  8. JUC锁框架_AbstractQueuedSynchronizer详细分析
  9. 秘制牛肉Gamma阶段项目展示
  10. 快速排序详解(C语言/python)