国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

基于Selenium模塊實現(xiàn)無界面模式 & 執(zhí)行JS腳本

這篇具有很好參考價值的文章主要介紹了基于Selenium模塊實現(xiàn)無界面模式 & 執(zhí)行JS腳本。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

此篇文章主要介紹如何使用 Selenium 模塊實現(xiàn) 無界面模式 & 執(zhí)行JS腳本(把滾動條拉到底部),并以具體的示例進行展示。

1、Selenium 設(shè)置無界面模式

創(chuàng)建瀏覽器對象之前,創(chuàng)建 options 功能對象 :options = webdriver.ChromeOptions()
添加無界面功能參數(shù):options.add_argument("--headless")
構(gòu)造瀏覽器對象,打開瀏覽器,并設(shè)置 options 參數(shù):

browser = webdriver.Chrome(options=options)

from selenium import webdriver

options = webdriver.ChromeOptions() ?# 創(chuàng)建瀏覽器對象之前,創(chuàng)建options功能對象
options.add_argument("--headless") ?# 添加無界面功能參數(shù)
browser = webdriver.Chrome(options=options) ?# 構(gòu)造瀏覽器對象,打開瀏覽器

2、Selenium 執(zhí)行JS腳本

創(chuàng)建瀏覽器對象:browser = webdriver.Chrome()
執(zhí)行JS腳本:browser.execute_script()
最常用腳本 - 把滾動條拉到底部:browser.execute_script('window.scrollTo(0,document.body.scrollHeight)')
from selenium import webdriver

browser = webdriver.Chrome() # 創(chuàng)建瀏覽器對象
browser.execute_script(
? ? 'window.scrollTo(0,document.body.scrollHeight)'
) # 把滾動條拉到最底部

3、Selenium 設(shè)置無界面模式 & 執(zhí)行JS腳本 案例

3.1 需求分析
基于 Selenium + Chrome 抓取 `http://www.jd.com/` 下 “python書籍” 的信息

3.2 爬蟲思路
打開瀏覽器輸入主頁地址:https://www.jd.com/
使用 Selenium 的 Xpath 找到 信息輸入框 和 點擊搜索 節(jié)點:'//*[@id="key"]' & '//*[@id="search"]/div/div[2]/button'

輸入 “python書籍” 并點擊 點擊搜索按鈕;
使用 Selenium 的 Xpath 找到 書籍信息 節(jié)點對象列表: '//*[@id="J_goodsList"]/ul/li';?
依次遍歷每個元素,并依次提取每本書籍信息;
爬取完一頁信息后,需要判斷是否是最后一頁

可以看到:
最后一頁的節(jié)點信息為:pn-next disabled
非最后一頁的節(jié)點信息為:pn-next
如果不是最后一頁,點擊下一頁繼續(xù)進行爬?。?//*[@id="J_bottomPage"]/span[1]/a[9]'

3.3 程序?qū)崿F(xiàn)

初始化函數(shù)
? ? def __init__(self):
? ? ? ? # 設(shè)置為無界面
? ? ? ? self.options = webdriver.ChromeOptions() ?# 創(chuàng)建瀏覽器對象之前,創(chuàng)建options功能對象
? ? ? ? self.options.add_argument('--headless') ?# 添加無界面功能參數(shù)
? ? ? ? self.driver = webdriver.Chrome(options=self.options) ?# 構(gòu)造瀏覽器對象,打開瀏覽器
? ? ? ? self.driver.get(url="http://www.jd.com/") ?# 進入主頁
? ? ? ? # 搜索框發(fā)送:python書籍,點擊搜索按鈕
? ? ? ? self.inputJD = self.driver.find_element(By.XPATH, '//*[@id="key"]') ?# 搜索框xpath://*[@id="key"]
? ? ? ? self.inputJD.send_keys("python書籍")
? ? ? ? self.driver.find_element(By.XPATH,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?'//*[@id="search"]/div/div[2]/button').click() ?# 搜索按鈕xpath://*[@id="search"]/div/div[2]/button 并點擊
? ? ? ? time.sleep(1) ?# 要給頁面元素加載預(yù)留時間

提取數(shù)據(jù)函數(shù)

