Python爬虫5.3 — scrapy框架spider[Request和Response]模块的使用

  • 综述
  • Request对象
    • scrapy.Request()函数讲解:
  • Response对象
  • 发送POST请求
  • 模拟登陆
    • 模拟登陆人人网
  • 其他博文链接

综述

本系列文档用于对Python爬虫技术的学习进行简单的教程讲解,巩固自己技术知识的同时,万一一不小心又正好对你有用那就更好了。
Python 版本是3.7.4

我们在前面学习reuqests库的时候是如何进行翻页请求的?首先找到下一页地址,然后再使用requests.get(next_url)进行请求获取。那么我们在Scrapy框架中如何对下页进行构造请求的呢?本篇讲解如何构造请求模块。

Request对象

在第一篇入门文章中我们已经在爬取糗百实例中实现了下一页请求获得的功能在爬虫中增加下面代码即可:

    # 获取下一页地址next_url = response.xpath('//ul[@class="pagination"]/li[last()]/a/@href').get()if not next_url:# 没有下一页地址结束爬虫returnelse:# 将下一页请求返回给调度器yield scrapy.Request(self.base_url + next_url, callback=self.parse)

scrapy.Request()函数讲解:

scrapy.Request(url, callback=None, method='GET', headers=None, body=None, cookies=None, meta=None, encoding='utf-8', priority=0, dont_filter=False, errback=None, flags=None, cb_kwargs=None)

Request对象再我们写爬虫,爬取一页的数据徐娅重新发送一个请求的时候调用,这个类需要传递一些参数,其中比较常用的参数有:

  • url : 这个request对象发送请求的url。
  • callback : 在下载器下载完成相应的数据后执行的回调函数。
  • method : 请求的方法,默认为GET方法,可以设置为其他方法。
  • headers : 请求头,对于一些固定的设置放在setting.py中指定就可以了;对于那些非固定的,可以在发送请求的时候指定。
  • meta : 比较常用,用于不同的请求之间传递数据用的。
  • encoding : 编码,默认为utf-8,使用默认的就可以了。
  • dont_filter : 表示不由调度器过滤,让scrapy的去重不会过滤当前url,可以执行多次重复的请求。
  • errback : 请求失败在发生错误的时候执行的回调函数。
  • 其他的参数就不再介绍。

Response对象

Response对象一般是有Scrapy给你自动构建的,因此开发者不需要关心如何创建Response对象,而是如何使用它。Response对象有很多属性,可以用来提取数据的,主要有以下属性:

  1. meta : 从其他请求传过来的meta属性,可以用来保持多个请求之间的数据链接。
  2. encoding : 返回当前字符串编码和解码格式。
  3. text : 将返回来的数据作为urlcode字符串返回。
  4. body : 将返回来的数据作为bytes字符串返回。
  5. xpath : xpath解析器。
  6. css : css选择器。

发送POST请求

有时候我们想要在请求数据的时候发送post请求,那么这时候需要使用Request的子类FormRequest来实现。如果想要在爬虫一开始的时候就发送POST请求,那么需要在爬虫类中重写start_request(self)方法,并且不再调用start_urls里的url。

模拟登陆

模拟登陆人人网

import scrapyclass RenrenSpider(scrapy.Spider):name = 'renren'allowed_domains = ['renren.com']start_urls = ['http://renren.com/']def start_requests(self):url = 'http://www.renren.com/PLogin.do'data = {'email': '1883****357','password': '********'}request = scrapy.FormRequest(url=url, formdata=data, callback=self.parse_page)yield request@staticmethoddef parse_page(self, response):with open('renren.html', 'w', encoding='utf-8') as fp:fp.write(response.text)
  1. 如果想要发送post请求,那么推荐使用scrapy.FormRequest方法,可以方便的指定表单数据。
  2. 如果想在爬虫一开始的时候就发送post请求,那么应该重写start_requests方法。在这个方法中,发送post请求。

其他博文链接

  • Python爬虫1.1 — urllib基础用法教程
  • Python爬虫1.2 — urllib高级用法教程
  • Python爬虫1.3 — requests基础用法教程
  • Python爬虫1.4 — requests高级用法教程
  • Python爬虫2.1 — BeautifulSoup用法教程
  • Python爬虫2.2 — xpath用法教程
  • Python爬虫3.1 — json用法教程
  • Python爬虫3.2 — csv用法教程
  • Python爬虫3.3 — txt用法教程
  • Python爬虫4.1 — threading(多线程)用法教程
  • Python爬虫4.2 — ajax(动态网页数据抓取)用法教程
  • Python爬虫4.3 — selenium基础用法教程
  • Python爬虫4.4 — selenium高级用法教程
  • Python爬虫4.5 — tesseract(图片验证码识别)用法教程
  • Python爬虫5.1 — scrapy框架简单入门
  • Python爬虫5.2 — scrapy框架pipeline模块的使用

