網(wǎng)站首頁 編程語言 正文
一、Request對象
Request
對象主要是用來請求數(shù)據(jù),爬取一頁的數(shù)據(jù)重新發(fā)送一個(gè)請求的時(shí)候調(diào)用,其源碼類的位置如
下圖所示:
這里給出其的源碼,該方法有很多參數(shù):
class Request(object_ref): ? ? def __init__(self, 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): ? ? ? ? self._encoding = encoding ?# this one has to be set first ? ? ? ? self.method = str(method).upper() ? ? ? ? self._set_url(url) ? ? ? ? self._set_body(body) ? ? ? ? if not isinstance(priority, int): ? ? ? ? ? ? raise TypeError(f"Request priority not an integer: {priority!r}") ? ? ? ? self.priority = priority ? ? ? ? if callback is not None and not callable(callback): ? ? ? ? ? ? raise TypeError(f'callback must be a callable, got {type(callback).__name__}') ? ? ? ? if errback is not None and not callable(errback): ? ? ? ? ? ? raise TypeError(f'errback must be a callable, got {type(errback).__name__}') ? ? ? ? self.callback = callback ? ? ? ? self.errback = errback ? ? ? ? self.cookies = cookies or {} ? ? ? ? self.headers = Headers(headers or {}, encoding=encoding) ? ? ? ? self.dont_filter = dont_filter ? ? ? ? self._meta = dict(meta) if meta else None ? ? ? ? self._cb_kwargs = dict(cb_kwargs) if cb_kwargs else None ? ? ? ? self.flags = [] if flags is None else list(flags)
這里對各個(gè)做一個(gè)簡單的解釋:
-
url
:這個(gè)request對象發(fā)送請求的url。 -
callback
: 在下載器下載相應(yīng)的數(shù)據(jù)后執(zhí)行的回調(diào)函數(shù)。 -
method
:請求的方法,默認(rèn)為GET方法,可以設(shè)置為其他方法。 -
headers
:請求頭,對于一些固定的設(shè)置,放在settings.py
中指定就可以了, 對于那些非固定的,可以在發(fā)送請求的時(shí)候指定。 -
body
:請求體,傳入的是請求參數(shù)。 -
meta
:比較常用。用于在不同的請求之間傳遞數(shù)據(jù)用。 -
encoding
:編碼。默認(rèn)為utf-8,使用默認(rèn)的就可以了。 -
dont_filter
: 表示不由調(diào)度器過濾,在執(zhí)行多次重復(fù)的請求的時(shí)候用得比較多。 -
errback
:在發(fā)生錯(cuò)誤的是有執(zhí)行的函數(shù)。
二、發(fā)送POST請求
有時(shí)候我們想要在請求數(shù)據(jù)的時(shí)候發(fā)送post請求,那么這時(shí)候需要使用Request
的子類FormRequest
來實(shí)現(xiàn)。如果想要在爬蟲一開始就發(fā)送POST請求,那么需要在爬蟲類中重寫start_requests(self)
方法,并且不在調(diào)用 start_urls
里的url。
三、Response對象
Response
對象一般是由scrapy
給你自動(dòng)構(gòu)建的,因此開發(fā)者不需要關(guān)心如何創(chuàng)建Response
對象。而是如何使用它。Response
對象有很多屬性,可以用來提取數(shù)據(jù)的。
主要有以下屬性:
-
meta
: 從其他請求傳過來的meta屬性,可以用來保持多個(gè)請求之間的數(shù)據(jù)連接。 -
encoding
: 返回字符串編碼和解碼的格式。 -
text
: 將返回來的數(shù)據(jù)作為unicode字符串返回 -
body
: 將返回來的數(shù)據(jù)作為bytes 字符串返回。 -
xpath
:xpath
選擇器 -
css
: css選擇器。
原文鏈接:https://feige.blog.csdn.net/article/details/122751327
相關(guān)推薦
- 2022-04-09 關(guān)于C語言動(dòng)態(tài)內(nèi)存管理介紹_C 語言
- 2022-09-13 Python?迭代器介紹及作用詳情_python
- 2022-11-25 k8s?中的?service?如何找到綁定的?Pod?及實(shí)現(xiàn)?Pod?負(fù)載均衡的方法_云其它
- 2022-05-24 C++實(shí)現(xiàn)路口交通燈模擬系統(tǒng)_C 語言
- 2022-12-13 深入了解Go的HttpClient超時(shí)機(jī)制_Golang
- 2022-11-10 Linux實(shí)現(xiàn)壓縮文件的生成與查看的常用命令總結(jié)_linux shell
- 2023-02-09 go?sync?Waitgroup數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)基本操作詳解_Golang
- 2021-11-23 Flutter?+?Idea?環(huán)境搭建及配置教程_Android
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支