scrapy避免被禁止

在scrapy 项目中,主要可以通过以下方法来避免被禁止:

1)禁止cookies

2)设置下载延时

3)使用ip池

4)使用用户代理;

5)其他方法,比如进行分布式爬取等(这个就不介绍了)

1.禁止cookies

       如果我们要禁止使用cookies,可以在对应scrapy爬虫项目中的settings.py文件进行相应的设置。打开settings.py文件找到一下         两行代码:

       

       只需要把COOKIES_ENABLED=False的注释去掉即可。这样就可以禁用本地的cookie,

2.设置下载延迟时

       有的网站会通过我们队网页的访问频率进行分析,如果爬取频率过快,则判断为爬虫自动爬取行为。

       我们只需要控制一下爬行时间间隔即可。

       打开settings.py文件,会发现如下几行代码:

       

       只要解除这一行的代码注释即可,3代表3秒,如果想将爬虫下载网页的间隔修改,在这里修改就可以。

3.使用ip池

       首先在项目核心目录创建下载中间件文件,文件可以自定义,也可以原本的中间件,只需要配置好即可。

       在这里我使用创建项目自动生成的中间件。middlewares.py

       1)代理ip,大家可以在网上自行搜索,免费ip。 直接在settings.py文件里面,添加如下信息:

             

             此时,IPPOOL就是对应的代理服务器的IP池,外层通过列表形式存储,里面通过字典形式存储。

        2)设置好ip池,现在编写中间件。

              在scrapy中,与代理服务器相关的下载中间件是HttpProxyMiddleware,在scrapy官方文档中,HttpProxyMiddleware对                应类为:

              from scrapy.contrib.downloadermiddleware.httpproxy import HttpProxyMiddleware

              所以我们在中间件middleware.py中编写程序实现代码

              

              编写好下载中间件,     

        3)需要在settings.py文件中进行相应配置,在settings.py文件中,与下载中间件相关的配置默认如下:

              

              上述代码中,第一行根据官方文档配置,必填,

               第二行,格式为:下载中间件所在的目录.下载中间件文件名.下载中间件内容要使用的类

              "myproject.middlewares.IPPOOLS",myproject为中间件所在目录,middleware为下载中间件文件名,IPPOOL为下                载 中间件内部要使用的类。

              现在使用scapy crawl 项目名称  --nolog 显示一下内容,说明使用代理成功:

              

              

4.使用用户代理池

       1)方法跟上几乎一样,先在setting.py文件设置用户代理池

             

             创建好之后,现在编辑中间件文件中的代码来实现对应功能。

      2) 在scrapy中,ua用户代理中使用的下载中间件类型为UserAgentMiddleware,对应的类为:

             class  scrapy.contrib.downloadermiddleware.usergent.UserAgentMiddleware

             可以在下载中间件文件中需要从

             from  scrapy.contrib.downloadermiddleware.usergent  import UserAgentMiddleware

             在中间件文件中写如下代码:

             

      3)随后,需要在settings.py文件中该python文件设置为scrapy中的下载中间件,打开settings.py文件,找到有关下载中间件             设置的地方,如下代码:

            

           设置好之后,我们可以运行scrapy项目下的爬虫文件,运行结果如下:

           

          可以看到,此时会通过下载中间件自动随机切换用户代理进行网页爬取。

       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值