一.在scrapy框架中如何设置代理(两种方法)?
1.在中间键添加
middleware.py
from scrapy import signals
from fake_useragent import UserAgent
# 代理
class Proxy_MD(object):
def process_request(self,request,spider):
request.meta['proxy'] = 'http://58.218.198.170:18569'
# User-Agent
class Random_UA(object):
def process_request(self,request,spider):
ua = UserAgent().random
request.headers.setdefault('User-Agent',ua)
然后在settings中配置这个中间件
SPIDER_MIDDLEWARES = {
'pirctures.middlewares.Proxy_MD': 543,
'pirctures.middlewares.Random_UA': 542,
}
2.在爬虫文件中添加
import scrapy
class TestSpider(scrapy.Spider):
name = 'test'
# allowed_domains = ['www.baidu.com']
# 本地爬虫配置文件
custom_settings = {
'DOWNLOADER_MIDDLEWARES' : {
'Test_C.middlewares.Random_UA': 1,
# 'Test_C.middlewares.Proxy_MD':2
},
}
def start_requests(self):
urls = 'https://www.baidu.com/s?wd=ip'
proxy = 'http://58.218.198.169:13759'
yield scrapy.Request(url=urls,callback=self.parse,meta={'proxy':proxy})
def parse(self, response):
print('*_' * 20)
print(response.css('.c-gap-right::text').extract())
print(response.css('.c-span21.c-span-last.op-ip-detail td::text').extract()[1].strip())
print(response.status)
print('*_'*20)
####二.scrapy中如何实现限速?
自动限速设定:
在setting.py开启相关扩展:
AUTOTHROTTLE_ENABLED = True
设定爬取速度:
DOWNLOAD_DELAY = 1 #单位为秒
####三,接触过哪些反爬机制?如何处理?
反爬机制
robots协议、UA、封IP、验证码、动态数据加载、数据加密、token处理:
处理方法
配置不遵守robots协议、
伪装User-Agent、代理IP更换、打码平台对验证码识别、selenium处理或者使用抓包工具去抓取
动态加载的AJAX请求数据包、按照已知的各种加密方式进行解密、
去前台页面进行token值的查找手动放入请求携带的参数中
主 可以读写
从 只能读
主如果垮掉了 把从变成主 需要一定的时间
系统部署
部署在哪里? 阿里云 移动的机房 电信的机房 机房进去都要身份证
怎么部署的啊? 画图 带个本子 (本子要有东西在上面)