scrapy——4

  1. 常用的反爬虫策略有哪些
  2. 怎样使用logging设置
  3. Resquest/Response重要参数有哪些
  4. Scrapy怎么发送POST请求

  • 动态的设置User-Agent(随即切换User-Agent,模拟不同的用户的浏览器信息)
  • 禁用Cookies(也就是不启用cookies middleware,不向Server发送cookies的使用发现爬虫行为)可以通过COOKIES_ENABLED控制CookiesMiddleware开启或关闭
  • 设置延迟下载(防止访问过于频繁,设置为2秒或者更高)
  • Google Cache 和 BaiduCache:如果可能的话,使用谷歌/百度等搜索引擎服务器页面缓存获取页面数据。
  • 使用Ip地址池:;VPN和代理IP,现在大部分网站都是根据IP来反爬的

Log levels——Scrapy提供5层loggin等级:

  • CRITICAL - 严重错误(critical)
  • ERROR - 一般错误(regular errors)
  • WARNING - 警告信息(warning messages)
  • INFO - 一般信息(informational messages)
  • DEBUG - 调试信息(debugging messages)

logging设置:

通过在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中显示。
  • 在尝试运行代码时,这样输入  scrapy crawl xxxx --nolog  输出时不会弹出logging信息

  • url: 就是需要请求,并进行下一步处理的url

  • callback: 指定该请求返回的Response,由那个函数来处理。
  • method: 请求一般不需要指定,默认GET方法,可设置为"GET", "POST", "PUT"等,且保证字符串大写
  • headers: 请求时,包含的头文件。一般不需要
  • meta: 比较常用,在不同的请求之间传递数据使用的。字典dict型
  • encoding: 使用默认的 'utf-8' 就行。
  • dont_filter: 表明该请求不由调度器过滤。这是当你想使用多次执行相同的请求,忽略重复的过滤器。默认为False。

  • status: 响应码
  • _set_body(body): 响应体
  • _set_url(url):响应url

