歡迎關(guān)注 『python爬蟲』 專欄,持續(xù)更新中
歡迎關(guān)注 『python爬蟲』 專欄,持續(xù)更新中
1. 無頭瀏覽器
-
一般性的selenium會打開瀏覽器頁面,展示圖形化頁面給我們看,我們都應(yīng)該知道命令行式的程序肯定比這種渲染圖形化界面的程序快速高效。為了一定程度上緩解selenium慢的問題,我們可以采用無頭瀏覽器。
-
無頭瀏覽器值?!盁o頭瀏覽器”的“無頭”元素與它們確實缺少一個關(guān)鍵元素(即圖形用戶界面(GUI))有關(guān)。這使得我們可以做到后臺的靜默運行中完成爬蟲。
-
優(yōu)點:快捷高效
-
缺點:編寫代碼和調(diào)試更加困難(沒有圖形化界面的痛苦)
-
適用場景:已經(jīng)確保能夠成功爬取數(shù)據(jù),為了提高效率,可以使用無頭瀏覽器。
2. 分析被爬取數(shù)據(jù)的網(wǎng)頁結(jié)構(gòu)
藝恩數(shù)據(jù)
https://www.endata.com.cn/BoxOffice/BO/Year/index.html
- 年份下拉框
select
元素的xpath//*[@id="OptionDate"]
定位 - 借助 select支持庫將select元素轉(zhuǎn)為select對象
sel = Select(sel_el)# 對元素進行包裝, 包裝成下拉菜單對象
- 抓取每個年份的數(shù)據(jù)table xpath定位
//*[@id="TableList"]/table
i就是每一個下拉框選項的索引位置 把5換成len(sel.options)表示遍歷所有年份 這里是5表示最近4年【0,5)
# for i in range(len(sel.options)):#所有年份的數(shù)據(jù)
for i in range(5):#最近【0,5)年的數(shù)據(jù) 也就是 [2023-2019]
sel.select_by_index(i) # 遍歷每一年,按照索引進行切換
time.sleep(2)
table = web.find_element_by_xpath('//*[@id="TableList"]/table')
print(table.text) # 打印所有文本信息
print("===================================")
3. 完整代碼
from selenium.webdriver import Chrome
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.select import Select
import time
# 創(chuàng)建一個參數(shù)對象,用來控制chrome以無界面模式打開(可以視為固定寫法)
opt = Options()#新建參數(shù)對象
opt.add_argument("--headless")#無頭
opt.add_argument("--disbale-gpu")#無gpu圖形化界面
web = Chrome(options=opt) # 把參數(shù)配置設(shè)置到瀏覽器中
web.get("https://www.endata.com.cn/BoxOffice/BO/Year/index.html")
time.sleep(2)
sel_el = web.find_element_by_xpath('//*[@id="OptionDate"]')# 定位到下拉列表
sel = Select(sel_el)# 對元素進行包裝, 包裝成下拉菜單對象
# print(sel.options) #打印所有的下拉選項
# 讓瀏覽器進行調(diào)整選項
for i in range(5): # i就是每一個下拉框選項的索引位置 把5換成len(sel.options)表示遍歷所有年份 這里是5表示最近4年【0,5)
sel.select_by_index(i) # 遍歷每一年,按照索引進行切換
time.sleep(2)
table = web.find_element_by_xpath('//*[@id="TableList"]/table')
print(table.text) # 打印所有文本信息
print("===================================")
print("運行完畢. ")
# 拿到頁面代碼Elements(經(jīng)過數(shù)據(jù)加載以及js執(zhí)行之后的結(jié)果的html內(nèi)容)
print(web.page_source)
web.close()#注意關(guān)閉連接,如果不關(guān)閉可能會導致有多個連接,進而容易封禁
print("關(guān)閉連接")
總結(jié)
大家喜歡的話,給個??,點個關(guān)注!給大家分享更多計算機專業(yè)學生的求學之路!
版權(quán)聲明:
發(fā)現(xiàn)你走遠了@mzh原創(chuàng)作品,轉(zhuǎn)載必須標注原文鏈接
Copyright 2023 mzh
Crated:2023-3-1文章來源:http://www.zghlxwxcb.cn/news/detail-466715.html
歡迎關(guān)注 『python爬蟲』 專欄,持續(xù)更新中
歡迎關(guān)注 『python爬蟲』 專欄,持續(xù)更新中
『未完待續(xù)』文章來源地址http://www.zghlxwxcb.cn/news/detail-466715.html
到了這里,關(guān)于『python爬蟲』24. selenium之無頭瀏覽器-后臺靜默運行(保姆級圖文)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!