Python爬虫5.3 — scrapy框架spider[Request和Response]模块的使用相关推荐

  1. python爬虫入门(六) Scrapy框架之原理介绍

    Scrapy框架 Scrapy简介 Scrapy是用纯Python实现一个为了爬取网站数据.提取结构性数据而编写的应用框架,用途非常广泛. 框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬 ...

  2. pythonscrapy爬虫_零基础写python爬虫之使用Scrapy框架编写爬虫

    网络爬虫,是在网上进行数据抓取的程序,使用它能够抓取特定网页的HTML数据.虽然我们利用一些库开发一个爬虫程序,但是使用框架可以大大提高效率,缩短开发时间.Scrapy是一个使用Python编写的,轻 ...

  3. Python爬虫教程之Scrapy 框架

    一.Scrapy 框架 Scrapy 是⽤纯 Python 实现⼀个为了爬取⽹站数据.提取结构性数据⽽编写的应⽤框架,⽤途⾮常⼴泛. 框架的⼒量,⽤户只需要定制开发⼏个模块就可以轻松的实现⼀个爬⾍,⽤ ...

  4. Python爬虫知识点四--scrapy框架

    一.scrapy结构数据 解释: 1.名词解析: o 引擎(Scrapy Engine) o 调度器(Scheduler) o 下载器(Downloader) o 蜘蛛(Spiders) o ...

  5. python爬虫之使用Scrapy框架编写爬虫

    转自:http://www.jb51.net/article/57183.htm 前面的文章我们介绍了Python爬虫框架Scrapy的安装与配置等基本资料,本文我们就来看看如何使用Scrapy框架方 ...

  6. python爬虫:使用scrapy框架抓取360超清壁纸(10W+超清壁纸等你来爬)

    目的:闲着无聊,利用爬虫爬取360超清壁纸,并将其数据存储至MongoDB/MySQL中,将图片下载至指定文件夹. 要求:确保以安装MongoDB或者MySQL数据库.scrapy框架也肯定必须有的: ...

  7. PYTHON 爬虫笔记十一:Scrapy框架的基本使用

    Scrapy框架详解及其基本使用 scrapy框架原理 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中. 其最初是为 ...

  8. python爬虫学习笔记-scrapy框架之start_url

    在使用命令行创建scrapy项目后,会发现在spider.py文件内会生成这样的代码: name = 'quotes' allowed_domains = ['quotes.toscrape.com' ...

  9. python爬虫教程:Scrapy框架爬取Boss直聘网Python职位信息的源码

    今天小编就为大家分享一篇关于Scrapy框架爬取Boss直聘网Python职位信息的源码,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧 分析 使用Crawl ...

最新文章

  1. easyexcel导入时读不到数据_EasyExcel简单使用--导入excel数据
  2. 再次理解STM32中的堆栈机制
  3. 让linux服务器支持安全http协议(https)
  4. 表单提交时submit验证非空return false没用_开发这样一个复杂的表单你需要用多久...
  5. java 监听request_ServletRequest 监听器
  6. nacos当配置中心读取其他配置文件_SpringBoot+Nacos实现配置中心
  7. java学生考勤代码免费,基于jsp的学生考勤管理-JavaEE实现学生考勤管理 - java项目源码...
  8. oracle人才盘点演示,Oracle 11g Golden Gate DDL单向同步实例演示
  9. windows更新安装时出现此更新不适用于你的计算机的解决办法  dos 安装 msu
  10. Linux系统分区概念
  11. error: Microsoft Visual C++ 14.0 is required. Get it with “Microsoft Visual C++ Build Tools,亲测100%安装
  12. [4G5G专题-4]:RRU 全面了解什么是4G+5G RF静态射频共享?
  13. Oracle 12c升级指南
  14. 【Electron】 NSIS 打包 Electron 生成exe安装包
  15. https网站地图生成工具
  16. SQL查询以某个字母开头
  17. 【人工智能】八皇后问题-启发式求解
  18. WIN10下如何更改微信聊天记录的默认存储路径
  19. 关闭office提示:为什么要冒险,获取正版office
  20. C#操作开机自启动(写进注册表)

热门文章

  1. mysql 高并发下查询很慢_MySQL-高并发优化
  2. 三角有理式积分——万能代换公式详细推导
  3. js类似matlab_如何评价国产软件 TRUFFER(可替代 MATLAB)?
  4. c语言程序设计添加修改删除,C语言程序设计实习报告,DOC
  5. 互融云供应链集采管理平台:助企业快速打造供应链金融生态圈
  6. pb使用记录 关于pbt、pbr、pbd
  7. Halcon如何便捷仿射变换,控制好Phi参数的选择?
  8. 从AndFix源码看Android热修复
  9. LeetCode-maximal-rectangle(最大矩阵面积)
  10. Python实战,爬取金融期货数据