初始爬蟲

1.爬蟲的矛與盾

反爬機制:網站可以通過制定相應的策略或者技術手段,防止爬蟲進行網站數據的爬取

反反爬策略:爬蟲程序可以通過制定相關的策略或者技術手段,破解網站中具備的爬蟲機制,從而可以獲取網站中相關的數據。

robots協(xié)議:君子協(xié)議,規(guī)定了網站中那些頁面可以被爬蟲,哪些不行

根據協(xié)議,網站管理員可以在網站域名的根目錄下放一個robot.txt的文本文件,里面可以指定不同的網絡爬蟲能訪問的頁面和禁止的頁面。網絡爬蟲采集這個網站之前,可以先或者這個文件,然后解析里面的規(guī)則,最后根據規(guī)則來采集網頁數據

例如:https://www.bilibili.com/robots.txt


2.web請求全過程剖析

瀏覽器輸入網址到我們看到整個頁面的過程:

以百度為例。在訪問百度的時候,瀏覽器會把這次的請求送到百度服務器(百度的一臺電腦),由服務器收到這個請求,然后加載一些數據,返回給瀏覽器進行顯示。這里百度返回給瀏覽器的不是直接的頁面,而是頁面源代碼(由html,css,js組成)。由瀏覽器執(zhí)行頁面代碼,然后展示給用戶。具體過程如下

web請求過程

是否所有數據都在頁面源代碼中?否,這邊介紹下網頁渲染過程:

第一種:服務器渲染

就是我們請求到服務器的時候,服務器吧全部數據寫入到html中,我們?yōu)g覽器就能能拿到帶有數據的html內容。

如下:

由于數據直接寫在html中,我們能看到的數據都在頁面源代碼中。這種網頁一般都相對容器抓取。

第二種:客戶端渲染(前端js渲染)

這種機制一班是第一次請求服務器返回一堆HTML框架結果。然后再次請求到真正保存數據的服務器,由這個服務器返回數據,最后在瀏覽器上對數據進行加載。

客戶端渲染過程

這樣做的好處就是服務器那邊能緩解壓力,而且分工明確,容器維護。典型網頁:https://www.jd.com/


客戶端渲染實例

那數據如何加載進來?其實我們向下滾動的過程中,js偷偷加載數據,要想看到這個頁面的加載全過程,需要F12查看





看到了吧,??上看到的內容其實是后加載進來的。

注意:有些時候,我們的數據不?定都是直接來?于??源代碼。如果你在??源代碼中找不到你要的數據時,那很可能數據是存放在另?個請求?。

3.HTTP協(xié)議

協(xié)議:就是2個計算機之間為了能流暢的進行溝通設置的君子協(xié)議。常見有TCP/IP,SOAP協(xié)議,HTTP協(xié)議,SMTP協(xié)議

HTTP協(xié)議:Hyper Text Transfer Protocol(超?本傳輸協(xié)議)的縮寫,是?于從萬維?(WWW:World Wide Web )服務器傳輸超?本到本地瀏覽器的傳送協(xié)議。直?點?,瀏覽器和服務器之間數據交互遵守的就是HTTP協(xié)議。

HTTP協(xié)議把?條消息分為三?塊內容。?論是請求還是響應都是三塊內容:

請求:

請求? -> 請求?式(get/post) 請求url地址?

協(xié)議請求頭 -> 放?些服務器要使?的附加信息

請求體 -> ?般放?些請求參數

響應:

狀態(tài)? -> 協(xié)議?

狀態(tài)碼響應頭 -> 放?些客戶端要使?的?些附加

信息響應體 -> 服務器返回的真正客戶端要?的內容(HTML,json)等

在后?我們寫爬?的時候要格外注意請求頭和響應頭。這兩個地??般都隱含著?些?較重要的內容。

請求頭常見的一些重要內容(爬蟲需要):

user-agent:請求載體的身份標識(用啥發(fā)送請求)

Referer:防盜鏈(這次請求從哪個頁面來的?反爬會用到)

Cookie:本地字符串數據信息(用戶登錄信息,反爬會用到)

響應頭中一些重要的內容:

Content-Type:返回內容類型,比如Content-Type: text/html; charset=utf-8

各種神奇的莫名其妙的字符串(需要經驗,一般都是token字樣,防止各種攻擊和爬蟲)

請求方式:

Get:顯示提交

Post:隱示提交

4.requests模塊入門

我們使用python內置的urlib模塊來獲取頁面源代碼,但是他不是我們常用的工具。常用抓取頁面通常用第三方模塊requests。這個模塊的優(yōu)勢就是比urlib還有簡單,且處理各種請求比較方便。

安裝:pip install requests

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple requests

案例1:抓取搜狗內容


代碼及運行結果


爬蟲結果

案例2:抓取百度翻譯數據

注意百度翻譯這個url不好弄出來。記住,在輸?的時候,關掉各種輸?法,要?英?輸?法,然后不要回?。就能看到這個sug了。



案例3:抓取?瓣電影

https://movie.douban.com/




爬取的信息

學習這次的爬蟲第一個課程知道了一些爬蟲的基礎知識,尤其對爬蟲的渲染機制有了更深的理解。

task1:爬取新浪財經的數據

import requests

url = f'http://vip.stock.finance.sina.com.cn/q/go.php/vComStockHold/kind/jgcg/index.phtml'

dic = { "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36"}

response = requests.get(url, headers=dic) # 處理一個小小的反爬

with open("xinlangcaijing.html", mode="w", encoding="utf-8") as f:?

????f.write(response.text)

response.close()

print("over")

代碼及結果圖片
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容