JavaScript
JavaScript具有以下一些主要特點:
- 動態類型: JavaScript是一種動態類型語言,變量可以存儲任意類型的數據,無需事先聲明變量的類型。
- 事件驅動:JavaScript主要用于處理用戶在瀏覽器中的各種交互事件,如單擊、鼠標移動、鍵盤輸入等。
- 面向對象:JavaScript雖然不是一種嚴格的面向對象語言,但它支持對象、繼承等面向對象編程概念。
- 函數式編程:JavaScript支持函數式編程,函數可作為一等公民,可以賦值給變量、作為參數傳遞給其他函數。
- 異步編程:JavaScript擅長異步編程,可以利用回調函數、Promise、async/await等機制來處理異步操作。
Python
Python是一種通用編程語言:
- 數據分析和科學計算:Python擁有豐富的數據分析和科學計算庫,如NumPy、Pandas、Matplotlib等,廣泛應用于數據挖掘、機器學習等場景。
- 人工智能和機器學習:Python在人工智能和機器學習領域非常流行,有TensorFlow、PyTorch等強大的深度學習庫。
- Web開發:Python有Django、Flask等流行的Web框架,可用于開發動態網站和Web應用程序。
- 系統編程和自動化:Python擅長系統編程和自動化任務,可用于編寫腳本、系統管理等。
- 數據可視化:Python有豐富的可視化庫,如Matplotlib、Seaborn,可用于生成各種圖表和可視化效果。
- 教育和科研:Python簡單易學,被廣泛應用于編程教育和科學研究領域。
對比
Python更加通用和易學,適合初學者和從事數據分析、機器學習等工作的開發者;而JavaScript則更擅長web開發和交互式應用程序。
爬蟲代碼書寫
這里主要講解python的爬蟲代碼書寫,我們使用colab平臺進行代碼的編寫。
Google Colab(Colaboratory)是一個基于瀏覽器的免費Jupyter Notebook環境,它為用戶提供了一個免費的云端計算平臺,用于編寫和運行代碼,尤其適合機器學習和數據科學領域的開發和研究。
首先我們先安裝依賴。
# python 請求庫
! pip install requests
# python dom 查找
! pip install beautifulsoup4
接下來我們就開始去編寫獲取數據的代碼,這里我們通過豆瓣電影排行榜 (douban.com)這個鏈接去獲取電影的數據。
首先看以下代碼:
# 引入請求庫
import requests
from bs4 import BeautifulSoup# 爬取url里的電影數據
def fetch_movie_list(url):headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36 Edg/125.0.0.0'}response = requests.get(url,headers = headers)if(response.status_code == 200):soup = BeautifulSoup(response.text,'html.parser')movie_list = []movies = soup.select('#wrapper #content .article .item')print(len(movies))all_movies_text = ''.join([movie.prettify() for movie in movies])print(all_movies_text)print(movies)# 拿到數據就交給ai分析return movieselse:print("失敗")url = "https://movie.douban.com/chart"# 爬取url里的電影數據
movies = fetch_movie_list(url)
這段代碼我們就能夠獲取到相應的html數據了。
解釋一下這段代碼之前我們先聊一下前置知識。
向一個網站發送請求,到底得到了什么?
向一個網站發送請求的本質就是獲取該網站返回的HTML頁面。這個過程可以分為以下幾個步驟:
1. 構建HTTP請求:
- 確定請求方法(GET、POST、PUT、DELETE等)
- 設置請求頭(User-Agent、Accept、Referer等)
- 傳遞請求參數(查詢字符串、請求體等)
2. 發送HTTP請求:
- 通過網絡協議(如TCP/IP)將請求發送到目標網站的服務器
3. 接收響應:
- 服務器接收到請求后,會生成相應的HTML頁面作為響應內容
- 將HTML頁面通過網絡協議返回給發起請求的客戶端
4. 獲取HTML頁面:
- 客戶端接收到服務器返回的HTML頁面
- 解析和處理這個HTML頁面,提取所需的信息
這個過程中,獲取HTML頁面是關鍵目標。HTML頁面包含了網站的結構、內容和樣式信息,通過解析和分析這個HTML。
既然我們向一個網站發送請求可以獲取到html結構,這不就代表著我們可以通過分析html來獲取數據。
接下來就繼續分析上面的代碼。
講解一下:
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36 Edg/125.0.0.0'
}
這個請求頭其實就是告訴網站,我是真人,不是程序
- Mozilla/5.0 是一個標準的瀏覽器標識前綴。
- (Windows NT 10.0; Win64; x64) 表示操作系統是 Windows 10 64 位版本。
- AppleWebKit/537.36 說明使用了基于 WebKit 537.36 版本的渲染引擎。
- (KHTML, like Gecko) 表示瀏覽器內核與 KHTML 和 Gecko 引擎相似。
- Chrome/125.0.0.0 說明瀏覽器是 Google Chrome 125.0.0.0 版本。
- Safari/537.36 也表示使用了 Safari 瀏覽器的一些特性。
- Edg/125.0.0.0 則表示使用了 Microsoft Edge 125.0.0.0 版本。
那么我們要如何獲取到自己瀏覽器的這份User-Agent數據呢?
很簡單,只需要在瀏覽器的控制臺輸入navigator.userAgent就可以獲取到了
繼續分析,我們以前寫JavaScript的代碼時,在遇到了發送請求時,都是需要去await的。
但是為什么Python代碼不需要這樣做呢?
這就是因為JavaScript是異步的,Python是同步的。
JavaScript就需要使用關鍵詞await將異步代碼塊變為同步代碼。
作者:愛吃土豆絲呦
鏈接:https://juejin.cn/post/7391699424793591845