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

使用Selenium抓取網(wǎng)頁動(dòng)態(tài)內(nèi)容

這篇具有很好參考價(jià)值的文章主要介紹了使用Selenium抓取網(wǎng)頁動(dòng)態(tài)內(nèi)容。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

Selenium 介紹

Selenium 是一個(gè)自動(dòng)化測(cè)試工具,支持多種瀏覽器,包括 Chrome、Firefox、Edge 等,具有強(qiáng)大的瀏覽器自動(dòng)化能力,可以用于Web應(yīng)用程序的自動(dòng)化測(cè)試、數(shù)據(jù)挖掘等領(lǐng)域。Selenium的主要特點(diǎn)有:

支持多種瀏覽器

Selenium支持多種瀏覽器,包括Chrome、Firefox、Edge、Safari等,可以滿足不同用戶的需求。

多種編程語言支持

Selenium支持多種編程語言,如Python、Java、Ruby等,用戶可以選擇自己熟悉的編程語言進(jìn)行開發(fā)。

自動(dòng)化表單填寫、模擬點(diǎn)擊、頁面滾動(dòng)等操作

使用Selenium,用戶可以自動(dòng)化進(jìn)行表單填寫、模擬點(diǎn)擊、頁面滾動(dòng)等操作,可以大大提高工作效率。

處理JavaScript、Ajax、動(dòng)態(tài)頁面等特殊情況

Selenium可以處理JavaScript、Ajax、動(dòng)態(tài)頁面等特殊情況,可以更好地模擬用戶行為。

模擬用戶行為,處理彈窗、Alert等特殊情況

Selenium可以模擬用戶行為,如鼠標(biāo)移動(dòng)、鍵盤輸入等,并可以處理彈窗、Alert等特殊情況,可以更加貼近真實(shí)用戶的使用情況。

使用 Selenium

安裝

如果你使用的是 Python,可以通過 pip 安裝 Selenium:

pip install selenium

同時(shí)還需要安裝瀏覽器驅(qū)動(dòng),比如 Chrome 驅(qū)動(dòng),可以從官方網(wǎng)站下載。下載后解壓縮,把 chromedriver.exe 文件放到 Python 的安裝目錄下即可,例如 C:\Python39。

基本操作

通過 Selenium 可以模擬用戶在瀏覽器中的行為,例如打開指定的網(wǎng)頁、填寫表單、點(diǎn)擊按鈕等。下面的代碼演示了如何使用 Selenium 打開百度首頁,并在搜索框中輸入“Python”,然后點(diǎn)擊“百度一下”按鈕,最后截屏保存結(jié)果。

from selenium import webdriver

# 創(chuàng)建 Chrome 瀏覽器對(duì)象
browser = webdriver.Chrome()

# 加載頁面
browser.get('<https://www.baidu.com>')

# 找到搜索框并輸入關(guān)鍵字
kw_input = browser.find_element_by_id('kw')
kw_input.send_keys('Python')

# 找到“百度一下”按鈕并點(diǎn)擊
su_button = browser.find_element_by_id('su')
su_button.click()

# 截屏并保存結(jié)果
browser.get_screenshot_as_file('baidu_result.png')

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

等待頁面元素

在使用 Selenium 時(shí),我們需要注意網(wǎng)頁中的元素可能是動(dòng)態(tài)生成的,在我們使用find_elementfind_elements方法獲取的時(shí)候,可能還沒有完成渲染,這時(shí)會(huì)引發(fā)NoSuchElementException錯(cuò)誤。為了解決這個(gè)問題,我們可以使用隱式等待的方式,通過設(shè)置等待時(shí)間讓瀏覽器完成對(duì)頁面元素的渲染。除此之外,我們還可以使用顯示等待,通過創(chuàng)建WebDriverWait對(duì)象,并設(shè)置等待時(shí)間和條件,當(dāng)條件沒有滿足時(shí),我們可以先等待再嘗試進(jìn)行后續(xù)的操作,具體的代碼如下所示。

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.support.wait import WebDriverWait

# 創(chuàng)建 Chrome 瀏覽器對(duì)象
browser = webdriver.Chrome()

# 加載頁面
browser.get('<https://www.baidu.com>')

# 設(shè)置隱式等待時(shí)間為10秒
browser.implicitly_wait(10)

# 找到搜索框并輸入

元素定位

在使用Selenium時(shí),元素定位是非常重要的操作。通過元素定位,可以找到需要操作的元素,并進(jìn)行后續(xù)的操作。Selenium支持多種元素定位方式,如下所示:

