Scrapy中的反反爬、logging设置、Request参数及POST请求
常用的反反爬策略
通常防止爬虫被反主要有以下几策略:
- 动态设置User-Agent(随机切换User-Agent,模拟不同用户的浏览器信息。)
- 禁用cookies(也就是不启用cookies middleware,不向server发送cookies,有些网站通过cookies的使用发现爬虫,可以通过COOKIES_ENABLED控制cookies middleware的开启和关闭)
- 设置延迟下载(防止访问过于频繁,设置为2s甚至更高)
- Google Cache和Baidu Cache:如果可能的话,使用谷歌或百度等搜索引擎服务器页面缓存的页面数据。
- 使用IP池:VPN和IP代理。
scrapy的logging设置
scrapy中Log Levels分为五个级别:
CRITICAL:----严重错误
ERROR:------一般错误
WARNNING---警告信息
INFO------------一般信息
DEBUG--------调试信息
通过setting.py文件,可以进行一下设置,用来配置logging:
LOG_ENABLED:默认为True,启用logging
LOG_ENCODING:默认为utf-8,logging使用编码
LOG_FILE:默认为None,在当前目录下创建logging输出文件的文件名
LOG_LEVEL:默认为DEBUG,log的最低级别
LOG_STDOUT:默认为False,如果为True时,进程所有标准输出(及错误)都将被重定向到log中,例如,执行print("hello"),将会在scrapy的log中显示。
一般情况下,实际设置以下内容就足够:
LOG_FILE=“文件名.log”
LOG_LEVEL="INFO"
Request/Response的重要参数
Request中的主要参数:
url: 就是需要请求,并进行下一步处理的url
callback: 指定该请求返回的Response,由哪个函数处理
method: 请求一般不需要指定,默认为GET方法,可以设置为“GET”,“POST”,"PUT"等,且保证字符串大写。
headers:请求时,包含的头文件。一般不需要。
meta: 比较常用。在不同请求之间传递数据时使用,字典dict类型。
encoding: 使用默认的utf-8就行。
dont_filter: 表明该请求不由调度齐齐过滤。这是当你想使用多次执行相同请求时,忽略重复的过滤。默认为False.
Response中的重要参数:
status: 响应码
_set_body(body): 响应体
_set_url(url):响应url
Scrapy发送POST请求
scrapy中一般使用如下方法发送POST请求:
yield scrapy.FormRequest(url, formdata, callback)
如果希望程序执行一开始就发送POST请求,可以重写Spider类的start_requests(self)方法,并且再调用start_url中的url
使用FormRequest.from_response()方法,模拟用户登录。
通常网站通过实现对某些表单字段(如数据或登录界面中的认证令牌等)的预填充。使用scrapy抓取网页时,如果需要预填充或重写用户名、用户密码等表单字段时,
可以使用FormRequest.from_response()方法实现。
Scrapy中的反反爬、logging设置、Request参数及POST请求的更多相关文章
- scrapy中使用selenium来爬取页面
scrapy中使用selenium来爬取页面 from selenium import webdriver from scrapy.http.response.html import HtmlResp ...
- python框架Scrapy中crawlSpider的使用——爬取内容写进MySQL
一.先在MySQL中创建test数据库,和相应的site数据表 二.创建Scrapy工程 #scrapy startproject 工程名 scrapy startproject demo4 三.进入 ...
- Scrapy中集成selenium
面对众多动态网站比如说淘宝等,一般情况下用selenium最好 那么如何集成selenium到scrapy中呢? 因为每一次request的请求都要经过中间件,所以写在中间件中最为合适 from se ...
- 爬取豆瓣电影储存到数据库MONGDB中以及反反爬虫
1.代码如下: doubanmoive.py # -*- coding: utf-8 -*- import scrapy from douban.items import DoubanItem cla ...
- scrapy反反爬虫
反反爬虫相关机制 Some websites implement certain measures to prevent bots from crawling them, with varying d ...
- scrapy反反爬虫策略和settings配置解析
反反爬虫相关机制 Some websites implement certain measures to prevent bots from crawling them, with varying d ...
- python高级—— 从趟过的坑中聊聊爬虫、反爬以及、反反爬,附送一套高级爬虫试题
前言: 时隔数月,我终于又更新博客了,然而,在这期间的粉丝数也就跟着我停更博客而涨停了,唉 是的,我改了博客名,不知道为什么要改,就感觉现在这个名字看起来要洋气一点. 那么最近到底咋不更新博客了呢?说 ...
- python爬虫---详解爬虫分类,HTTP和HTTPS的区别,证书加密,反爬机制和反反爬策略,requests模块的使用,常见的问题
python爬虫---详解爬虫分类,HTTP和HTTPS的区别,证书加密,反爬机制和反反爬策略,requests模块的使用,常见的问题 一丶爬虫概述 通过编写程序'模拟浏览器'上网,然后通 ...
- python反反爬,爬取猫眼评分
python反反爬,爬取猫眼评分.解决网站爬取时,内容类似:$#x12E0;样式,且每次字体文件变化.下载FontCreator . 用FontCreator打开base.woff.查看对应字体关系 ...
随机推荐
- python:__name__的使用
1.python中__name__是什么意思? 很多python的初学者可能都会遇到一个问题:__name__是什么意思? 在刚开始学习python的时候,我们总会看到这样一句代码: if __nam ...
- [springboot 开发单体web shop] 4. Swagger生成Javadoc
Swagger生成JavaDoc 在日常的工作中,特别是现在前后端分离模式之下,接口的提供造成了我们前后端开发人员的沟通 成本大量提升,因为沟通不到位,不及时而造成的[撕币]事件都成了日常工作.特别是 ...
- python的位置参数、关键字参数、收集参数,关键字收集参数混合调用问题
参数混合调用顺序用法: 函数中参数顺序为:普通参数,收集参数,关键字参数,关键字收集参数,其顺序不能颠倒,颠倒会报错. 普通参数.关键字参数可以有n个,对量没有具体要求,收集参数和关键字收集参数要么没 ...
- AutoCad 二次开发 .net 之相同块的自动编号
主要步骤: 一.获取一个块的id: 其中oId就是了. 二.通过次oId获取块引用blkRef: 三.通过它获取所有相同的块引用的id集合: 四.通过步骤三的集合得到所有的块引用得到集合listBr: ...
- 学习笔记15_ASP母版页
*网页母版页设计通用样式#header:{height:100px;width:1000px}#leftDiv:{float:left;width:200px}#mainDiv:{margin-lef ...
- 用js给元素增加链接
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> ...
- 使用Typescript重构axios(二十)——请求取消功能:实现第一种使用方式
0. 系列文章 1.使用Typescript重构axios(一)--写在最前面 2.使用Typescript重构axios(二)--项目起手,跑通流程 3.使用Typescript重构axios(三) ...
- 原生JS实现队结构及利用队列模拟‘击鼓传花’游戏
1. 前言 队列,是一种遵从先进先出(FIFO,First-In-First-Out)原则的有序集合.队列在尾部添加新元素,并从顶部移除元素,最新添加的元素必须排在队列的末尾. 2.功能说明 enqu ...
- 用Java实现简单的区块链
用 Java 实现简单的区块链 1. 概述 本文中,我们将学习区块链技术的基本概念.也将根据概念使用 Java 来实现一个基本的应用程序. 进一步,我们将讨论一些先进的概念以及该技术的实际应用. 2. ...
- 从壹开始 [ Ids4实战 ] 之五 ║ 多项目集成统一认证中心的思考
前言 哈喽大家好,好久都没有写文章了,这次又重新开始写技术文章了,半年前我还是一直保持每周都写文章的,后来是为了响应群友的号召,开始踏上了录制视频(https://www.bilibili.com/v ...