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

基于Selenium技術(shù)方案的爬取界面內(nèi)容實踐

這篇具有很好參考價值的文章主要介紹了基于Selenium技術(shù)方案的爬取界面內(nèi)容實踐。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1. 定位頁面(多窗口切換)

WebDriver提供了處理多個窗口的能力,這是通過使用“WebDriver.switchTo.window()”方法來切換到已知名稱的窗口來實現(xiàn)的。如果名稱未知,您可以使用“WebDriver.getWindowHandles()”獲取已知窗口列表。您可以將句柄傳遞給switchTo.window()。

  • 獲取當(dāng)前窗口句柄
    driver.current_window_handle

  • 返回的所有窗口的句柄到當(dāng)前會話
    driver.window_handles

  • 切換窗口,可以實現(xiàn)在不同的窗口之間切換。
    switch_to.window()

示例代碼:

# 模擬按下回車鍵進(jìn)行搜索
search_box.send_keys(Keys.RETURN)
# 等待頁面加載
driver.implicitly_wait(15)
# 切換新窗口
window_handles = driver.window_handles
driver.switch_to.window(window_handles[1])

2. 定位界面元素

WebDriver中的find_element() 方法用來查找元素,并返回 WebElement 對象。其中,find_element是直接WebElement 對象,find_elements是直接WebElement 對象的列表(list),也就是多個對象(需要注意)。

詳細(xì)內(nèi)容參考官方文檔,https://www.selenium.dev/documentation/webdriver/elements/。舉例介紹如下:

基于Selenium技術(shù)方案的爬取界面內(nèi)容實踐,數(shù)據(jù)分析,Python,selenium,測試工具,python,數(shù)據(jù)采集

<html>
<body>
<style>
.information {
  background-color: white;
  color: black;
  padding: 8px;
}
</style>

<h2>Contact Selenium</h2>

<form action="/action_page.php">
  <input type="radio" name="gender" value="m" />Male &nbsp;
  <input type="radio" name="gender" value="f" />Female <br>
  <br>
  <label for="fname">First name:</label>
  <input class="information" type="text" id="fname" name="fname" value="Jane"><br><br>
  <label for="lname">Last name:</label>
  <input class="information" type="text" id="lname" name="lname" value="Doe"><br><br>
  <label for="newsletter">Newsletter:</label>
  <input type="checkbox" name="newsletter" value="1" /><br><br>
  <input type="submit" value="Submit">
</form> 

<p>To know more about Selenium, visit the official page 
<a href ="www.selenium.dev">Selenium Official Page</a> 
</p>

<div id='adddiv'>增加div看看</div>

</body>
</html>
定位方式 By 說明
id By.ID 定位ID屬性與搜索值匹配的元素
name By.NAME 定位NAME屬性與搜索值匹配的元素
class_name By.CLASS_NAME 定位具有包含搜索值的類名的元素(不允許使用復(fù)合類名)
tag_name By.TAG_NAME 定位標(biāo)簽名與搜索值匹配的元素
link_text By.LINK_TEXT 定位可見文本與搜索值匹配的錨點元素
partial_link_text By.PARTIAL_LINK_TEXT 定位可見文本部分與搜索值匹配的錨點元素
css_selector By.CSS_SELECTOR 定位與CSS選擇器匹配的元素
xpath By.XPATH 定位與XPath表達(dá)式匹配的元素

class name

HTML頁面的Web元素可以具有class屬性。在上面的HTML代碼片段中可以看到一個示例。我們可以使用Selenium中的class name定位器來識別這些元素。

    driver = webdriver.Chrome()
	driver.find_element(By.CLASS_NAME, "information")
  

css selector

CSS是用于樣式化HTML頁面的語言。我們可以使用css selector定位器策略來識別頁面上的元素。如果元素具有id,則創(chuàng)建定位器為css = #id。否則,我們遵循的格式是css =[attribute=value]。讓我們從上面的HTML代碼片段中看一個示例。我們將使用css為First Name文本框創(chuàng)建定位器。

	driver.find_element(By.CSS_SELECTOR, "#fname")

xpath

HTML文檔可以被視為XML文檔,然后我們可以使用xpath來定位感興趣的元素。XPath是從文檔的根開始遍歷的路徑,可以是絕對XPath或相對XPath。例如,/html/form/input[1]將返回男性單選按鈕?;蛘遆Path也可以是相對的,例如//input[@name=‘fname’]將返回名字文本框。讓我們使用xpath為女性單選按鈕創(chuàng)建定位器。

	driver.find_element(By.XPATH, "http://input[@value='f']")

3. 操作

3.1. 鍵盤操作

鍵盤操作是指與網(wǎng)頁交互的任何鍵輸入設(shè)備的一種表示。使用鍵盤只能完成兩項操作:按下一個鍵和釋放按下的鍵。除了支持ASCII字符外,每個鍵盤按鍵都有指定的序列來表示可以按下或釋放。

例如,輸入關(guān)鍵字,按下回車鍵搜索。

	# 在搜索框中輸入關(guān)鍵詞
	search_box.send_keys("selenium")
	# 模擬按下回車鍵進(jìn)行搜索
	search_box.send_keys(Keys.RETURN)

