通過爬蟲技術抓取網頁,動態(tài)加載的數據或包含 JavaScript 的頁面,需要使用一些特殊的技術和工具。以下是一些常用的技術方法:
-
使用瀏覽器模擬器:使用像 Selenium、PhantomJS 或其他類似工具可以模擬一個完整的瀏覽器環(huán)境,這些工具都可以執(zhí)行JavaScript并且返回渲染后的頁面內容。使用這種方法可以模擬用戶與網站的交互,從而得到完整的運行時狀態(tài)。
-
分析網絡請求:使用網絡抓包工具(例如 Fiddler、Wireshark)來監(jiān)視網站上的網絡請求。通過分析網絡請求并確定用于檢索數據的URL,可以獲取請求數據并解析響應數據,從而獲得所需的信息。
-
解析 JavaScript 代碼:有些網站將數據存儲在 JavaScript 中并動態(tài)顯示在頁面上。使用 JavaScript 解析器(例如 jsdom、PyV8 等)可以執(zhí)行 JavaScript 代碼并解析響應結果,以獲取所需的數據。
-
接口直接請求:有些網站提供專用的API(應用程序接口),用于向開發(fā)人員公開數據。這些API允許開發(fā)人員通過發(fā)送HTTP請求來獲取特定數據,并且網絡請求和響應數據通常以JSON格式進行編碼。
總之,抓取動態(tài)加載的數據或包含JavaScript的頁面需要深入了解目標網站的技術細節(jié)以及使用現代的網絡爬蟲技術來獲取所需的信息。
本文采用使用瀏覽器模擬器技術方案。
1. 使用Chrome開發(fā)者工具精確定位網頁元素位置
F12鍵直接打開Chrome開發(fā)者模式,或者找到Chrome瀏覽器的“更多工具”中的“開發(fā)者工具”,如下圖所示(這里以百度界面為例),使用百度網頁查詢搜索為例,獲取界面元素,進行爬取。
1.1. 定位制定元素
定位原始xpath,在Elements中點擊箭頭(下圖紅圓圈圈定位置的箭頭),移動鼠標箭頭到百度輸入框位置定位指定的元素(如下圖所示,手工繪制箭頭改變了顏色,并且彈出“Input#kw…”)。
1.2. 在定位元素的指定位置
在元素區(qū)域選定位置,鼠標右鍵彈出菜單選擇框,選擇Copy顯示對應的元素定位方法。 點擊:Copy Xpath,復制元素路徑://[@id=“kw”]。
使用快捷查詢功能,在Chrome瀏覽器中:Ctral+F調出查詢功能。在下面的輸入框,輸入剛才的//[@id=“kw”] 路徑可以高亮在界面展示對應的元素。
2. Selenium工具爬取內容
Selenium是一種用于Web應用程序測試的自動化工具。它允許用戶使用各種編程語言(如Java、Python、C#等)編寫測試腳本來模擬實際用戶在Web瀏覽器中的操作,例如點擊鏈接、填寫表單等等。Selenium也可以用于爬蟲、數據挖掘和Web自動化等領域,因為它可以模擬人類的操作來獲取Web頁面的內容和數據。Selenium的優(yōu)勢在于它可以與各種主要的Web瀏覽器和操作系統(tǒng)一起使用,并且可以從多個平臺上運行測試腳本。此外,Selenium還具有靈活性和可擴展性,因為它可以與其他測試框架和工具集成使用,從而提高測試效率和可靠性。
Selenium是一款常用的自動化測試工具,其開源地址為:https://github.com/SeleniumHQ/selenium。
2.1. 安裝Selenium
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple selenium
2.2. 安裝瀏覽器
Selenium是一個用于自動化測試的工具,而自動化測試需要模擬用戶操作。而用戶操作通常是通過瀏覽器完成的。所以Selenium需要與瀏覽器進行交互,模擬用戶操作。但是,Selenium本身并不包含瀏覽器,需要通過瀏覽器驅動來實現與瀏覽器的交互。瀏覽器驅動充當著Selenium與瀏覽器之間的橋梁,通過驅動程序與瀏覽器進行通信,從而實現模擬用戶操作的自動化測試。
本文僅使用Chrome瀏覽器,其驅動如下:
ChromeDriver 下載地址:https://chromedriver.storage.googleapis.com/index.html
安裝時,需要把“chromedriver.exe”放到chrome的目錄下…\Google\Chrome\Application\ ,然后設置path環(huán)境變量,增加chrome的目錄(本文為C:\Program Files\Google\Chrome\Application)。
chromedriver.exe
Starting ChromeDriver 114.0.5735.90 (386bc09e8f4f2e025eddae123f36f6263096ae49-refs/branch-heads/5735@{#1052}) on port 9515
Only local connections are allowed.
Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe.
ChromeDriver was started successfully.
windows10上的環(huán)境變量配置如下:
2.3. 示例代碼
仍以爬取百度查詢結果為例,模擬百度過程如下:
- 打開百度網頁
- 輸入查詢內容,本文查詢輸入為“python”
- 點擊打開第一行結果
示例代碼:
?# -*- coding: utf-8 -*-
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time
driver = webdriver.Chrome()
url = 'https://www.baidu.com/'
driver.get(url)
driver.maximize_window()
# 獲取百度搜索框元素
search_box = driver.find_element(By.ID ,"kw") # 按ID查詢
#search_box = driver.find_element(By.NAME,'wd') # 按Name查詢
# 在搜索框中輸入關鍵詞
search_box.send_keys("Python")
# 模擬按下回車鍵進行搜索
search_box.send_keys(Keys.RETURN)
# 或者通過這種方法回車搜索
# ---------------------------------------
# 獲取搜索按鈕元素
# search_button = driver.find_element(By.ID, "su")
# 點擊搜索按鈕
# search_button.click()
#-----------------------------------------
# 等待頁面加載完成
driver.implicitly_wait(10)
# 獲取搜索結果列表元素
search_results = driver.find_elements(By.CSS_SELECTOR, ".result")
# 輸出搜索結果標題和鏈接
for result in search_results:
title = result.find_element(By.CSS_SELECTOR,"h3").text
link = result.find_element(By.CSS_SELECTOR,"a").get_attribute("href")
print(title, link)
# 點擊第一個搜索結果鏈接
first_result = search_results[0].find_element(By.CSS_SELECTOR,"a")
first_result.click()
# 返回上一頁
driver.back()
# 刷新當前頁面
driver.refresh()
# 最大化瀏覽器窗口
driver.maximize_window()
# 關閉瀏覽器實例
driver.quit()
#time.sleep(1)
注:因為
find_element_by_css_selector
方法已經被棄用,最新版本的 Selenium 推薦使用find_element
方法。因此,這段代碼使用了更新后的方法來定位頁面元素。
結果如下所示:
需要注意的是,動態(tài)生成的頁面可能需要更長的時間來加載和解析。因此,您可能需要增加等待時間或使用其他技術來加快頁面加載速度。
3. 小結
本文介紹了如何使用Selenium技術進行爬蟲實踐,以百度網頁查詢?yōu)槔?。首先,我們將學習如何在Chrome瀏覽器開發(fā)者模式下獲取元素。接下來,我們將指導您安裝Selenium和Chromedriver。最后,我們將通過一個簡單的示例來演示如何模擬百度搜索"Python"的過程。
通過以上示例代碼,您可以實現使用Selenium技術模擬百度搜索"Python"的功能。這只是爬蟲技術的入門,您還可以學習更多高級功能,如模擬登錄、處理動態(tài)加載內容等。
參考:
蟲師. selenium + python自動化測試環(huán)境搭建. 博客園. 2013.05文章來源:http://www.zghlxwxcb.cn/news/detail-647009.html
lovingsoft.chrome瀏覽器f12快速定位元素的技巧. CSDN博客. 2021.01文章來源地址http://www.zghlxwxcb.cn/news/detail-647009.html
到了這里,關于基于Selenium技術方案的爬蟲入門實踐的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!