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

Python與Selenium庫(含爬蟲實(shí)戰(zhàn)例子)

這篇具有很好參考價值的文章主要介紹了Python與Selenium庫(含爬蟲實(shí)戰(zhàn)例子)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

Python與Selenium庫

簡介

Selenium是一個自動化測試工具,利用它可以驅(qū)動瀏覽器模擬用戶在頁面上的操作,例如:點(diǎn)擊,輸入,選擇等行為,使我們可以通過編寫Python腳本來進(jìn)行web頁面的自動化測試。

安裝Selenium

Selenium包含三個部分:Selenium IDE、Selenium Grid和Selenium WebDriver,其中,Selenium WebDriver是我們所需要用到的,因?yàn)樗梢则?qū)動各種瀏覽器進(jìn)行頁面的自動化測試。

Selenium WebDriver包含多個瀏覽器驅(qū)動程序,比如:ChromeDriver、FireFoxDriver等,這些驅(qū)動程序可以根據(jù)個人需求進(jìn)行選擇,默認(rèn)情況下,Selenium WebDriver的驅(qū)動程序不包含在Java或Python庫中,因此我們需要先從如下地址下載對應(yīng)的ChromeDriver(以Chrome瀏覽器為例)。

下載地址:

https://sites.google.com/a/chromium.org/chromedriver/downloads

選擇與瀏覽器對應(yīng)的版本進(jìn)行下載,下載后將chromedriver.exe文件放到Python的路徑中,例如放入Python36\Scripts文件夾下(如果是其他瀏覽器,則下載對應(yīng)驅(qū)動進(jìn)行使用)。

安裝Selenium

pip install selenium

使用Selenium

下面我們將學(xué)習(xí)如何使用Selenium來進(jìn)行web頁面自動化測試。

打開瀏覽器

使用webdriver的類方法啟動所需瀏覽器。

打開Chrome瀏覽器:

from selenium import webdriver

driver = webdriver.Chrome()

訪問網(wǎng)站

使用get方法訪問所需的網(wǎng)站。

driver.get("http://www.baidu.com")

查找元素

根據(jù)元素的id、name、class等屬性定位元素,使用webdriver的find_element_by_*方法查找,返回一個WebElement對象。

from selenium.webdriver.common.by import By

element = driver.find_element(By.TAG_NAME, "input")

操作元素

可以對找到的元素進(jìn)行不同的操作,例如:輸入文本、點(diǎn)擊、選擇等行為。

input_element = driver.find_element(By.NAME, "wd")
input_element.send_keys("Selenium")
# 提交搜索
submit_element = driver.find_element(By.ID, "su")
submit_element.click()

等待

在訪問某些網(wǎng)站時,網(wǎng)站可能需要一些時間來加載頁面或元素,此時我們可以使用Selenium提供的等待機(jī)制,以確保所需元素的出現(xiàn)和交互行為的完成。

Selenium提供了兩種等待方式:

  • 隱式等待(Implicit Wait):如果找到元素不存在,等待一定時間后拋出異常,使用方法driver.implicitly_wait(seconds);
  • 顯式等待(Explit Wait):在給定的時間內(nèi)等待指定的條件出現(xiàn),可以自定義等待的條件,等待超時后拋出異常,使用方法WebDriverWait(driver, timeout, poll_frequency=500, ignored_exceptions=None).until(expected_conditions.條件)。
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 等待元素出現(xiàn)
try:
    # 顯式等待
    WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "content_left")))
    # 隱式等待
    # driver.implicitly_wait(10)
except Exception:
    print("元素未找到")

關(guān)閉瀏覽器

在自動測試過程中,需要在最后關(guān)閉瀏覽器。

driver.quit()

示例代碼

下面是一個完整的示例代碼。該代碼實(shí)現(xiàn)了打開百度首頁,輸入文本,點(diǎn)擊搜索按鈕,等待結(jié)果出現(xiàn)并打印第一條搜索結(jié)果的標(biāo)題。

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 啟動瀏覽器
driver = webdriver.Chrome()

# 訪問網(wǎng)站
driver.get("http://www.baidu.com")

# 輸入搜索文本
input_element = driver.find_element(By.NAME, "wd")
input_element.send_keys("Selenium")

# 點(diǎn)擊搜索
submit_element = driver.find_element(By.ID, "su")
submit_element.click()

# 顯式等待
try:
    WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "content_left")))
except Exception:
    print("元素未找到")

# 查找元素
result_element = driver.find_element(By.CSS_SELECTOR, "#content_left div.c-container h3.t a")