3.2. 鼠標(biāo)鍵操作

鼠標(biāo)操作是指與網(wǎng)頁交互的任何指針設(shè)備的一種表示。使用鼠標(biāo)只能完成三項操作:按下一個按鈕、釋放按下的按鈕和移動鼠標(biāo)。Selenium提供了方便的方法,將這些動作以最常見的方式組合在一起。

這種方法結(jié)合了將鼠標(biāo)移動到元素的中心并按下和釋放鼠標(biāo)左鍵的動作,否則稱為“點擊”。

	# 模擬用鼠標(biāo)點擊鏈接操作
	clickable = driver.find_element(By.LINK_TEXT, "哈爾濱")
	ActionChains(driver).click(clickable ).perform()

3.3. 界面加載等待

driver.implicitly_wait(n),n是設(shè)置時長,單位為秒。

隱性等待設(shè)置了一個時間,在一段時間內(nèi)網(wǎng)頁是否加載完成,如果完成了,就進(jìn)行下一步,在設(shè)置的時間內(nèi)沒有加載完成,則會報超時加載。

另外一點,隱性等待的設(shè)置是全局性的,在開頭設(shè)置過之后,整個的程序運(yùn)行過程中都會有效,都會等待頁面加載完成,不需要每次設(shè)置一遍。

4. 小結(jié)

完整代碼示例:

from selenium import webdriver
from selenium.webdriver import Keys, ActionChains
from selenium.webdriver.common.by import By

driver = webdriver.Chrome() 

url = 'https://www.****'
driver.get(url)
driver.maximize_window()

search_box = driver.find_element(By.LINK_TEXT, "哈爾濱")
ActionChains(driver).click(search_box).perform()
driver.implicitly_wait(10)

# 獲取搜索框元素
search_box = driver.find_element(By.ID ,"search-input")   # 按ID查詢

# 在搜索框中輸入關(guān)鍵詞
search_box.send_keys("群力家園(C區(qū))")
# 模擬按下回車鍵進(jìn)行搜索
search_box.send_keys(Keys.RETURN)

# 切換新窗口
window_handles = driver.window_handles
driver.switch_to.window(window_handles[1])
# 定位詳細(xì)鏈接
xpath = "http://*[@id='esfMain']/section/div/div/a"
driver.find_element(By.XPATH, xpath).click()
# 再切換窗口
window_handles = driver.window_handles
driver.switch_to.window(window_handles[3])
# 獲取詳細(xì)數(shù)據(jù)
selector2 = "#__layout > div > div.props-main.w-1170 > div.props-body > div.props-right > div.maininfo > div.info > div"
search_results2 = driver.find_element(By.CSS_SELECTOR, selector2)
search_results2.text

使用Selenium工具可以模擬人工操作應(yīng)用,完成相應(yīng)工作,以此提高工作效率。從技術(shù)角度來看,Selenium還是比較容易實現(xiàn)的。

參考:

測試界的飄柔. Selenium實現(xiàn)多頁面切換. CSDN博客. 2023.07
肖永威. 基于Selenium技術(shù)方案的爬蟲入門實踐. CSDN博客. 2023.08文章來源地址http://www.zghlxwxcb.cn/news/detail-666661.html

到了這里,關(guān)于基于Selenium技術(shù)方案的爬取界面內(nèi)容實踐的文章就介紹完了。如果您還想了解更多內(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ìn)行投訴反饋,一經(jīng)查實,立即刪除!

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

