一日一技:誰說 Scrapy 不能爬 HTTP/2?

之前有一位爬蟲大佬寫了一篇文章,說 HTTP/2協議天然就能防大部分的爬蟲。Python 無論是 requests 還是 Scrapy 都不支持 HTTP/2協議。
Go + HTTP/2[1]這個網站可以檢測你是否使用 HTTP/2協議進行請求。當我們直接使用瀏覽器訪問的時候,頁面長這樣:
注意紅框中的文字。但如果我們直接使用 Scrapy 訪問這個頁面,并打印源代碼,返回的 HTML 長這樣:
注意紅框中的文字,這樣看起來,似乎Scrapy 確實不支持HTTP/2協議?
但我為什么總是一直強調要讀官方文檔,不要去搜索一些垃圾博客呢。因為官方文檔里面,已經明確告訴你Scrapy 不僅原生支持 HTTP/2,而且只需要改一個配置就可以了:Settings — Scrapy 2.5.0 documentation[2]。
更換下載器句柄就可以了
請大家注意上圖中標紅色方框的地方。根據它的描述,我只需要在settings.py文件中,更新下載器句柄(handlers)就可以了。我們來測試一下。把下面這段代碼直接復制到 Scrapy 爬蟲中:
DOWNLOAD_HANDLERS = { 'https': 'scrapy.core.downloader.handlers.http2.H2DownloadHandler', }
改好以后,重新運行爬蟲,打印出來的源代碼如下圖所示:
可以看到,不需要安裝任何額外的庫。Scrapy 原生就支持 HTTP/2了。
參考文獻
[2] Settings — Scrapy 2.5.0 documentation:?https://docs.scrapy.org/en/latest/topics/settings.html#download-handlers-base
HTTP Python Scrapy 爬蟲
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。