新聞中心
之前有一位爬蟲大佬寫了一篇文章,說 HTTP/2協(xié)議天然就能防大部分的爬蟲。Python 無論是 requests 還是 Scrapy 都不支持 HTTP/2協(xié)議。

10年的思南網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。營銷型網(wǎng)站建設(shè)的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整思南建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)從事“思南網(wǎng)站設(shè)計”,“思南網(wǎng)站推廣”以來,每個客戶項目都認(rèn)真落實執(zhí)行。
Go + HTTP/2[1]這個網(wǎng)站可以檢測你是否使用 HTTP/2協(xié)議進(jìn)行請求。當(dāng)我們直接使用瀏覽器訪問的時候,頁面長這樣:
注意紅框中的文字
但如果我們直接使用 Scrapy 訪問這個頁面,并打印源代碼,返回的 HTML 長這樣:
注意紅框中的文字
這樣看起來,似乎Scrapy 確實不支持HTTP/2協(xié)議?
但我為什么總是一直強(qiáng)調(diào)要讀官方文檔,不要去搜索一些垃圾博客呢。因為官方文檔里面,已經(jīng)明確告訴你Scrapy 不僅原生支持 HTTP/2,而且只需要改一個配置就可以了:Settings — Scrapy 2.5.0 documentation[2]。
更換下載器句柄就可以了
請大家注意上圖中標(biāo)紅色方框的地方。根據(jù)它的描述,我只需要在settings.py文件中,更新下載器句柄(handlers)就可以了。我們來測試一下。把下面這段代碼直接復(fù)制到 Scrapy 爬蟲中:
- DOWNLOAD_HANDLERS = {
- 'https': 'scrapy.core.downloader.handlers.http2.H2DownloadHandler',
- }
改好以后,重新運行爬蟲,打印出來的源代碼如下圖所示:
可以看到,不需要安裝任何額外的庫。Scrapy 原生就支持 HTTP/2了。
參考文獻(xiàn)
[1] Go + HTTP/2: https://http2.golang.org/
[2] Settings — Scrapy 2.5.0 documentation: https://docs.scrapy.org/en/latest/topics/settings.html#download-handlers-base
網(wǎng)頁名稱:一日一技:誰說Scrapy不能爬HTTP/2?
鏈接地址:http://m.fisionsoft.com.cn/article/dhccosd.html


咨詢
建站咨詢
