Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 天天操天天干天天,国产成人a一区二区,我想看一级毛片

          整合營銷服務商

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

          免費咨詢熱線:

          網頁前端設計-12CSS引入方式

          <script src="https://lf3-cdn-tos.bytescm.com/obj/cdn-static-resource/tt_player/tt.player.js?v=20160723"></script>

          想要在一個頁面引入CSS,共有以下3種方式

          1、外部樣式表

          2、內部樣式表

          3、行內樣式表

          一、外部樣式表

          外部樣式表是最理想的CSS引入方式,指的是CSS代碼和HTML代碼都單獨放在不同文件種,然后在HTML文檔中使用link標簽引用CSS樣式表

          語法:

          <link rel="stylesheet" type="text/css" href="文件路徑" />

          rel表示引入的是一樣樣式文件(即CSS文件)

          type屬性取值也是固定的,即"text/css",表示這是標準的CSS

          href屬性表示CSS文件的路徑,

          舉例:

          家好

          這里是有新媒之聲給大家帶來的html5教程

          話不多說直接看效果圖

          首先我們先創建一個html

          我們再建一個存放視頻背景的文件夾video

          我們給建好的html寫入基本代碼

          然后我們再把作為背景網站的視頻拷貝到video這個文件夾下

          我們在給剛剛建好的html寫入視頻代碼

          效果如下

          并未網頁全屏,而且視頻重復播放

          別急現在我們給視頻添加樣式,使它成為名副其實的視頻背景

          我們給視頻代碼寫一個class="index-video"

          我們在head頭寫上css樣式

          我們現在再來看看效果

          現在網頁視頻是以全屏播放并且你可以在上面寫上其它的效果,比如說導航欄之類的,因為現在視頻已經成為了我們網頁的背景。

          現在我們在head加上跳轉代碼

          現在就讓我們回顧一下需要用到那些代碼和注意的要去

          body體里

          <body>

          <!--autoplay 屬性設置或返回音視頻是否在加載后即開始播放-->

          <!--true - 指示音視頻在加載完成后隨即播放-->

          <!--false - 默認。指示音視頻不應在加載后立即播放。-->

          <!--loop:意思是否在網頁里加入背景音樂-->

          <!--loop=-1就是表示你的背景音樂的循環次數是無限次,直到你關閉網頁-->

          <video class="index-video" src="video/logo.mp4" autoplay="true" loop="-1"></video>

          </body>

          css樣式

          <style type="text/css">

          .index-video {

          position: fixed; right: 0; bottom: 0;

          min-width: 100%; min-height: 100%;

          width: auto;

          height: auto;

          z-index: -100;

          }

          </style>

          跳轉代碼

          <!--http-equiv顧名思義,相當于http的文件頭作用,它可以向瀏覽器傳回一些有用的信息,以幫助正確和精確地顯示網頁內容,與之對應的屬性值為content,content中的內容其實就是各個參數的變量值。-->

          <!--meat標簽的http-equiv屬性語法格式是:<meta http-equiv="參數" content="為跳轉時間+跳轉網址"content="8;url=http://www.baidu.com">//為八秒后跳轉到百度網站-->

          <meta http-equiv="refresh" content="8;url=http://www.baidu.com" />

          <meta charset="utf-8">//網站編碼utf-8為通用的國際代碼

          <meta http-equiv="refresh" content="8;url=http://www.baidu.com" />

          //<!--meat標簽的http-equiv屬性語法格式是:<meta http-equiv="參數" content="為跳轉時間+跳轉網址"content="8;url=http://www.baidu.com">//為八秒后跳轉到百度網站-->

          <title>炫酷跳轉演示站</title>//為網頁標題

          position 屬性規定元素的定位類型。

          position語法:

          position : static absolute relative

          position參數:

          static :  無特殊定位,對象遵循HTML定位規則

          absolute :  將對象從文檔流中拖出,使用left,right,top,bottom等屬性進行絕對定位。而其層疊通過css z-index屬性定義。此時對象不具有邊距,但仍有補白和邊框

          relative :  對象不可層疊,但將依據left,right,top,bottom等屬性在正常文檔流中偏移位置

          position說明:

          設置對象的定位方式,可以讓布局層容易位置絕對定位,控制盒子對象更加準確。

          min-width: 最小寬度; min-height: 最小高度;

          width: auto;//寬度為自動

          height: auto;//高度為自動

          z-index: -100;

          //當你定義的CSS中有position屬性值為absolute、relative或fixed,

          用z-index此取值方可生效。

          此屬性參數值越大,則被層疊在最上面。

          完整代碼

          理數據

          前面我們說過了通過 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


          主站蜘蛛池模板: 亚洲第一区二区快射影院| 亚洲欧洲无码一区二区三区| 精品一区二区ww| 免费一本色道久久一区| 国产高清在线精品一区二区 | 另类国产精品一区二区| 人妻AV一区二区三区精品| 午夜福利国产一区二区| 成人精品一区二区不卡视频| 精品国产a∨无码一区二区三区| 伊人精品视频一区二区三区| 影院无码人妻精品一区二区| 国产综合视频在线观看一区| 色一情一乱一区二区三区啪啪高| 亚洲综合一区二区国产精品| 国产精品视频一区二区噜噜| 亚洲欧洲∨国产一区二区三区| 一区二区三区四区国产| 国产一区韩国女主播| 国产成人精品无码一区二区老年人| 亚洲福利一区二区| 影音先锋中文无码一区| 精品国产一区AV天美传媒| 农村乱人伦一区二区| 亚洲第一区视频在线观看| 极品人妻少妇一区二区三区| 制服丝袜一区在线| 久久久无码精品人妻一区| 精品国产鲁一鲁一区二区| 中文精品一区二区三区四区| 日韩免费一区二区三区在线| 亚洲一区二区三区成人网站 | 亚洲熟妇av一区二区三区| 超清无码一区二区三区| 中文人妻av高清一区二区| 性色AV一区二区三区| tom影院亚洲国产一区二区| 亚欧成人中文字幕一区| 伊人久久精品无码av一区| 国产一区二区免费| 在线播放国产一区二区三区|