? ? def parse_html(self):
? ? ? ? """
? ? ? ? function: ?具體提取數(shù)據(jù)方法
? ? ? ? ? ? ? in: ?None
? ? ? ? ? ? ?out: ?None
? ? ? ? ? return: ?None
? ? ? ? ? others: ?Data Extraction Func
? ? ? ? """
? ? ? ? self.driver.execute_script(
? ? ? ? ? ? 'window.scrollTo(0,document.body.scrollHeight)'
? ? ? ? ) ?# 先把滾動條拉到最底部,等待所有商品加載完成再進行數(shù)據(jù)爬取
? ? ? ? time.sleep(3) ?# 給頁面元素加載預(yù)留時間
? ? ? ? # 具體提取數(shù)據(jù)
? ? ? ? li_list = self.driver.find_elements(By.XPATH,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? '//*[@id="J_goodsList"]/ul/li') ?# 基準xpath://*[@id="J_goodsList"]/ul/li 每一個商品對應(yīng)一個li節(jié)點
? ? ? ? item = {} ?# 定義一個空字典
? ? ? ? for li in li_list:
? ? ? ? ? ? item["名稱"] = li.find_element(By.XPATH, './/div[@class="p-name"]/a/em').text.strip()
? ? ? ? ? ? item["價格"] = li.find_element(By.XPATH, './/div[@class="p-price"]/strong').text.strip()
? ? ? ? ? ? item["評價"] = li.find_element(By.XPATH, './/div[@class="p-commit"]/strong').text.strip()
? ? ? ? ? ? item["商家"] = li.find_element(By.XPATH, './/div[@class="p-shopnum"]').text.strip()
? ? ? ? ? ? print(item) ?# 打印

程序入口函數(shù)

? ? def run(self):
? ? ? ? """
? ? ? ? function: ?程序入口函數(shù)
? ? ? ? ? ? ? in: ?None
? ? ? ? ? ? ?out: ?None
? ? ? ? ? return: ?None
? ? ? ? ? others: ?Program Entry Func
? ? ? ? """
? ? ? ? while True:
? ? ? ? ? ? self.parse_html()
? ? ? ? ? ? # 不是最后一頁:pn-next
? ? ? ? ? ? # 最后一頁:pn-next disabled
? ? ? ? ? ? if self.driver.page_source.find("pn-next disabled") == -1: ?# 沒有找到 pn-next disabled,說明不是最后一頁
? ? ? ? ? ? ? ? self.driver.find_element(By.XPATH, '//*[@id="J_bottomPage"]/span[1]/a[9]').click()
? ? ? ? ? ? ? ? time.sleep(1)
? ? ? ? ? ? else:
? ? ? ? ? ? ? ? self.driver.quit()
? ? ? ? ? ? ? ? break

3.4 完整代碼

import time
from selenium import webdriver
from selenium.webdriver.common.by import By

class JDSpider:
? ? def __init__(self):
? ? ? ? # 設(shè)置為無界面
? ? ? ? self.options = webdriver.ChromeOptions() ?# 創(chuàng)建瀏覽器對象之前,創(chuàng)建options功能對象
? ? ? ? self.options.add_argument('--headless') ?# 添加無界面功能參數(shù)
? ? ? ? self.driver = webdriver.Chrome(options=self.options) ?# 構(gòu)造瀏覽器對象,打開瀏覽器

? ? ? ? self.driver.get(url="http://www.jd.com/") ?# 進入主頁
? ? ? ? # 搜索框發(fā)送:python書籍,點擊搜索按鈕
? ? ? ? self.inputJD = self.driver.find_element(By.XPATH, '//*[@id="key"]') ?# 搜索框xpath://*[@id="key"]
? ? ? ? self.inputJD.send_keys("python書籍")
? ? ? ? self.driver.find_element(By.XPATH,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?'//*[@id="search"]/div/div[2]/button').click() ?# 搜索按鈕xpath://*[@id="search"]/div/div[2]/button 并點擊
? ? ? ? time.sleep(1) ?# 要給頁面元素加載預(yù)留時間

