2024 一天掌握python爬蟲【基礎篇】 涵蓋 requests、beautifulsoup、selenium:
https://www.bilibili.com/video/BV1Ju4y1Y7k6/
有些網(wǎng)站的數(shù)據(jù)是js動態(tài)渲染的,我們無法通過網(wǎng)頁源碼直接找到數(shù)據(jù),只能通過找接口方式來獲取數(shù)據(jù),但是很多時候,數(shù)據(jù)又是json格式的,給我們爬數(shù)據(jù)增加成本。
比如 https://www.csdn.net/ 這個網(wǎng)站 就是js動態(tài)渲染的首頁數(shù)據(jù)。
這時候,使用selenium,我們可以通過模擬真實瀏覽器的用戶操作行為,來獲取js動態(tài)渲染后的網(wǎng)頁數(shù)據(jù),在進行解析網(wǎng)頁,獲取我們需要的數(shù)據(jù)。能大大提高我們的抓取效率。
Selenium是一個用于Web應用程序測試的工具。Selenium測試直接運行在瀏覽器中,就像真正的用戶在操作一樣。支持的瀏覽器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera,Edge等。
我們使用Selenium,模擬瀏覽器功能,自動執(zhí)行網(wǎng)頁中的js代碼,實現(xiàn)動態(tài)加載,然后再進行數(shù)據(jù)抓取。
測試代碼:
import requests
url = "https://www.csdn.net/"
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36'
}
r = requests.get(url=url, headers=headers)
# 設置返回對象的編碼
r.encoding = "utf-8"
print(r.text)
運行發(fā)現(xiàn),返回結果里面找不到我們需要的資訊數(shù)據(jù)。