ID

elem = driver.find_element_by_id("id")

Name

elem = driver.find_element_by_name("name")

Class Name

elem = driver.find_element_by_class_name("class")

Tag Name

elem = driver.find_element_by_tag_name("tag")

Link Text

elem = driver.find_element_by_link_text("text")

Partial Link Text

elem = driver.find_element_by_partial_link_text("text")

CSS Selector

elem = driver.find_element_by_css_selector("selector")

XPath

elem = driver.find_element_by_xpath("xpath")

API參考

Selenium提供了豐富的API,使得用戶可以靈活地進(jìn)行自動(dòng)化測(cè)試和數(shù)據(jù)挖掘等操作。下面是一些常用的API:

WebDriver API

WebDriver API是Selenium的核心API,提供了瀏覽器控制相關(guān)的操作。常用方法如下所示:

get(url)

加載指定的URL。

browser.get('<http://www.baidu.com>')

back()

返回上一頁。

browser.back()

forward()

前進(jìn)到下一頁。

browser.forward()

refresh()

刷新當(dāng)前頁面。

browser.refresh()

close()

關(guān)閉當(dāng)前窗口。

browser.close()

quit()

退出瀏覽器。

browser.quit()

WebElement API

WebElement API提供了對(duì)頁面元素的操作。常用方法如下所示:

click()

點(diǎn)擊元素。

elem = browser.find_element_by_id('button')
elem.click()

send_keys()

向元素發(fā)送文本。

elem = browser.find_element_by_id('input')
elem.send_keys('Hello, World!')

clear()

清空元素文本。

elem = browser.find_element_by_id('input')
elem.clear()

get_attribute(name)

獲取元素的屬性值。

elem = browser.find_element_by_id('input')
attr_value = elem.get_attribute('name')

is_displayed()

判斷元素是否對(duì)于用戶可見。

elem = browser.find_element_by_id('input')
is_visible = elem.is_displayed()

is_enabled()

判斷元素是否處于可用狀態(tài)。

elem = browser.find_element_by_id('button')
is_enabled = elem.is_enabled()

is_selected()

判斷元素(單選框和復(fù)選框)是否被選中。

elem = browser.find_element_by_id('checkbox')
is_selected = elem.is_selected()

value_of_css_property(property_name)

獲取指定的CSS屬性值。

elem = browser.find_element_by_id('button')
color = elem.value_of_css_property('color')

find_element(by=By.ID, value=None)

獲取單個(gè)子元素。

elem = browser.find_element(By.CSS_SELECTOR, '.item')

find_elements(by=By.ID, value=None)

獲取一系列子元素。

elems = browser.find_elements(By.CSS_SELECTOR, '.items')

screenshot(filename)

為元素生成快照。

elem = browser.find_element_by_id('input')
elem.screenshot('input.png')

簡(jiǎn)單案例

下面的例子演示了如何使用 Selenium 從“360圖片”網(wǎng)站搜索和下載圖片。

import os
import time
from concurrent.futures import ThreadPoolExecutor
import requests
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys

DOWNLOAD_PATH = 'images/'

def download_picture(picture_url: str):
    """
    下載保存圖片
    :param picture_url: 圖片的URL
    """
    filename = picture_url[picture_url.rfind('/') + 1:]
    resp = requests.get(picture_url)
    with open(os.path.join(DOWNLOAD_PATH, filename), 'wb') as file:
        file.write(resp.content)

if not os.path.exists(DOWNLOAD_PATH):
    os.makedirs(DOWNLOAD_PATH)
browser = webdriver.Chrome()
browser.get('<https://image.so.com/z?ch=beauty>')
browser.implicitly_wait(10)
kw_input = browser.find_element(By.CSS_SELECTOR, 'input[name=q]')
kw_input.send_keys('蒼老師')
kw_input.send_keys(Keys.ENTER)
for _ in range(10):
    browser.execute_script(
        'document.documentElement.scrollTop = document.documentElement.scrollHeight'
    )
    time.sleep(1)
imgs = browser.find_elements(By.CSS_SELECTOR, 'div.waterfall img')
with ThreadPoolExecutor(max_workers=32) as pool:
    for img in imgs:
        pic_url = img.get_attribute('src')
        pool.submit(download_picture, pic_url)

運(yùn)行上面的代碼,檢查指定的目錄下是否下載了根據(jù)關(guān)鍵詞搜索到的圖片。