? ? def parse_html(self):
? ? ? ? """
? ? ? ? function: ?具體提取數(shù)據(jù)方法
? ? ? ? ? ? ? in: ?None
? ? ? ? ? ? ?out: ?None
? ? ? ? ? return: ?None
? ? ? ? ? others: ?Data Extraction Func
? ? ? ? """
? ? ? ? self.driver.execute_script(
? ? ? ? ? ? 'window.scrollTo(0,document.body.scrollHeight)'
? ? ? ? ) ?# 先把滾動條拉到最底部,等待所有商品加載完成再進行數(shù)據(jù)爬取
? ? ? ? time.sleep(3) ?# 給頁面元素加載預(yù)留時間
? ? ? ? # 具體提取數(shù)據(jù)
? ? ? ? li_list = self.driver.find_elements(By.XPATH,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? '//*[@id="J_goodsList"]/ul/li') ?# 基準xpath://*[@id="J_goodsList"]/ul/li 每一個商品對應(yīng)一個li節(jié)點
? ? ? ? item = {} ?# 定義一個空字典
? ? ? ? for li in li_list:
? ? ? ? ? ? item["名稱"] = li.find_element(By.XPATH, './/div[@class="p-name"]/a/em').text.strip()
? ? ? ? ? ? item["價格"] = li.find_element(By.XPATH, './/div[@class="p-price"]/strong').text.strip()
? ? ? ? ? ? item["評價"] = li.find_element(By.XPATH, './/div[@class="p-commit"]/strong').text.strip()
? ? ? ? ? ? item["商家"] = li.find_element(By.XPATH, './/div[@class="p-shopnum"]').text.strip()
? ? ? ? ? ? print(item) ?# 打印

? ? def run(self):
? ? ? ? """
? ? ? ? function: ?程序入口函數(shù)
? ? ? ? ? ? ? in: ?None
? ? ? ? ? ? ?out: ?None
? ? ? ? ? return: ?None
? ? ? ? ? others: ?Program Entry Func
? ? ? ? """
? ? ? ? while True:
? ? ? ? ? ? self.parse_html()
? ? ? ? ? ? # 不是最后一頁:pn-next
? ? ? ? ? ? # 最后一頁:pn-next disabled
? ? ? ? ? ? if self.driver.page_source.find("pn-next disabled") == -1: ?# 沒有找到 pn-next disabled,說明不是最后一頁
? ? ? ? ? ? ? ? self.driver.find_element(By.XPATH, '//*[@id="J_bottomPage"]/span[1]/a[9]').click()
? ? ? ? ? ? ? ? time.sleep(1)
? ? ? ? ? ? else:
? ? ? ? ? ? ? ? self.driver.quit()
? ? ? ? ? ? ? ? break

if __name__ == '__main__':
? ? spider = JDSpider()
? ? spider.run()

3.5 實現(xiàn)效果

基于Selenium模塊實現(xiàn)無界面模式 & 執(zhí)行JS腳本,自動化測試,Web自動化,selenium,javascript,測試工具

?文章來源地址http://www.zghlxwxcb.cn/news/detail-637790.html

