整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          靜態網頁爬蟲①

          理數據

          前面我們說過了通過 requests 庫獲取數據,這里我們要說如何處理數據

          處理數據我們需要用到一個強大的第三方庫——BeautifulSoup !

          “美味的湯,綠色的濃湯,在熱氣騰騰的蓋碗里裝!誰不愿意嘗一嘗,這樣的好湯?晚餐用的湯,美味的湯!”

          BeautifulSoup 庫的名字取自劉易斯·卡羅爾在《愛麗絲夢游仙境》里的同名詩歌。就像它在仙境中的說法一樣,BeautifulSoup 嘗試化平淡為神奇。它通過定位 HTML 標簽來格式化和組織復雜的網頁源代碼,用簡單易用的 Python 對象為我們展現出 HTML 結構信息。

          處理數據分為兩步:

          解析數據:將網頁源代碼解析成 Python 能“讀懂”的格式

          提取數據:將網頁源代碼中無關數據過濾掉,只提取出我們所需要的數據

          解析數據

          我們以豆瓣讀書 Top250 為例,它的網址是:https://book.douban.com/top250。

          我們來看看如何將其網頁源代碼解析成 BeautifulSoup 對象:

          import requests
          from bs4 import BeautifulSoup
          
          headers = {
            'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36'
          }
          res = requests.get('https://book.douban.com/top250', headers=headers)
          soup = BeautifulSoup(res.text, 'html.parser')

          Tips:相比之前我們添加 headers 參數,這是為了應對豆瓣的反爬蟲機制。

          我們通過 from bs4 import BeautifulSoup 語句導入 BeautifulSoup,然后使用 BeautifulSoup(res.text, 'html.parser') 語句將網頁源代碼的字符串形式解析成了 BeautifulSoup 對象。

          創建 BeautifulSoup 對象時需要傳入兩個參數,第一個參數是要解析的 HTML 文本,即網站源代碼的字符串形式(res.text)。第二個參數是 解析HTML 的解析器,html.parser 是 Python 中內置的解析器,較為簡單方便.


          我們將網頁源代碼解析成了 BeautifulSoup 對象,如果我們將他打印出來會發現竟然和原來的網頁源代碼(也就是 res.text)一模一樣!既然都一樣,我們何苦費這么大力將網頁源代碼解析成 BeautifulSoup 對象 呢?

          相比字符串,BeautifulSoup 對象 里有很多強大的方法和屬性。通過這些方法和屬性,我們就能方便快捷地提取出我們所需要的數據。

          提取數據

          BeautifulSoup 對象 里的方法和屬性有很多,我們這里只提及其中最常用的一些,這些足以應付大多數場景。

          find() 方法和 find_all() 方法

          BeautifulSoup 對象 里的 find() 和 find_all() 是我們提取數據最常用的兩個方法。借助它們,我們可以過濾掉 HTML 頁面里的無用數據,輕松地找到我們需要的數據。

          我們來看一下 find() 和 find_all() 的作用和區別:


          我們可以通過例子來更好地理解他們:
          假設我們獲取到的網頁源代碼如下:

          <div class="content">
            <a href="https://douban.com">登錄/注冊</a>
            <h1>豆瓣讀書 Top 250</h1>
            <div class="artile">
              <a href="https://movie.douban.com">豆瓣電影</a>
              <div class="item">
                <a href="https://book.douban.com/subject/1770782/">追風箏的人</a>
              </div>
              <div class="item">
                <a href="https://book.douban.com/subject/25862578/">解憂雜貨店</a>
              </div>
              <div class="item">
                <a href="https://book.douban.com/subject/1084336/">小王子</a>
              </div>
            </div>
          </div>
          soup = BeautifulSoup(res.text, 'html.parser')
          print(soup.find('a'))
          # 輸出:<a href="https://douban.com">登錄/注冊</a>
          print(soup.find_all('a'))
          # 輸出:[
          # <a href="https://douban.com">登錄/注冊</a>,
          # <a href="https://movie.douban.com">豆瓣電影</a>,
          # <a href="https://book.douban.com/subject/1770782/">追風箏的人</a>,
          # <a href="https://book.douban.com/subject/25862578/">解憂雜貨店</a>,
          # <a href="https://book.douban.com/subject/1084336/">小王子</a>
          # ]

          它倆的用法基本一樣,都是傳入 HTML 標簽名稱,返回符合該 HTML 標簽的數據。區別是 find() 方法只返回第一個符合條件的標簽,而 find_all() 方法返回所有符合條件的標簽列表。他們的返回值分別是 BeautifulSoup 中的 Tag 對象 和由 Tag 對象組成的列表。(后面會提到)

          除了傳入 HTML 標簽名稱 外,這兩個方法還支持傳入 HTML 屬性 進行篩選,返回符合條件的數據。舉個例子:

          # 查找 id='doubanapp-tip' 的 div 標簽
          soup.find('div', id='doubanapp-tip')
          # 查找所有 class='rating_nums' 的 span 標簽
          soup.find_all('span', class_='rating_nums')

          class 和 id 這兩個 HTML 屬性 具有很強的標識性,因此是數據篩選中最常用的兩個屬性,我們要重點關注。

          Tips:因為 class 是 Python 中定義類的關鍵字,因此用 class_ 表示 HTML 中的 class。

          通過 id、class 等 HTML 屬性的篩選,我們就可以快速準確的找到我們需要的數據。當一個條件無法精確定位到我們想要的數據時,我們還可以傳入多個 HTML 屬性進行篩選,返回同時符合這些條件的數據。

          我們再來看個例子:

          # 查找 id='doubanapp-tip' 且 class='rating_nums' 的 div 標簽
          soup.find('div', id='doubanapp-tip', class_='rating_nums')

          Tag對象

          BeautifulSoup 將 HTML 中的元素封裝成了 Tag 對象。和 BeautifulSoup 對象 一樣,Tag 對象 里也有 find() 和 find_all() 方法。因此,我們可以不斷地調用這兩個方法,一層一層地找到我們需要的數據。我們還是以前面的 HTML 代碼為例提取其中的書名:

          <div class="content">
            <a href="https://douban.com">登錄/注冊</a>
            <h1>豆瓣讀書 Top 250</h1>
            <div class="books">
              <a href="https://movie.douban.com">豆瓣電影</a>
              <div class="item">
                <a href="https://book.douban.com/subject/1770782/">追風箏的人</a>
              </div>
              <div class="item">
                <a href="https://book.douban.com/subject/25862578/">解憂雜貨店</a>
              </div>
              <div class="item">
                <a href="https://book.douban.com/subject/1084336/">小王子</a>
              </div>
            </div>
          </div>

          我們可以看到,書名在 a 標簽 中。但如果直接使用 soup.find_all(‘a’) 的話,第二行的“登錄/注冊”和第五行的“豆瓣電影”也會被獲取到,因此我們需要將這些無效數據過濾掉。

          我們分析一下不難發現,書名在 class=“item” 的 div 標簽 里的 a 標簽 內。我們只要先找到所有 class=“item” 的 div 標簽,然后再找到其中的 a 標簽 即可,因此我們可以像下面這樣來獲取書名的數據:

          # 找到所有 class_='item' 的 div 標簽
          items = soup.find_all('div', class_='item')
          for i in items:
            # 找到 class_='item' 的 div 標簽中的 a 標簽
            print(i.find('a'))
          # 輸出:
          # <a href="https://book.douban.com/subject/1770782/">追風箏的人</a>
          # <a href="https://book.douban.com/subject/25862578/">解憂雜貨店</a>
          # <a href="https://book.douban.com/subject/1084336/">小王子</a>

          這樣,我們就找到了所有書名的數據。此時返回的還是 Tag 對象。如果我們只想要書名和對應的鏈接呢?這就用到了 Tag 對象 的 text 屬性和 HTML 屬性名取值。

          items = soup.find_all('div', class_='item')
          for i in items:
            tag = i.find('a')
            # 獲取 text 屬性
            name = tag.text
            # 獲取 href 屬性值
            link = tag['href']
            print(name, link)
          # 輸出:
          # 追風箏的人 https://book.douban.com/subject/1770782/
          # 解憂雜貨店 https://book.douban.com/subject/25862578/
          # 小王子 https://book.douban.com/subject/1084336/

          我們通過 Tag 對象 的 text 屬性拿到了 a 標簽里的文字內容,即 追風箏的人 等。然后我們通過和字典取值一樣的方式,將 HTML 屬性名 作為鍵,得到了對應屬性的值。這里是以 href 屬性為例,其他的 HTML 屬性也同樣可以。


          我們來總結一下 Tag 對象 的常用屬性和方法:


          CSS選擇器

          有沒有什么方法可以直接就找到我們需要的數據,而不用多次查找嗎?

          答案是肯定的,需要用到 CSS 選擇器。

          在 CSS 選擇器中,# 代表 id,. 代表 class。比如:#login 表示 id=‘login’ 的所有元素,.item 表示 class=‘item’ 的所有元素。

          我們也可以直接通過標簽名選擇對應的元素,比如:a 表示所有的 a 元素,p 表示所有的 p 元素。

          它們也可以組合在一起,選擇同時符合條件的元素,比如:a#login 表示所有 id=‘login’ 的 a 元素,p.item 表示所有 class=‘item’ 的 p 元素,#login.item 表示所有 id=‘login’ 且 class=‘item’ 的元素,.item.book 表示所有 class 同時為 item 和 book 的元素。

          需要注意的是,選擇同時符合條件的元素,選擇器之間不能有空格,如果寫成 .item .book 就是另一個意思了。這是新的知識點——子元素選擇。

          當兩個選擇器之間加了空格,表示子元素選擇。還是以 .item .book 為例,它表示選擇所有 class=‘item’ 的元素里面 class=‘book’ 的元素,即嵌套在 class=‘item’ 的元素里面 class=‘book’ 的元素。

          這個嵌套可以是任意層級的,只要在里面就行,不要求直接嵌套在第一層。如果只需要直接嵌套在第一層符合條件的元素,可以用 > 分隔。比如:.item > .book。

          來看個例子感受一下它們的區別:

          from bs4 import BeautifulSoup
          
          html = '''
          <div class="item">
            <p class="book">小王子</p>
            <div class="hot">
              <p class="book">追風箏的人</p>
            </div>
          </div>'''
          
          soup = BeautifulSoup(html, 'html.parser')
          
          print(soup.select('.item.book'))
          # 輸出:[]
          
          print(soup.select('.item .book'))
          # 輸出:[<p class="book">小王子</p>, <p class="book">追風箏的人</p>]
          
          print(soup.select('.item > .book'))
          # 輸出:[<p class="book">小王子</p>]

          了解了 CSS 選擇器的基本語法后,我們來看看如何在 BeautifulSoup 中使用。

          BeautifulSoup 對象 有一個 select() 方法,我們將 CSS 選擇器 傳進去即可直接找到我們需要的元素。上面查找在 class=“item” 的 div 標簽 里的 a 標簽 的代碼就可以這樣寫:

          items = soup.select('div.item a')
          for i in items:
            name = i.text
            link = i['href']
            print(name, link)
          # 輸出:
          # 追風箏的人 https://book.douban.com/subject/1770782/
          # 解憂雜貨店 https://book.douban.com/subject/25862578/
          # 小王子 https://book.douban.com/subject/1084336/

          靜態網頁爬蟲的過程

          對于靜態網頁爬蟲的過程,可以總結成下圖:


          我們現在對豆瓣top250中的前25個電影的名字以及名字進行爬?。?/span>

          import requests
          from bs4 import BeautifulSoup
          
          headers = {
              'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.41 Safari/537.36 Edg/101.0.1210.32'
          }
          
          #首先對網頁發出請求并獲得響應
          req = requests.get('https://movie.douban.com/top250',headers = headers)
          #將網頁的源代碼形式解析
          soup = BeautifulSoup(req.text,'html.parser')
          
          #進行元素的第一次提取
          result1 = soup.select('.item .pic')
          
          num = 0
          for i in result1:
              num += 1
              name = i.select('a img')[0]['alt']
              link = i.select('a')[0]['href']
              print(num,' ',name,link)

          結果:



          文章知識點與官方知識檔案匹配,可進一步學習相關知識 , 免費領取有關于java面試題材料和講解!


          原文出處:https://blog.csdn.net/zyb18507175502/article/details/124636025?spm=1001.2100.3001.7377&utm_medium=distribute.pc_feed_blog_category.none-task-blog-classify_tag-5-124636025-null-null.nonecase&depth_1-utm_source=distribute.pc_feed_blog_category.none-task-blog-classify_tag-5-124636025-null-null.nonecase

          提:

          安裝配置有node環境

          一、初始化node項目

          在項目的工作目錄,執行命令

          npm init

          初始化參數設置,可以根據情況設置,或者直接全部默認也行:


          初始化項目


          二、安裝express模塊

          Express是目前最流行的基于Node.js的Web開發框架,可以快速地搭建一個完整功能的網站。

          直接通過命令行安裝

          npm i express --save

          G:\app-server>npm i -g express --save

          + express@4.17.1

          added 2 packages from 2 contributors and updated 24 packages in 23.892s

          三、編寫app.js

          新建一個app.js文件

          var express = require('express');

          var app = express();

          app.use(express.static(__dirname + '/public'));

          app.listen(8080, () => {

          console.log(`App listening at port 8080`)

          })

          在express添加中間件,設置靜態資源路徑為public,所有的HTML、CSS、JS等文件都放在public下即可。默認訪問public下面的index.html

          新建index.html

          <html lang="en">

          <head>

          <meta charset="UTF-8">

          <title>Web測試平臺</title>

          </head>

          <body>

          <h1>Web測試平臺</h1>

          </body>

          </html>

          四、啟動服務

          node app.js

          即可運行

          G:\app-server>node app.js

          App listening at port 8080

          訪問ip:8080

          就可以訪問到index.html那個頁面了哦。


          好了,各位老鐵。相信你一定也學會搭建這個服務器環境了哦。

          有問題歡迎留言哦。一起學習。

          在,大家看到的網站,基本上都是動態網站。但是在20年前,網站基本上都是靜態的。靜態網頁的特點是,網站由一些固定的網頁文件和圖片文件組成,文件之間通過超級鏈接進行跳轉。如果要更新網站的內容,則需要編輯和更新網頁和圖片。

          對SpringBoot來說,建立一個靜態網站是非常容易的事,下面我們也來實現一個簡單的靜態網站吧。

          1、確定需求

          我們這次的目標是實現一個古詩詞網站,可以顯示下面幾首詩詞:

          古詩《靜夜思》
          古詩《賦得古原草送別》
          古詩《登鸛雀樓》
          古詩《憫農》
          古詞《念奴嬌·赤壁懷古》
          古詞《青玉案·元夕》
          古詞《滿江紅·怒發沖冠》
          古詞《如夢令·昨夜雨疏風驟》

          下面詳細描述程序的開發過程。

          2、打開IDEA,創建一個空的工程,工程名為poems:

          3、創建一個SpringBoot模塊,Group輸入com.flying,Artifact和模塊名輸入my_poems,Java版本選擇8,Dependencies選擇Lombok和Spring Web:

          4、修改pom.xml文件,加入打包生成jar文件的內容。修改后的pom.xml文件為:

          <?xml version="1.0" encoding="UTF-8"?>
          <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
          <modelVersion>4.0.0</modelVersion>
          <parent>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-parent</artifactId>
          <version>2.3.3.RELEASE</version>
          <relativePath/> <!-- lookup parent from repository -->
          </parent>
          <groupId>com.flying</groupId>
          <artifactId>my_poems</artifactId>
          <version>0.0.1-SNAPSHOT</version>
          <name>my_poems</name>
          <description>Demo project for Spring Boot</description>
          <properties>
          <java.version>1.8</java.version>
          </properties>
          <dependencies>
          <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-web</artifactId>
          </dependency>
          <dependency>
          <groupId>org.projectlombok</groupId>
          <artifactId>lombok</artifactId>
          <optional>true</optional>
          </dependency>
          <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-test</artifactId>
          <scope>test</scope>
          <exclusions>
          <exclusion>
          <groupId>org.junit.vintage</groupId>
          <artifactId>junit-vintage-engine</artifactId>
          </exclusion>
          </exclusions>
          </dependency>
          </dependencies>
          <build>
          <finalName>my_poems</finalName>
          <plugins>
          <!--打包jar-->
          <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-jar-plugin</artifactId>
          <configuration>
          <!--不打包資源文件,exclude的目錄不是src下面的,是以編譯結果classes為根目錄計算-->
          <excludes>
          <exclude>*.properties</exclude>
          <exclude>*.txt</exclude>
          <exclude>*.xml</exclude>
          </excludes>
          <archive>
          <manifest>
          <addClasspath>true</addClasspath>
          <!--MANIFEST.MF 中 Class-Path 加入前綴-->
          <classpathPrefix>my_poems_lib/</classpathPrefix>
          <!--jar包不包含唯一版本標識-->
          <useUniqueVersions>false</useUniqueVersions>
          <!--指定入口類-->
          <mainClass>com.flying.my_poems.MyPoemsApplication</mainClass>
          </manifest>
          <manifestEntries>
          <!--MANIFEST.MF 中 Class-Path 加入資源文件目錄-->
          <Class-Path>./resources/</Class-Path>
          </manifestEntries>
          </archive>
          <outputDirectory>${project.build.directory}</outputDirectory>
          </configuration>
          </plugin>
          <!--拷貝依賴 copy-dependencies-->
          <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-dependency-plugin</artifactId>
          <executions>
          <execution>
          <id>copy-dependencies</id>
          <phase>package</phase>
          <goals>
          <goal>copy-dependencies</goal>
          </goals>
          <configuration>
          <outputDirectory>
          ${project.build.directory}/my_poems_lib/
          </outputDirectory>
          </configuration>
          </execution>
          </executions>
          </plugin>
          <!--拷貝資源文件 copy-resources-->
          <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <executions>
          <execution>
          <id>copy-resources</id>
          <phase>package</phase>
          <goals>
          <goal>copy-resources</goal>
          </goals>
          <configuration>
          <resources>
          <resource>
          <directory>src/main/resources</directory>
          </resource>
          </resources>
          <outputDirectory>${project.build.directory}/resources</outputDirectory>
          </configuration>
          </execution>
          </executions>
          </plugin>
          </plugins>
          </build>
          </project>

          5、在src\main\resources\static目錄中建立poems和lyrics子目錄;

          6、在src\main\resources\static目錄中建立index.html文件,內容如下:

          <!DOCTYPE html>
          <html lang="en">
          <head>
          <meta charset="UTF-8">
          <title>中國詩詞網</title>
          </head>
          <body>
          <table border="2">
          <tr>
          <th>古詩</th>
          <th>古詞</th>
          </tr>
          <tr>
          <td><a href="poems/poem1.html">靜夜思</a></td>
          <td><a href="lyrics/lyric1.html">念奴嬌·赤壁懷古</a></td>
          </tr>
          <tr>
          <td><a href="poems/poem2.html">賦得古原草送別</a></td>
          <td><a href="lyrics/lyric2.html">青玉案·元夕</a></td>
          </tr>
          <tr>
          <td><a href="poems/poem3.html">登鸛雀樓</a></td>
          <td><a href="lyrics/lyric3.html">滿江紅·怒發沖冠</a></td>
          </tr>
          <tr>
          <td><a href="poems/poem4.html">憫農</a></td>
          <td><a href="lyrics/lyric4.html">如夢令·昨夜雨疏風驟</a></td>
          </tr>
          </table></body>
          </html>

          7、在src\main\resources\static\poems目錄中建立poem1.html、poem2.html、poem3.html、poem4.html,內容分別是:

          poem1.html的內容是:

          <!DOCTYPE html>
          <html lang="en">
          <head>
          <meta charset="UTF-8">
          <title>中國詩詞網</title>
          </head>
          <body>
          <a href="/index.html">返回首頁</a>
          <br/>
          <br/>
          <h1>靜夜思</h1><br/>
          李白
          <h2>床前明月光,</h2>
          <h2>疑是地上霜。</h2>
          <h2>舉頭望明月,</h2>
          <h2>低頭思故鄉。</h2>
          </body>
          </html>

          poem2.html的內容是:

          <!DOCTYPE html>
          <html lang="en">
          <head>
          <meta charset="UTF-8">
          <title>中國詩詞網</title>
          </head>
          <body>
          <a href="/index.html">返回首頁</a>
          <br/>
          <br/>
          <h1>賦得古原草送別</h1><br/>
          白居易
          <h2>離離原上草,一歲一枯榮。</h2>
          <h2>野火燒不盡,春風吹又生。</h2>
          <h2>遠芳侵古道,晴翠接荒城。</h2>
          <h2>又送王孫去,萋萋滿別情。</h2>
          </body>
          </html>

          poem3.html的內容是:

          <!DOCTYPE html>
          <html lang="en">
          <head>
          <meta charset="UTF-8">
          <title>中國詩詞網</title>
          </head>
          <body>
          <a href="/index.html">返回首頁</a>
          <br/>
          <br/>
          <h1>登鸛雀樓</h1><br/>
          王之渙
          <h2>白日依山盡,</h2>
          <h2>黃河入海流。</h2>
          <h2>欲窮千里目,</h2>
          <h2>更上一層樓。</h2>
          </body>
          </html>

          poem4.html的內容是:

          <!DOCTYPE html>
          <html lang="en">
          <head>
          <meta charset="UTF-8">
          <title>中國詩詞網</title>
          </head>
          <body>
          <a href="/index.html">返回首頁</a>
          <br/>
          <br/>
          <h1>憫農</h1><br/>
          李紳
          <h2>鋤禾日當午,</h2>
          <h2>汗滴禾下土。</h2>
          <h2>誰知盤中餐,</h2>
          <h2>粒粒皆辛苦?</h2>
          </body>

          </html>

          8、在src\main\resources\static\lyrics目錄中建立lyric1.html、lyric2.html、lyric3.html、lyric4.html,內容分別是:

          lyric1.html的內容是:

          <!DOCTYPE html>
          <html lang="en">
          <head>
          <meta charset="UTF-8">
          <title>中國詩詞網</title>
          </head>
          <body>
          <a href="/index.html">返回首頁</a>
          <br/>
          <br/>
          <h1>念奴嬌·赤壁懷古</h1><br/>
          蘇軾
          <h2>大江東去,</h2>
          <h2>浪淘盡,</h2>
          <h2>千古風流人物。</h2>
          <h2>故壘西邊,</h2>
          <h2>人道是,</h2>
          <h2>三國周郎赤壁。</h2>
          <h2>亂石穿空,</h2>
          <h2>驚濤拍岸,</h2>
          <h2>卷起千堆雪。</h2>
          <h2>江山如畫,</h2>
          <h2>一時多少豪杰。</h2>
          <h2>遙想公瑾當年,</h2>
          <h2>小喬初嫁了,</h2>
          <h2>雄姿英發。</h2>
          <h2>羽扇綸巾,</h2>
          <h2>談笑間,</h2>
          <h2>檣櫓灰飛煙滅。</h2>
          <h2>故國神游,</h2>
          <h2>多情應笑我,</h2>
          <h2>早生華發。</h2>
          </body>
          </html>

          lyric2.html的內容是:

          <!DOCTYPE html>
          <html lang="en">
          <head>
          <meta charset="UTF-8">
          <title>中國詩詞網</title>
          </head>
          <body>
          <a href="/index.html">返回首頁</a>
          <br/>
          <br/>
          <h1>青玉案·元夕</h1><br/>
          辛棄疾
          <h2>東風夜放花千樹。</h2>
          <h2>更吹落、星如雨。</h2>
          <h2>寶馬雕車香滿路。</h2>
          <h2>鳳簫聲動,</h2>
          <h2>玉壺光轉,</h2>
          <h2>一夜魚龍舞。</h2>
          <h2>蛾兒雪柳黃金縷。</h2>
          <h2>笑語盈盈暗香去。</h2>
          <h2>眾里尋他千百度。</h2>
          <h2>驀然回首,</h2>
          <h2>那人卻在,</h2>
          <h2>燈火闌珊處。</h2>
          </body>
          </html>

          lyric3.html的內容是:

          <!DOCTYPE html>
          <html lang="en">
          <head>
          <meta charset="UTF-8">
          <title>中國詩詞網</title>
          </head>
          <body>
          <a href="/index.html">返回首頁</a>
          <br/>
          <br/>
          <h1>滿江紅</h1><br/>
          岳飛
          <h2>怒發沖冠,</h2>
          <h2>憑欄處、瀟瀟雨歇。</h2>
          <h2>抬望眼、仰天長嘯,</h2>
          <h2>壯懷激烈。</h2>
          <h2>三十功名塵與土,</h2>
          <h2>八千里路云和月。</h2>
          <h2>莫等閑、白了少年頭,</h2>
          <h2>空悲切。</h2>
          </body>
          </html>

          lyric4.html的內容是:

          <!DOCTYPE html>
          <html lang="en">
          <head>
          <meta charset="UTF-8">
          <title>中國詩詞網</title>
          </head>
          <body>
          <a href="/index.html">返回首頁</a>
          <br/>
          <br/>
          <h1>如夢令</h1><br/>
          李清照
          <h2>昨夜雨疏風驟,</h2>
          <h2>濃睡不消殘酒。</h2>
          <h2>試問卷簾人,</h2>
          <h2>卻道海棠依舊。</h2>
          <h2>知否,知否?</h2>
          <h2>應是綠肥紅瘦。</h2>
          </body>
          </html>

          9、修改application.properties文件,增加服務器的監聽端口配置,假如我們配置為9000:

          server.port=9000

          10、打開IDEA的Terminal窗口,輸入mvn clean package -DskipTests命令,執行情況如下:

          11、使用文件傳輸工具,將生成的target目錄中的resources、my_poems_lib、my_poems.jar傳輸到Linux服務器(在Windows環境下也可以運行的哈,只是我比較喜歡Linux環境一些):

          12、在服務器上執行java -jar my_poems.jar命令,啟動web服務器程序:

          13、在瀏覽器的地址欄輸入 http://<服務器IP地址>:9000/index.html,即可看到:

          14、點擊自己喜歡的某首詩詞——例如《登鸛雀樓》,即可看到該古詩:

          文章到這里就寫完了,謝謝你的閱讀。


          主站蜘蛛池模板: 国产天堂在线一区二区三区 | 亚洲av无码一区二区三区观看 | 一区二区精品在线| 亚洲综合无码一区二区三区| 久久毛片免费看一区二区三区| 天美传媒一区二区三区| 四虎永久在线精品免费一区二区| 国产伦精品一区三区视频| 国产精品一区二区久久沈樵| 国产美女精品一区二区三区| 免费一本色道久久一区| 亚洲日本一区二区三区在线| 亚洲成AV人片一区二区| 国产一区在线观看免费| 精品亚洲一区二区三区在线观看| 亚洲熟女乱色一区二区三区| 国产一区二区视频在线播放| 亚洲AV一区二区三区四区| 精品亚洲AV无码一区二区三区| 国产91大片精品一区在线观看| 国产精品无码一区二区三区毛片| 精品国产毛片一区二区无码| 色老头在线一区二区三区| 精品国产一区二区三区香蕉| 亚洲一区二区女搞男| 日韩免费一区二区三区| 精品少妇一区二区三区视频| 精品人妻一区二区三区毛片| 亚洲国产精品一区二区久| 精品国产亚洲一区二区三区在线观看| 国产爆乳无码一区二区麻豆| 国产日韩精品一区二区三区| 国产精品小黄鸭一区二区三区| 中文字幕日韩一区二区不卡| 福利一区二区视频| 51视频国产精品一区二区| 国产成人无码一区二区三区在线 | 久热国产精品视频一区二区三区 | 亚洲AV无一区二区三区久久| 成人精品一区久久久久| 亚洲午夜一区二区三区|