綜上所述,Selenium是一款強(qiáng)大的自動(dòng)化測(cè)試工具,可以用于Web應(yīng)用程序的自動(dòng)化測(cè)試、數(shù)據(jù)挖掘等領(lǐng)域。通過掌握Selenium的使用方法和API參考,你可以更加高效地進(jìn)行自動(dòng)化測(cè)試和數(shù)據(jù)挖掘等操作,提高工作效率。文章來源地址http://www.zghlxwxcb.cn/news/detail-424629.html

到了這里,關(guān)于使用Selenium抓取網(wǎng)頁動(dòng)態(tài)內(nèi)容的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 如何使用Python的Selenium庫進(jìn)行網(wǎng)頁抓取和JSON解析

    如何使用Python的Selenium庫進(jìn)行網(wǎng)頁抓取和JSON解析

    隨著互聯(lián)網(wǎng)的快速發(fā)展,網(wǎng)頁抓取和數(shù)據(jù)解析在許多行業(yè)中變得越來越重要。無論是電子商務(wù)、金融、社交媒體還是市場(chǎng)調(diào)研,都需要從網(wǎng)頁中獲取數(shù)據(jù)并進(jìn)行分析。Python的Selenium庫作為一種自動(dòng)化測(cè)試工具,已經(jīng)成為許多開發(fā)者的首選,因?yàn)樗峁┝藦?qiáng)大的功能和靈活性。

    2024年02月10日
    瀏覽(150)
  • 爬蟲:使用Selenium模擬人工操作及獲取網(wǎng)頁內(nèi)容

    結(jié)合自身經(jīng)驗(yàn)和內(nèi)部資料總結(jié)的Python教程,每天3-5章,最短1個(gè)月就能全方位的完成Python的學(xué)習(xí)并進(jìn)行實(shí)戰(zhàn)開發(fā),學(xué)完了定能成為大佬!加油吧!卷起來! 全部文章請(qǐng)?jiān)L問專欄:《Python全棧教程(0基礎(chǔ))》 再推薦一下最近熱更的:《大廠測(cè)試高頻面試題詳解》 該專欄對(duì)近年

    2024年02月13日
    瀏覽(24)
  • 爬蟲(三):使用Selenium模擬人工操作及獲取網(wǎng)頁內(nèi)容

    結(jié)合自身經(jīng)驗(yàn)和內(nèi)部資料總結(jié)的Python教程,每天3-5章,最短1個(gè)月就能全方位的完成Python的學(xué)習(xí)并進(jìn)行實(shí)戰(zhàn)開發(fā),學(xué)完了定能成為大佬!加油吧!卷起來! 全部文章請(qǐng)?jiān)L問專欄:《Python全棧教程(0基礎(chǔ))》 再推薦一下最近熱更的:《大廠測(cè)試高頻面試題詳解》 該專欄對(duì)近年

    2024年02月11日
    瀏覽(17)
  • Python使用Selenium Webdriver爬取網(wǎng)頁所有內(nèi)容

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

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

    2023年04月08日
    瀏覽(31)
  • Python Selenium繞過Cloudflare抓取網(wǎng)頁

    Cloudflare和很多其他網(wǎng)站一樣會(huì)檢測(cè)訪問是否為Selenium bot,其中一項(xiàng)為檢測(cè)Selenium運(yùn)行時(shí)出現(xiàn)的特有js變量。 這里主要包括了是否含有\(zhòng)\\"selenium\\\"/ \\\"webdriver\\\"的變量或者含有\(zhòng)\\"$cdc_\\\"/\\\"$wdc_\\\"的文件變量。 每個(gè)driver的檢測(cè)機(jī)制會(huì)不一樣,此處給出的方案基于chromedriver。 1. Undetected-chromedri

    2024年02月11日
    瀏覽(33)
  • 一個(gè)月學(xué)通Python(三十四):使用Selenium模擬人工操作及獲取網(wǎng)頁內(nèi)容

    結(jié)合自身經(jīng)驗(yàn)和內(nèi)部資料總結(jié)的Python教程,每天3-5章,最短1個(gè)月就能全方位的完成Python的學(xué)習(xí)并進(jìn)行實(shí)戰(zhàn)開發(fā),學(xué)完了定能成為大佬!加油吧!卷起來! 全部文章請(qǐng)?jiān)L問專欄:《Python全棧教程(0基礎(chǔ))》 再推薦一下最近熱更的:《大廠測(cè)試高頻面試題詳解》 該專欄對(duì)近年

    2024年02月13日
    瀏覽(28)
  • Python爬蟲基礎(chǔ)(三):使用Selenium動(dòng)態(tài)加載網(wǎng)頁

    Python爬蟲基礎(chǔ)(三):使用Selenium動(dòng)態(tài)加載網(wǎng)頁

    Python爬蟲基礎(chǔ)(一):urllib庫的使用詳解 Python爬蟲基礎(chǔ)(二):使用xpath與jsonpath解析爬取的數(shù)據(jù) Python爬蟲基礎(chǔ)(三):使用Selenium動(dòng)態(tài)加載網(wǎng)頁 Python爬蟲基礎(chǔ)(四):使用更方便的requests庫 Python爬蟲基礎(chǔ)(五):使用scrapy框架 (1)Selenium是一個(gè)用于Web應(yīng)用程序測(cè)試的工具。

    2024年02月06日
    瀏覽(30)
  • lwip-2.1.3自帶的httpd網(wǎng)頁服務(wù)器使用教程(二)使用SSI動(dòng)態(tài)生成網(wǎng)頁部分內(nèi)容

    lwip-2.1.3自帶的httpd網(wǎng)頁服務(wù)器使用教程(二)使用SSI動(dòng)態(tài)生成網(wǎng)頁部分內(nèi)容

    上一篇:lwip-2.1.3自帶的httpd網(wǎng)頁服務(wù)器使用教程(一)從SD卡讀取網(wǎng)頁文件并顯示 (本節(jié)例程名稱:ssi_test) 電腦上用的Web服務(wù)器采用ASP、PHP或JSP動(dòng)態(tài)網(wǎng)頁技術(shù)后,可以根據(jù)HTTP模板(asp、php或jsp文件),動(dòng)態(tài)替換掉網(wǎng)頁中的% %或?php ?標(biāo)簽,生成動(dòng)態(tài)網(wǎng)頁。lwip自帶的httpd也有類

    2024年02月10日
    瀏覽(28)
  • Python網(wǎng)絡(luò)爬蟲逆向分析爬取動(dòng)態(tài)網(wǎng)頁、使用Selenium庫爬取動(dòng)態(tài)網(wǎng)頁、?編輯將數(shù)據(jù)存儲(chǔ)入MongoDB數(shù)據(jù)庫

    Python網(wǎng)絡(luò)爬蟲逆向分析爬取動(dòng)態(tài)網(wǎng)頁、使用Selenium庫爬取動(dòng)態(tài)網(wǎng)頁、?編輯將數(shù)據(jù)存儲(chǔ)入MongoDB數(shù)據(jù)庫

    目錄 逆向分析爬取動(dòng)態(tài)網(wǎng)頁 了解靜態(tài)網(wǎng)頁和動(dòng)態(tài)網(wǎng)頁區(qū)別 1.判斷靜態(tài)網(wǎng)頁 ?2.判斷動(dòng)態(tài)網(wǎng)頁 ?逆向分析爬取動(dòng)態(tài)網(wǎng)頁 使用Selenium庫爬取動(dòng)態(tài)網(wǎng)頁 安裝Selenium庫以及下載瀏覽器補(bǔ)丁 頁面等待 ?頁面操作 1.填充表單 2.執(zhí)行JavaScript 元素選取 Selenium庫的find_element的語法使用格式如下

    2024年02月15日
    瀏覽(65)
  • 小白用chatgpt編寫python 爬蟲程序代碼 抓取網(wǎng)頁數(shù)據(jù)(js動(dòng)態(tài)生成網(wǎng)頁元素)

    小白用chatgpt編寫python 爬蟲程序代碼 抓取網(wǎng)頁數(shù)據(jù)(js動(dòng)態(tài)生成網(wǎng)頁元素)

    jS動(dòng)態(tài)生成,由于呈現(xiàn)在網(wǎng)頁上的內(nèi)容是由JS生成而來,我們能夠在瀏覽器上看得到,但是在HTML源碼中卻發(fā)現(xiàn)不了 ? ? ? ?如果不加,如果網(wǎng)站有防爬技術(shù),比如頻繁訪問,后面你會(huì)發(fā)現(xiàn)什么數(shù)據(jù)都取不到 User-Agent獲取地方: ?網(wǎng)頁獲取位置: 使用代理IP解決反爬。(免費(fèi)代理

    2024年02月01日
    瀏覽(31)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包