# 打印第一條搜索結(jié)果的標(biāo)題
print(result_element.text)

# 關(guān)閉瀏覽器
driver.quit()

總結(jié)

通過Python與Selenium的結(jié)合,我們可以進(jìn)行網(wǎng)站自動化測試,實(shí)現(xiàn)自動化輸入、點(diǎn)擊、選擇等行為,以及對搜索結(jié)果進(jìn)行定位和獲取等操作,從而提高測試效率和可靠性,也可以應(yīng)用于爬蟲程序中。

爬蟲實(shí)戰(zhàn)

批量獲取bing圖片搜索引擎中的歐美頭像

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
driver = webdriver.Safari()#選擇驅(qū)動selenium和python的關(guān)系,python,爬蟲,selenium

driver.get("https://www.bing.com/images")

# 找到搜索框并輸入關(guān)鍵字
search_box = driver.find_element(By.NAME,"q")
search_box.send_keys("歐美頭像")
search_box.send_keys(Keys.RETURN)

# 等待頁面加載完成
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "mmComponent_images_1")))

# 模擬下拉到底部的操作,讓更多的圖片顯示出來
SCROLL_PAUSE_TIME = 1
last_height = driver.execute_script("return document.body.scrollHeight")
while True:
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    time.sleep(SCROLL_PAUSE_TIME)
    new_height = driver.execute_script("return document.body.scrollHeight")
    if new_height == last_height:
        break
    last_height = new_height

# 找到所有圖片的元素
images = driver.find_elements(By.XPATH,"http://img[contains(@class,'mimg')]")
urls = []
for image in images:
    # 僅保留縱橫比為1:1的圖片
    width = int(image.get_attribute("width"))
    height = int(image.get_attribute("height"))
    if width == height:
        url = image.get_attribute("src")
        urls.append(url)

# 輸出圖片url


# 關(guān)閉瀏覽器
driver.quit()

import urllib.request

# 保存圖片到本地
for i, url in enumerate(urls):
    urllib.request.urlretrieve(url, f"image_{i}.jpg")

selenium和python的關(guān)系,python,爬蟲,selenium文章來源地址http://www.zghlxwxcb.cn/news/detail-787871.html

