你的爬虫被后台检测到了?这么做才能隐藏爬虫

你的爬虫被后台检测到了?这么做才能隐藏爬虫

 

前言

我们在写一个简单的爬虫时,爬虫代码很容易就会被后台检测到进而封掉。那么怎么样才能避免这些事发生呢?这一这篇文章我们一起来学习,如何健壮我们的爬虫代码。

学习Python中有不明白推荐加入交流裙
                号:735934841
                群里有志同道合的小伙伴,互帮互助,
                群里有免费的视频学习教程和PDF!

目录

  • Spider
  • Middleware
  • 瞎比比

Spider

当 start_urls 未被指定,会调用 start_requests() ,该方法可以用于在爬取数据之前,先进行模拟登陆。

import scrapy
from scrapy.http import Request
from scrapy.selector import Selector
from urllib.parse import urljoin
from doubanTop250.items import Doubantop250Item
class DoubanTop250Spider(scrapy.spiders.Spider):
 # 此处为上面留下的小坑
 name = "douban"
 # 设置允许爬取的域名
 allowed_domains = ["douban.com"]
 # header信息
 my_header = {
 'Host': 'www.douban.com',
 'Referer': 'https://movie.douban.com',
 }
 # 表单需要提交的数据
 form_data = {'user': 'zone', 'pass': 'zone7'}
 # 自定义信息,向下层响应(response)传递下去
 customer_data = {'key1': 'value1', 'key2': 'value2'}
 def start_requests(self):
 return [scrapy.FormRequest("https://movie.douban.com/login",
 formdata=self.form_data, # 表单提交的数据
 headers=self.my_header,
 method='POST', # GET or POST
 meta=self.customer_data, # 自定义,向response传递数据
 errback=self.error_handle,
 callback=self.logged_in,
 # 如果需要多次提交表单,且url一样,那么就必须加此参数 dont_filter,防止被当成重复网页过滤掉了
 dont_filter=True
 )]
 def logged_in(self, response):
 # 解析模拟登陆数据
 pass
 def parse(self, response):
 # 默认回调函数
 pass
 def close(self,reson):
 # 关闭时调用
 pass

你的爬虫被后台检测到了?这么做才能隐藏爬虫

 

scrapy.FormRequest 部分参数解析

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值