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. 快速编译system.img和boot.img的方法【转】

    本文转载自:http://www.cnblogs.com/wanqieddy/archive/2012/10/22/2734024.html 快速编译system.img,可以使用这个命令: #mak ...

  2. unique(V.begin(),V.end())

    unique(V.begin(),V.end()) 重排容器算法:sort,unique unique  返回指向不重复区域之后一个位置的迭代器 ///删除vstr中重复的元素 void delete ...

  3. (函数即服务)Faas的现状与未来

    刚看到jolestar一位从法律转行程序员的前辈写了一篇Faas现状与未来的文章,里面很多观点都很有启发,或许正如他说的那样,由于Faas能较好的解决资源利用率和开发效率问题,2018年Faas将变得 ...

  4. bzoj2216

    决策单调性+整体二分 这里就是j<k且kj劣于j,j不会再选,所以我们整体二分 pos是因为从L->R中这个是最优点,所以对于mid+1->r选pos之前肯定不优,l->mid ...

  5. 快速访问GitHub

    Github网站可以访问,但是由于网络代理商的原因,造成访问速度很慢. 本文采取方法:手动更改hosts Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与 ...

  6. 【转载】同步与异步--阻塞与非阻塞型I/O

    同步阻塞IO 在这个模型中,应用程序(application)为了执行这个read操作,会调用相应的一个system call,将系统控制权交给kernel,然后就进行等待(这其实就是被阻塞了).ke ...

  7. html5中不再支持的元素

    html5中不再支持的元素:1.acronym(建议abbr) : 定义首字母缩写2.applet(建议object): 定义 applet3.basefont(使用css控制)4.big(使用css ...

  8. poj1200Crazy Search(hash)

    题目大意   将一个字符串分成长度为N的字串.且不同的字符不会超过NC个.问总共有多少个不同的子串. /* 字符串hash O(n)枚举起点 然后O(1)查询子串hash值 然后O(n)找不一样的个数 ...

  9. easyui -tree的详细讲解

    代码的具体实现 @{    ViewBag.Title = "人员查找";    ViewBag.LeftWidth = "200px";    ViewBag ...

  10. Codeforces 803G Periodic RMQ Problem ST表+动态开节点线段树

    思路: (我也不知道这是不是正解) ST表预处理出来原数列的两点之间的min 再搞一个动态开节点线段树 节点记录ans 和标记 lazy=-1 当前节点的ans可用  lazy=0 没被覆盖过 els ...