網(wǎng)站首頁 編程語言 正文
一、Request對象
Request
對象主要是用來請求數(shù)據(jù),爬取一頁的數(shù)據(jù)重新發(fā)送一個請求的時候調(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)
這里對各個做一個簡單的解釋:
-
url
:這個request對象發(fā)送請求的url。 -
callback
: 在下載器下載相應(yīng)的數(shù)據(jù)后執(zhí)行的回調(diào)函數(shù)。 -
method
:請求的方法,默認(rèn)為GET方法,可以設(shè)置為其他方法。 -
headers
:請求頭,對于一些固定的設(shè)置,放在settings.py
中指定就可以了, 對于那些非固定的,可以在發(fā)送請求的時候指定。 -
body
:請求體,傳入的是請求參數(shù)。 -
meta
:比較常用。用于在不同的請求之間傳遞數(shù)據(jù)用。 -
encoding
:編碼。默認(rèn)為utf-8,使用默認(rèn)的就可以了。 -
dont_filter
: 表示不由調(diào)度器過濾,在執(zhí)行多次重復(fù)的請求的時候用得比較多。 -
errback
:在發(fā)生錯誤的是有執(zhí)行的函數(shù)。
二、發(fā)送POST請求
有時候我們想要在請求數(shù)據(jù)的時候發(fā)送post請求,那么這時候需要使用Request
的子類FormRequest
來實現(xiàn)。如果想要在爬蟲一開始就發(fā)送POST請求,那么需要在爬蟲類中重寫start_requests(self)
方法,并且不在調(diào)用 start_urls
里的url。
三、Response對象
Response
對象一般是由scrapy
給你自動構(gòu)建的,因此開發(fā)者不需要關(guān)心如何創(chuàng)建Response
對象。而是如何使用它。Response
對象有很多屬性,可以用來提取數(shù)據(jù)的。
主要有以下屬性:
-
meta
: 從其他請求傳過來的meta屬性,可以用來保持多個請求之間的數(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)推薦
- 2024-01-11 redis開啟密碼驗證
- 2022-04-15 C語言?指針數(shù)組進(jìn)階詳解_C 語言
- 2022-03-20 Android自動攔截與接聽功能APK黑白名單_Android
- 2023-01-26 redis性能優(yōu)化之生產(chǎn)中實際遇到的問題及排查總結(jié)_Redis
- 2022-07-28 Redis特殊數(shù)據(jù)類型bitmap位圖_Redis
- 2022-07-02 python列表:開始、結(jié)束、步長值實例_python
- 2023-03-11 Pandas讀取csv的實現(xiàn)_python
- 2022-09-21 go語言中的defer關(guān)鍵字_Golang
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- 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錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支