到了這里,關(guān)于Python與Selenium庫(含爬蟲實(shí)戰(zhàn)例子)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 〖Python網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)?〗- Selenium節(jié)點(diǎn)

    訂閱:新手可以訂閱我的其他專欄。免費(fèi)階段訂閱量1000+ ????????????????python項(xiàng)目實(shí)戰(zhàn) ???????????????? Python編程基礎(chǔ)教程系列(零基礎(chǔ)小白搬磚逆襲) 說明:本專欄持續(xù)更新中,目前專欄免費(fèi)訂閱,在轉(zhuǎn)為付費(fèi)專欄前訂閱本專欄的,可以免費(fèi)訂閱付費(fèi)專欄,

    2024年02月13日
    瀏覽(14)
  • (十四)python網(wǎng)絡(luò)爬蟲(理論+實(shí)戰(zhàn))——爬蟲利器selenium詳解

    目錄 6?selenium的介紹和使用 ? ? ?6.1 爬蟲遇到的難點(diǎn)

    2023年04月08日
    瀏覽(43)
  • Python爬蟲之selenium深入解讀【從入門到實(shí)戰(zhàn)】

    Python爬蟲之selenium深入解讀【從入門到實(shí)戰(zhàn)】

    在爬蟲中占據(jù)比較重要的地位 是一種瀏覽器自動化的工具,所謂的自動化是指,我們可以通過代碼的形式制定一系列的行為動作,然后執(zhí)行代碼,這些動作就會同步觸發(fā)在瀏覽器中。 我們在抓取一些普通網(wǎng)頁的時候requests基本上是可以滿足的. 但是, 如果遇到一些特殊的網(wǎng)站

    2024年01月22日
    瀏覽(20)
  • python爬蟲實(shí)戰(zhàn) scrapy+selenium爬取動態(tài)網(wǎng)頁

    python爬蟲實(shí)戰(zhàn) scrapy+selenium爬取動態(tài)網(wǎng)頁

    最近學(xué)習(xí)了scrapy爬蟲框架,想要找個目標(biāo)練練手。由于現(xiàn)在很多網(wǎng)頁都是動態(tài)的,因此還需要配合selenium爬取。本文旨在記錄這次學(xué)習(xí)經(jīng)歷,如有疑問或不當(dāng)之處,可以在評論區(qū)指出,一起學(xué)習(xí)。 對scrapy不了解的同學(xué)可以閱讀這篇文章 爬蟲框架 Scrapy 詳解,對scrapy框架介紹的

    2024年02月07日
    瀏覽(51)
  • 〖Python網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)?〗- Selenium 的其他操作使用

    訂閱:新手可以訂閱我的其他專欄。免費(fèi)階段訂閱量1000+ ????????????????python項(xiàng)目實(shí)戰(zhàn) ???????????????? Python編程基礎(chǔ)教程系列(零基礎(chǔ)小白搬磚逆襲) 說明:本專欄持續(xù)更新中,目前專欄免費(fèi)訂閱,在轉(zhuǎn)為付費(fèi)專欄前訂閱本專欄的,可以免費(fèi)訂閱付費(fèi)專欄,

    2024年02月16日
    瀏覽(52)
  • Python爬蟲實(shí)戰(zhàn):selenium爬取電商平臺商品數(shù)據(jù)(1)

    Python爬蟲實(shí)戰(zhàn):selenium爬取電商平臺商品數(shù)據(jù)(1)

    def index_page(page): “”\\\" 抓取索引頁 :param page: 頁碼 “”\\\" print(‘正在爬取第’, str(page), ‘頁數(shù)據(jù)’) try: url = ‘https://search.jd.com/Search?keyword=iPhoneev=exbrand_Apple’ driver.get(url) if page 1: input = driver.find_element_by_xpath(‘//*[@id=“J_bottomPage”]/span[2]/input’) button = driver.find_element_by_xpath(‘

    2024年04月28日
    瀏覽(39)
  • Python爬蟲實(shí)戰(zhàn)之爬淘寶商品--selenium+Xpath

    Python爬蟲實(shí)戰(zhàn)之爬淘寶商品--selenium+Xpath

    代碼鏈接 利用selenium來自動翻頁爬取淘寶商品的標(biāo)題,價格,銷量,產(chǎn)地信息。 導(dǎo)入庫: 注意自己配置好python環(huán)境(谷歌驅(qū)動…) 利用selenium,手動登錄獲取cookie保存在本地用于登錄平臺(便于測試代碼),訪問商品頁url通過Xpath選中對象拿數(shù)據(jù),翻頁,通過Xpath選中對象拿數(shù)據(jù),翻頁

    2024年02月04日
    瀏覽(25)
  • Python爬蟲實(shí)戰(zhàn)——Lazada商品數(shù)據(jù)(selenium自動化爬蟲,xpath定位)

    Python爬蟲實(shí)戰(zhàn)——Lazada商品數(shù)據(jù)(selenium自動化爬蟲,xpath定位)

    ? ? ? ? 在此說明,這個項(xiàng)目是我第一次真正去爬的一個網(wǎng)站,里面寫的代碼我自己都看不下去,但是已經(jīng)不想花時間去重構(gòu)了,所以看個樂呵就好,要噴也可以(下手輕一點(diǎn))。這篇文算是記錄我的學(xué)習(xí)中出現(xiàn)的一些問題,不建議拿來學(xué)習(xí)和真拿我的代碼去爬Lazada的數(shù)據(jù),

    2024年02月02日
    瀏覽(22)
  • 爬蟲實(shí)戰(zhàn)(一)Python+selenium自動化獲取數(shù)據(jù)存儲到Mysql中

    爬蟲實(shí)戰(zhàn)(一)Python+selenium自動化獲取數(shù)據(jù)存儲到Mysql中

    ??行話說得好,“爬蟲學(xué)得好,牢飯吃到飽!”哈哈博主是因這句話入的坑,不為別的就為邀大家一起鐵窗淚(bushi),本人雖小牛一只,但是喜愛搗鼓技術(shù),有興趣的小伙伴們可以共同探討,也歡迎各位大佬們的指點(diǎn),愿共同進(jìn)步! ??這次計劃是翻墻爬取外網(wǎng)某網(wǎng)站

    2024年01月17日
    瀏覽(34)
  • Python爬蟲基礎(chǔ)之Selenium詳解_python selenium

    Python爬蟲基礎(chǔ)之Selenium詳解_python selenium

    from selenium import webdriver from selenium.webdriver.common.by import By browser= webdriver.Chrome() url = ‘https://www.baidu.com’ browser.get(url) button = browser.find_element(By.ID, ‘su’) print(button) button = browser.find_element(By.NAME, ‘wd’) print(button) button = browser.find_element(By.XPATH, ‘//input[@id=“su”]’) print(button)

    2024年04月15日
    瀏覽(21)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包