相關(guān)文章

  • Python使用Selenium Webdriver爬取網(wǎng)頁所有內(nèi)容

    Python使用Selenium Webdriver爬取網(wǎng)頁所有內(nèi)容

    有時候,我們在用urllib或者requests庫抓取頁面時,得到的html源代碼和瀏覽器中看到的不一樣。這將是我們面臨的一個非常常見的問題?,F(xiàn)在網(wǎng)頁越來越多地采用Ajax、前端模塊化工具來構(gòu)建,整個網(wǎng)頁可能都是由JavaScript渲染出來的,也就是說原始的HTML代碼可能就是一個空殼,

    2023年04月08日
    瀏覽(31)
  • 【爬蟲】7.1. JavaScript動態(tài)渲染界面爬取-Selenium

    引言:在學(xué)習(xí)這一章之前,若之前對于Ajax數(shù)據(jù)的分析和爬取有過了解的會知道,Ajax是JavaScript動態(tài)渲染界面的一種情形,通過直接分析Ajax,使我們?nèi)匀豢梢越柚鷕equests或urllib實現(xiàn)數(shù)據(jù)爬取。不過JavaScript動態(tài)渲染的界面不止Ajax一種,而且在實際中Ajax接口中會含有很多加密參數(shù)

    2024年02月09日
    瀏覽(19)
  • 【爬蟲】7.2. JavaScript動態(tài)渲染界面爬取-Selenium實戰(zhàn)

    爬取的網(wǎng)頁為:https://spa2.scrape.center,里面的內(nèi)容都是通過Ajax渲染出來的,在分析xhr時候發(fā)現(xiàn)url里面有token參數(shù),所有我們使用selenium自動化工具來爬取JavaScript渲染的界面。

    2024年02月10日
    瀏覽(23)
  • 【爬蟲項目-4】微博超話內(nèi)容爬取/selenium使用教學(xué)

    【爬蟲項目-4】微博超話內(nèi)容爬取/selenium使用教學(xué)

    閑來無事想了解王者榮耀某個英雄最近的風(fēng)評,例如是版本之子嗎or出裝怎么搭配or大家對策劃這次改動有何看法,發(fā)現(xiàn)微博超話這方面的內(nèi)容非常多,于是想把超話內(nèi)容爬取下來做進(jìn)一步數(shù)據(jù)分析。溫馨提示 本代碼可以適用于任何微博超話內(nèi)容的爬取,只需修改url即可。 可

    2024年04月17日
    瀏覽(35)
  • python通過selenium獲取輸入框的文本值爬取編輯框內(nèi)容

    python通過selenium獲取輸入框的文本值爬取編輯框內(nèi)容

    以百度首頁的輸入框為例,當(dāng)輸入‘你好‘后,html中的value的值會變成‘你好’ 運(yùn)行代碼得到以下效果

    2024年02月04日
    瀏覽(34)
  • 利用scrapy框架對etherscan.io中給定Block范圍內(nèi)的交易信息的爬取

    利用scrapy框架對etherscan.io中給定Block范圍內(nèi)的交易信息的爬取

    一、 背景介紹 Etherscan 是 2015 年推出的一個以太坊區(qū)塊探索和分析的分布式智能合同平臺, 由于區(qū)塊鏈中的交易信息等數(shù)據(jù)都是公開透明的 , 而 Etherscan 作為探索以太坊的窗口, 用戶可以使用其查看自己的交易詳情以及以太坊中的任何信息。 我們都有過這樣的經(jīng)歷, 打開 taoba

    2024年02月12日
    瀏覽(23)
  • 開源的可視化爬蟲易采集EasySpider:如何無代碼可視化的爬取需要登錄才能爬的網(wǎng)站

    開源的可視化爬蟲易采集EasySpider:如何無代碼可視化的爬取需要登錄才能爬的網(wǎng)站

    一個可視化爬蟲軟件,可以使用圖形化界面,無代碼可視化的設(shè)計和執(zhí)行爬蟲任務(wù)。只需要在網(wǎng)頁上選擇自己想要爬的內(nèi)容并根據(jù)提示框操作即可完成爬蟲設(shè)計和執(zhí)行。同時軟件還可以單獨(dú)以命令行的方式進(jìn)行執(zhí)行,從而可以很方便的嵌入到其他系統(tǒng)中。 EasySpider 是一種無代

    2024年02月15日
    瀏覽(17)
  • python通過selenium爬取網(wǎng)頁信息,python獲取瀏覽器請求內(nèi)容,控制已經(jīng)打開的瀏覽器

    python通過selenium爬取網(wǎng)頁信息,python獲取瀏覽器請求內(nèi)容,控制已經(jīng)打開的瀏覽器

    背景:通過python中直接get或者urlopen打開一些有延遲加載數(shù)據(jù)的網(wǎng)頁,會抓取不到部分信息。 1. 命令行打開chrome,并開啟調(diào)試端口 (前提,找到chrome安裝目錄,找到chrome.exe所在路徑,添加到環(huán)境變量中,例如我的是C:Program FilesGoogleChromeApplication) remote-debugging-port指定遠(yuǎn)程調(diào)試

    2024年02月16日
    瀏覽(97)
  • python 使用selenium等爬蟲技術(shù)爬取某華網(wǎng)

    python 使用selenium等爬蟲技術(shù)爬取某華網(wǎng)

    本程序可以根據(jù)時間要求獲取某華網(wǎng)上不同模塊的新聞內(nèi)容,時間要求包括設(shè)置截止日期,以及時間間隔,比如說獲取距離2023-04-20一天以內(nèi)的新聞。主要使用了selenium有關(guān)的爬蟲技術(shù),具體實現(xiàn)如下: 目錄 目錄 一、SpiderXinhua類的基礎(chǔ)屬性 二、日期獲取與格式轉(zhuǎn)換的函數(shù)ti

    2024年01月16日
    瀏覽(31)
  • 基于selenium爬取去哪兒酒店信息

    基于selenium爬取去哪兒酒店信息

    去哪兒網(wǎng)站中,要爬取旅游的酒店信息,我們用通常的requests庫進(jìn)行爬取的時候發(fā)現(xiàn),當(dāng)我們要翻頁的時候網(wǎng)址未出現(xiàn)變化,返回的網(wǎng)頁源碼信息始終只有第一頁的內(nèi)容,那么有沒有一種方式可以使得能夠翻頁爬取呢?這時候我們要用爬蟲常用的selenium框架進(jìn)行爬取了,下面就

    2024年02月09日
    瀏覽(18)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包