实战—    豆瓣登陆

  • 先创建项目

  • douban_login\settings.py    设置请求头以及你的账号和密码(setting中)

  • douban_login\spiders\douban_spider.py    写代码

    # -*- coding: utf-8 -*-
    import scrapy
    from ..settings import username, password class DoubanSpiderSpider(scrapy.Spider):
    name = 'douban_spider'
    allowed_domains = ['douban.com']
    start_urls = ['https://accounts.douban.com/login'] def start_requests(self):
    data = { # POST请求多要携带的数据,由formdata传递
    'source': 'index_nav',
    'form_email': username,
    'form_password': password,
    }
    yield scrapy.FormRequest(url=self.start_urls[0], formdata=data, callback=self.login_after) def login_after(self, response):
    print(response.url)
    user = response.xpath('//a[@class="bn-more"]/span/text()').extract_first() # 获取用户姓名,方便确认登陆是或否成功 print('当前用户:%s'%user) '''
    douban_login$ scrapy crawl douban_spider --nolog
    https://www.douban.com/
    当前用户:pywjh的帐号
    '''

实战二——gethub登陆

方法雷同,在setting中设置用户名和密码,需要注意的是,gethub有一个令牌的反爬措施,需要get请求一个登陆页面获取令牌,再POST请求登陆

# -*- coding: utf-8 -*-
from ..settings import username, password import scrapy class GithubSpider(scrapy.Spider):
name = 'github'
allowed_domains = ['github.com']
start_urls = ['https://github.com/login'] def parse(self, response):
token = response.xpath("//input[@name='authenticity_token']/@value").extract_first()
data = {
'utf8': '✓',
'authenticity_token': token,
'login': username,
'password': password,
'commit': 'Sign in',
}
yield scrapy.FormRequest(
url='https://github.com/session',
formdata=data,
callback=self.parse_item) def parse_item(self,response):
name = response.xpath('//*[@id="user-links"]/li[3]/details/summary/img/@alt').extract_first().replace('@', '')
print('当前用户:%s'%name)

scrapy——4 —反爬措施—logging—重要参数—POST请求发送实战的更多相关文章

  1. 常见的反爬措施:UA反爬和Cookie反爬

    摘要:为了屏蔽这些垃圾流量,或者为了降低自己服务器压力,避免被爬虫程序影响到正常人类的使用,开发者会研究各种各样的手段,去反爬虫. 本文分享自华为云社区<Python爬虫反爬,你应该从这篇博客开 ...

  2. Scrapy中的反反爬、logging设置、Request参数及POST请求

    常用的反反爬策略 通常防止爬虫被反主要有以下几策略: 动态设置User-Agent(随机切换User-Agent,模拟不同用户的浏览器信息.) 禁用cookies(也就是不启用cookies midd ...

  3. 【Python3爬虫】反反爬之破解同程旅游加密参数 antitoken

    一.前言简介 在现在各个网站使用的反爬措施中,使用 JavaScript 加密算是很常用的了,通常会使用 JavaScript 加密某个参数,例如 token 或者 sign.在这次的例子中,就采取了 ...

  4. Python爬虫入门教程 64-100 反爬教科书级别的网站-汽车之家,字体反爬之二

    说说这个网站 汽车之家,反爬神一般的存在,字体反爬的鼻祖网站,这个网站的开发团队,一定擅长前端吧,2019年4月19日开始写这篇博客,不保证这个代码可以存活到月底,希望后来爬虫coder,继续和汽车之 ...

  5. Python爬虫入门教程 61-100 写个爬虫碰到反爬了,动手破坏它!

    python3爬虫遇到了反爬 当你兴冲冲的打开一个网页,发现里面的资源好棒,能批量下载就好了,然后感谢写个爬虫down一下,结果,一顿操作之后,发现网站竟然有反爬措施,尴尬了. 接下来的几篇文章,我们 ...

  6. k 近邻算法解决字体反爬手段|效果非常好

    字体反爬,是一种利用 CSS 特性和浏览器渲染规则实现的反爬虫手段.其高明之处在于,就算借助(Selenium 套件.Puppeteer 和 Splash)等渲染工具也无法拿到真实的文字内容. 这种反 ...

  7. python爬虫之字体反爬

    一.什么是字体反爬? 字体反爬就是将关键性数据对应于其他Unicode编码,浏览器使用该页面自带的字体文件加载关键性数据,正常显示,而当我们将数据进行复制粘贴.爬取操作时,使用的还是标准的Unicod ...

  8. 记一次css字体反爬

    前段时间在看css反爬的时候,发现很多网站都做了css反爬,比如,设置字体反爬的(58同城租房版块,实习僧招聘https://www.shixiseng.com/等)设置雪碧图反爬的(自如租房http ...

  9. CSS常见反爬技术

    目录 利用字体 反爬原理 应对措施 难点: 利用背景 反爬原理 应对措施 利用伪类 反爬原理 应对措施 利用元素定位 反爬原理 应对措施 利用字符切割 反爬原理 应对措施 利用字体 反爬原理 反爬原理 ...

随机推荐

  1. 神经网络的结构汇总——tflearn

    一些先进的网络结构: # https://github.com/tflearn/tflearn/blob/master/examples/images/highway_dnn.py # -*- cod ...

  2. .NET 的WebSocket开发包详细比较(2)

    AlchemyWebSocket http://alchemywebsockets.net/ 当我想到websocket库时,这个让人不可思议.没错这是真的.它可以排在Fleck后面,它非常容易使用, ...

  3. 9.10NOIP模拟题

      9.10 NOIP模拟赛 题目名称 区间 种类 风见幽香 题目类型 传统 传统 传统 可执行文件名 section kinds yuuka 输入文件名 section.in kinds.in yu ...

  4. [Swift通天遁地]八、媒体与动画-(13)CoreText框架实现图文混排

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  5. Sublime Text3 配置 Lua5.3.5开发环境

    所需软件 Sublime Text3 Lua5.3.5 配置过程 解压Lua5.3.5包 官方下载的包内是需要makefile安装的(博主Win10下暂为实现),此处提供自动配置完毕的包:Lua5.3 ...

  6. curl怎么模拟登录进行采集

    前几天公司需要模拟登录,从网上找了一下代码,结合谷歌浏览器,进行模拟账号密码进行登录 用谷歌浏览器进行抓包操作,获得登录用参数, 下面上干货: <?php /** * 主要获取登录成功的cook ...

  7. longpo的回文

    啊...比赛的时候输入打错了,结束之后还照着题解把DP部分重构了一遍然而还是WA...样例都没过,然后直接输了-1 明显的DP...而且数据范围这么小,显然怎么搞都可以... 而且这样的回文的DP是很 ...

  8. 去除IOS苹果手机自带按钮样式的问题~

    input[type="button"], input[type="submit"], input[type="reset"] { -web ...

  9. LinearLayout中间布局填充出现的问题

    线性布局如何中间填充,会挤掉他下面的布局,所以中间填充使用layout_weight属性.

  10. html5——多媒体(一)

    <audio> 1.autoplay 自动播放 2.controls 是否显不默认播放控件 3.loop 循环播放 4.preload 预加载 同时设置autoplay时些属性失效 5.由 ...