到了這里,關(guān)于基于Selenium模塊實現(xiàn)無界面模式 & 執(zhí)行JS腳本的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【Python_Selenium學(xué)習(xí)筆記(五)】基于Selenium模塊實現(xiàn)鼠標操作

    【Python_Selenium學(xué)習(xí)筆記(五)】基于Selenium模塊實現(xiàn)鼠標操作

    為了模擬鼠標操作,Selenium 模塊提供了 Actionchains 類,可以模仿人的幾乎任何鼠標行為操作; 在此篇文章主要介紹 Actionchains類 的常用方法,使用流程,并以具體的示例進行展示。 perform():執(zhí)行ActionChains中存儲的行為; context_click(on_element=None):點擊鼠標右鍵; double_click(on_

    2024年02月13日
    瀏覽(25)
  • Selenium執(zhí)行Javascript腳本使用參數(shù)和返回值

    Selenium執(zhí)行Javascript腳本使用參數(shù)和返回值

    在Selenium中可以使用drvier.execute_script()來執(zhí)行Javascript腳本,支持多行語句。 使用Javascript可以實現(xiàn)以下功能: 移除元素隱藏、禁用、只讀等限制屬性 為元素添加id或高亮樣式 頁面滾動 富文本框輸入(HTML注入) 獲取頁面信息 在使用Javascript語句時,還可以動態(tài)傳入?yún)?shù)或元素對

    2024年02月06日
    瀏覽(18)
  • 基于selenium實現(xiàn)多個腳本只打開一次瀏覽器(重復(fù)使用瀏覽器)

    本文思路來源【Selenium】控制當前已經(jīng)打開的 chrome瀏覽器窗口(高級版)_是小菜欸的博客-CSDN博客 selenium 自動打開Chrome瀏覽器且重復(fù)使用已打開的Chrome實例_飛揚的箭的博客-CSDN博客 但是這一篇文章的方式對于我來說有一個缺點,即每一次都需要新創(chuàng)建一個瀏覽器,或者需要

    2024年02月16日
    瀏覽(21)
  • 【W(wǎng)eb自動化測試】(七)Selenium中執(zhí)行JavaScript腳本

    相關(guān)文章鏈接: 【W(wǎng)eb自動化測試】(一)Selenium介紹及安裝部署說明 【W(wǎng)eb自動化測試】(二)使用selenium編寫測試用例 【W(wǎng)eb自動化測試】(三)Selenium中控件定位方法 【W(wǎng)eb自動化測試】(四)Selenium中WEB控件交互的方法 【W(wǎng)eb自動化測試】(五)Selenium中的三種等待方式 【W(wǎng)e

    2024年02月04日
    瀏覽(21)
  • 滲透測試——python腳本(selenium模塊)暴力破解

    滲透測試——python腳本(selenium模塊)暴力破解

    免責(zé)聲明 本文僅用于技術(shù)討論與學(xué)習(xí),利用此文所提供的信息而造成的任何直接或者間接的后果及損失,均由使用者本人負責(zé),文章作者不為此承擔(dān)任何責(zé)任。 背景:實習(xí)的第二個周的第二個評估網(wǎng)站項目,很明顯,這里沒有驗證碼(有驗證碼的情況也可以用這個方法,具

    2024年02月02日
    瀏覽(90)
  • python腳本——selenium自動化執(zhí)行一些網(wǎng)頁上的操作

    通過python的selenium模塊,自動化執(zhí)行一些網(wǎng)頁上的重復(fù)的無聊的工作。 chromdriver下載地址

    2024年02月13日
    瀏覽(21)
  • rabbitMQ~工作模式代碼實現(xiàn)【基于python pika模塊】

    rabbitMQ~工作模式代碼實現(xiàn)【基于python pika模塊】

    1 簡單模式 2 工作模式 3 發(fā)布訂閱模式 4 路由模式 5 主題模式

    2024年01月23日
    瀏覽(43)
  • 100天精通Python(實用腳本篇)——第116天:基于selenium實現(xiàn)反反爬策略之添加cookie登錄網(wǎng)站

    ???? 本文已收錄于 《100天精通Python從入門到就業(yè)》:本專欄專門針對零基礎(chǔ)和需要進階提升的同學(xué)所準備的一套完整教學(xué),從0到100的不斷進階深入,后續(xù)還有實戰(zhàn)項目,輕松應(yīng)對面試,專欄訂閱地址:https://blog.csdn.net/yuan2019035055/category_11466020.html 優(yōu)點 : 訂閱限時9.9付費專

    2024年02月20日
    瀏覽(24)
  • 100天精通Python(實用腳本篇)——第118天:基于selenium和ddddocr庫實現(xiàn)反反爬策略之驗證碼識別

    100天精通Python(實用腳本篇)——第118天:基于selenium和ddddocr庫實現(xiàn)反反爬策略之驗證碼識別

    ???? 本文已收錄于 《100天精通Python從入門到就業(yè)》:本專欄專門針對零基礎(chǔ)和需要進階提升的同學(xué)所準備的一套完整教學(xué),從0到100的不斷進階深入,后續(xù)還有實戰(zhàn)項目,輕松應(yīng)對面試,專欄訂閱地址:https://blog.csdn.net/yuan2019035055/category_11466020.html 優(yōu)點 : 訂閱限時9.9付費專

    2024年03月19日
    瀏覽(25)
  • 基于node.js中的serialport模塊實現(xiàn)無線傳感網(wǎng)上位機功能

    基于node.js中的serialport模塊實現(xiàn)無線傳感網(wǎng)上位機功能

    半個月前的無線傳感網(wǎng)課設(shè)上位機的實現(xiàn)遇到了很多困難,特寫此文章給有需要的朋友一些幫助,歡迎私信探討 本文所要實現(xiàn)的功能以及使用到的技術(shù)棧 功能 :根據(jù)課設(shè)要求,當協(xié)調(diào)器收到信息時,我要解析收到的數(shù)據(jù),動態(tài)顯示出拓撲圖,當點擊拓撲圖節(jié)點時,顯示該節(jié)

    2024年02月11日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包