整合營銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          HTML學(xué)習(xí)教程5-頭元素 腳本 鏈接

          TML<head>元素

          <head> 元素包含了所有的頭部標(biāo)簽元素。在 <head>元素中你可以插入腳本(scripts), 樣式文件(CSS),及各種meta信息。

          可以添加在頭部區(qū)域的元素標(biāo)簽為: <title>, <style>, <meta>, <link>, <script>, <noscript> 和 <base>

          HTML <title> 元素

          <title> 標(biāo)簽定義了不同文檔的標(biāo)題。

          <title> 在 HTML/XHTML 文檔中是必須的。

          <title> 元素:

          • 定義了瀏覽器工具欄的標(biāo)題
          • 當(dāng)網(wǎng)頁添加到收藏夾時,顯示在收藏夾中的標(biāo)題
          • 顯示在搜索引擎結(jié)果頁面的標(biāo)題

          一個簡單的 HTML 文檔:

          <!DOCTYPE html>
          <html>
          <head> 
          <meta charset="utf-8"> 
          <title>文檔標(biāo)題</title>
          </head>
           
          <body>
          文檔內(nèi)容......
          </body>
           
          </html>

          HTML <base> 元素

          <base> 標(biāo)簽描述了基本的鏈接地址/鏈接目標(biāo),該標(biāo)簽作為HTML文檔中所有的鏈接標(biāo)簽的默認(rèn)鏈接:

          <head>
          <link rel="stylesheet" type="text/css" href="mystyle.css">
          </head>

          HTML <style> 元素

          <style> 標(biāo)簽定義了HTML文檔的樣式文件引用地址.

          在<style> 元素中你也可以直接添加樣式來渲染 HTML 文檔:

          <head>
          <style type="text/css">
          body {background-color:yellow}
          p {color:blue}
          </style>
          </head>

          HTML <meta> 元素

          meta標(biāo)簽描述了一些基本的元數(shù)據(jù)。

          <meta> 標(biāo)簽提供了元數(shù)據(jù).元數(shù)據(jù)也不顯示在頁面上,但會被瀏覽器解析。

          META 元素通常用于指定網(wǎng)頁的描述,關(guān)鍵詞,文件的最后修改時間,作者,和其他元數(shù)據(jù)。

          元數(shù)據(jù)可以使用于瀏覽器(如何顯示內(nèi)容或重新加載頁面),搜索引擎(關(guān)鍵詞),或其他Web服務(wù)。

          <meta> 一般放置于 <head> 區(qū)域

          <meta> 標(biāo)簽- 使用實(shí)例

          為搜索引擎定義關(guān)鍵詞:

          <meta name="keywords" content="HTML, CSS, XML, XHTML, JavaScript">

          為網(wǎng)頁定義描述內(nèi)容:

          <meta name="description" content="免費(fèi) Web & 編程 教程">

          定義網(wǎng)頁作者:

          <meta name="author" content="tom">

          每30秒鐘刷新當(dāng)前頁面:

          <meta http-equiv="refresh" content="30">

          HTML <script> 元素

          <script>標(biāo)簽用于加載腳本文件或定義客戶端腳本,如: JavaScript。

          <script> 元素既可包含腳本語句,也可通過 src 屬性指向外部腳本文件。

          JavaScript 最常用于圖片操作、表單驗(yàn)證以及內(nèi)容動態(tài)更新。

          下面的腳本會向?yàn)g覽器輸出"Hello World!":

          <!DOCTYPE html>
          <html>
          <head> 
          <meta charset="utf-8"> 
          <title>菜鳥教程(runoob.com)</title> 
          </head>
          <body>
          <script>
          document.write("Hello World!")
          </script> 
          </body>
          </html>

          HTML<noscript> 標(biāo)簽

          <noscript> 標(biāo)簽提供無法使用腳本時的替代內(nèi)容,比方在瀏覽器禁用腳本時,或?yàn)g覽器不支持客戶端腳本時。

          <noscript>元素可包含普通 HTML 頁面的 body 元素中能夠找到的所有元素。

          只有在瀏覽器不支持腳本或者禁用腳本時,才會顯示 <noscript> 元素中的內(nèi)容:

          <!DOCTYPE html>
          <html>
          <head> 
          <meta charset="utf-8"> 
          <title>文檔標(biāo)題</title> 
          </head> 
          <body>
          
          <script>
          document.write("Hello World!")
          document.write("<h1>這是一個標(biāo)題</h1>");
          document.write("<p>這是一個段落。</p>");
          </script>
          <noscript>抱歉,你的瀏覽器不支持 JavaScript!</noscript>
          
          <p>不支持 JavaScript 的瀏覽器會使用 <noscript> 元素中定義的內(nèi)容(文本)來替代。</p>
           
          </body>
          </html>

          JavaScript事件響應(yīng):

          <!DOCTYPE html>
          <html>
          <head> 
          <meta charset="utf-8"> 
          <title>文檔標(biāo)題</title> 
          </head>
          <body>
          
          <h1>我的第一個 JavaScript </h1>
          
          <p id="demo">
          JavaScript 可以觸發(fā)事件,就像按鈕點(diǎn)擊。</p>
          
          <script>
          function myFunction()
          {
          	document.getElementById("demo").innerHTML="Hello JavaScript!";
          }
          </script>
          
          <button type="button" onclick="myFunction()">點(diǎn)我</button>
          
          </body>
          </html>

          HTML 腳本標(biāo)簽

          標(biāo)簽

          描述

          <script>

          定義了客戶端腳本

          <noscript>

          定義了不支持腳本瀏覽器輸出的文本

          HTML鏈接

          HTML使用標(biāo)簽 <a>來設(shè)置超文本鏈接。

          超鏈接可以是一個字,一個詞,或者一組詞,也可以是一幅圖像,您可以點(diǎn)擊這些內(nèi)容來跳轉(zhuǎn)到新的文檔或者當(dāng)前文檔中的某個部分。

          當(dāng)您把鼠標(biāo)指針移動到網(wǎng)頁中的某個鏈接上時,箭頭會變?yōu)橐恢恍∈帧?/span>

          在標(biāo)簽<a> 中使用了href屬性來描述鏈接的地址。

          默認(rèn)情況下,鏈接將以以下形式出現(xiàn)在瀏覽器中:

          • 一個未訪問過的鏈接顯示為藍(lán)色字體并帶有下劃線。
          • 訪問過的鏈接顯示為紫色并帶有下劃線。
          • 點(diǎn)擊鏈接時,鏈接顯示為紅色并帶有下劃線。

          注意:如果為這些超鏈接設(shè)置了 CSS 樣式,展示樣式會根據(jù) CSS 的設(shè)定而顯示。

          <!DOCTYPE html>
          <html>
          <head> 
          <meta charset="utf-8"> 
          <title>文檔標(biāo)題</title> 
          </head>
          <body>
          <p><a href="//www.microsoft.com/">本文本</a> 是一個指向萬維網(wǎng)上的頁面的鏈接。</p>
          </body>
          </html>

          HTML head 元素

          標(biāo)簽

          描述

          <head>

          定義了文檔的信息

          <title>

          定義了文檔的標(biāo)題

          <base>

          定義了頁面鏈接標(biāo)簽的默認(rèn)鏈接地址

          <link>

          定義了一個文檔和外部資源之間的關(guān)系

          <meta>

          定義了HTML文檔中的元數(shù)據(jù)

          <script>

          定義了客戶端的腳本文件

          <style>

          定義了HTML文檔的樣式文件

          了方面和節(jié)約時間,本次使用的python編譯器和解釋器分別為pycharm,python3.6.1RC

          逢年過節(jié)

          有一個神奇的網(wǎng)站

          你一定不陌生

          “12306”

          是不是總搶不到票啊

          是不是觀察著余票最新動態(tài)

          告訴你一個新技能

          賊666

          12306自動搶票

          前方高能,請系好好全帶~~

          首先在買票前我們需要先確認(rèn)是否有票,那么進(jìn)行正常的查票,打開12306查票網(wǎng)站輸入出發(fā)地和目的地進(jìn)行搜索。

          私信小編007 即可獲取數(shù)十套PDF以及大量的教學(xué)視頻!全都是從零到項(xiàng)目實(shí)戰(zhàn)的!

          然后我們點(diǎn)擊查詢按鈕以后瀏覽器向服務(wù)器發(fā)起了兩次請求,那么我們來通過返回值分析下那個請求才是真正獲取到車次相關(guān)數(shù)據(jù)的請求,以便我們用Python來模擬瀏覽器操作。

          第一次請求:

          很明顯第一次請求返回的值沒有我們需要的車次信息。

          第二次請求:

          第二次請求里面看到了很多數(shù)據(jù),雖然我們暫時還沒看到車次信息,但是我們發(fā)現(xiàn)它有個特性,就是有個列表的值里面有6個元素,而剛好我們搜索出來的從西安到達(dá)州的車輛也是6條數(shù)據(jù),所以這兩者肯定有一定關(guān)系,那么我們先用Python來獲取到這些數(shù)據(jù)再進(jìn)行下一步分析。

          # -*- coding: utf-8 -*-

          import urllib2

          import ssl

          ssl._create_default_https_context = ssl._create_unverified_context

          def getList():

          req = urllib2.Request('https://kyfw.12306.cn/otn/leftTicket/query?leftTicketDTO.train_date=2017-07-10&leftTicketDTO.from_station=CDW&leftTicketDTO.to_station=CSQ&purpose_codes=ADULT')

          req.add_header('User-Agent','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36')

          html = urllib2.urlopen(req).read()

          return html

          print getList()

          req.add_header(‘User-Agent’,’Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36’)

          其中的

          ssl._create_default_https_context =ssl._create_unverified_context

          是因?yàn)?2306采用的是https協(xié)議,而ssl證書是它自己做的并沒有得到瀏覽器的認(rèn)可,所以Python默認(rèn)是不會請求不受信任的證書的網(wǎng)站的,我們可以通過這行代碼來關(guān)閉掉證書的驗(yàn)證。

          那么我們先來看看能不能正常獲取到我們想要的信息。

          事實(shí)證明我們的操作沒有問題,接下來先拿到包含有6條數(shù)據(jù)的這個列表再說。

          返回的數(shù)據(jù)是json格式,但是Python標(biāo)準(zhǔn)數(shù)據(jù)類型中沒有json這個類型,所以對于Python而言它就是個字符串,如果要非常方便的操作這個json我們就可以借助Python中的json這個包來把json這個字符串變成dict類型,然后通過dict的鍵值對操作方法把列表取出來并進(jìn)行返回。

          # -*- coding: utf-8 -*-

          import urllib2

          import ssl

          import json

          ssl._create_default_https_context = ssl._create_unverified_context

          def getList():

          req = urllib2.Request('https://kyfw.12306.cn/otn/leftTicket/query?leftTicketDTO.train_date=2017-07-10&leftTicketDTO.from_station=CDW&leftTicketDTO.to_station=CSQ&purpose_codes=ADULT')

          req.add_header('User-Agent','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36')

          html = urllib2.urlopen(req).read()

          dict = json.loads(html)

          result = dict['data']['result']

          return result

          最終返回的是一個list數(shù)據(jù),我們先把這個數(shù)據(jù)for出來再看看每一條數(shù)據(jù)都有些什么東西。

          for i in getList():

          print i

          for出來之后我們先來看看第一條數(shù)據(jù)是什么樣的:

          |預(yù)定|76000G131805|G1318|ICW|IZQ|ICW|CWQ|07:54|18:54|11:00|N|UHESFcaIDeX22Z0zWfqttDuZXJFuWPdIa148i6TNk5spIqfp|20170710|3|W2|01|16|0|0|||||||||||無|無|無||O0M090|OM9

          其實(shí)我們稍微留一下就會發(fā)現(xiàn)里面有包含G1318,07:54,18:54,無這樣的車次信息的,只不過看起來比較亂,但是他們都有一個特點(diǎn),每個數(shù)據(jù)都是由|這個符號分開的,所以我們可以通過用|分割看看能發(fā)現(xiàn)什么呢?

          for i in getList():

          for n in i.split('|'):

          print n

          break

          可以看到所有的值都打印出來了,我們再在前面加上一個序號就能清楚到看到每個序號所對應(yīng)的值到底是什么了,比如有輛火車硬座還剩3張票,軟臥還剩8張票,那我們就查看哪個序號對應(yīng)的值是3哪個序號對應(yīng)的值是8就搞清楚了哪個序號是代表什么座次或者其他參數(shù)了。

          c = 0

          for i in getList():

          for n in i.split('|'):

          print '[%s] %s' %(c,n)

          c += 1

          c = 0

          break

          #索引3=車次

          #索引8=出發(fā)時間

          #索引9=到達(dá)時間

          到了這里不知道同學(xué)們有沒有發(fā)現(xiàn)一個問題,就是我用的這個函數(shù)只能夠獲取到從長沙到成都的數(shù)據(jù),而別人不一定是買這個方向的火車,所以我們還得搞清楚請求的url當(dāng)中的出發(fā)站和到達(dá)站的值是怎么來的?

          https://kyfw.12306.cn/otn/leftTicket/query?leftTicketDTO.train_date=2017-07-10&leftTicketDTO.from_station=CDW&leftTicketDTO.to_station=CSQ&purpose_codes=ADULT

          先找到出發(fā)站和到達(dá)站的參數(shù)分別是:

          leftTicketDTO.from_station=CDW

          leftTicketDTO.to_station=CSQ

          然而通過查找和分析我并沒有發(fā)現(xiàn)這兩個參數(shù)有規(guī)律,那么也就是說這兩個值是在之前的請求里面就已經(jīng)獲取到了的,通過檢查網(wǎng)頁源代碼沒有找到,那么又只能通過抓包的方式來找。

          在抓包過程中找到了一個包的返回值是附帶有各城市的代號的,url如下:

          https://kyfw.12306.cn/otn/resources/js/framework/station_name.js?station_version=1.9018

          先找到出發(fā)站和到達(dá)站的參數(shù)分別是:

          leftTicketDTO.from_station=CDW

          leftTicketDTO.to_station=CSQ

          然而通過查找和分析我并沒有發(fā)現(xiàn)這兩個參數(shù)有規(guī)律,那么也就是說這兩個值是在之前的請求里面就已經(jīng)獲取到了的,通過檢查網(wǎng)頁源代碼沒有找到,那么又只能通過抓包的方式來找。

          在抓包過程中找到了一個包的返回值是附帶有各城市的代號的,url如下:

          https://kyfw.12306.cn/otn/resources/js/framework/station_name.js?station_version=1.9018

          那么我們把這里面的城市數(shù)據(jù)復(fù)制出來單獨(dú)新建一個cons.py的文件保存起來。

          然后我們通過把參數(shù)做成通過輸入出發(fā)城市和到達(dá)城市就可以直接在這個數(shù)據(jù)里面匹配到相應(yīng)的城市代號,代碼如下:

          station = {}

          for i in cons.station_names.split('@'):

          if i:

          tmp = i.split('|')

          station[tmp[1]] = tmp[2]

          \#print station

          train_date = raw_input('請輸入出發(fā)時間')

          from_station = station[raw_input('請輸入出發(fā)城市')]

          to_station = station[raw_input('請輸入到達(dá)城市')]

          到這里就已經(jīng)能夠通過輸入“時間,城市”獲取相應(yīng)的車次信息了

          那么我們再進(jìn)行一些簡單的判斷,就能實(shí)現(xiàn)檢查相應(yīng)的時間,地點(diǎn),車次是否有余票了。同時再結(jié)合登錄,購票等流程,通過自動判斷是否有票,如果無票就繼續(xù)刷新,直到有票之后自動登錄下單后通過短信或者電話等方式全自動聯(lián)系購票人手機(jī)就可以了。

          未完待續(xù)!

          HTML 編輯器推薦

          可以使用專業(yè)的 HTML 編輯器來編輯 HTML,菜鳥教程為大家推薦幾款常用的編輯器:

          • Notepad++:https://notepad-plus-plus.org/

          • Sublime Text:http://www.sublimetext.com/

          • HBuilder:http://www.dcloud.io/

          你可以從以上軟件的官網(wǎng)中下載對應(yīng)的軟件,按步驟安裝即可。

          接下來我們將為大家演示如何使用Notepad++工具來創(chuàng)建 HTML 文件,其他兩個工具操作步驟類似。

          Notepad++

          Notepad++是 Windows操作系統(tǒng)下的一套文本編輯器(軟件版權(quán)許可證: GPL),有完整的中文化接口及支持多國語言編寫的功能(UTF8技術(shù))。

          步驟 1: 新建 HTML 文件

          在 Notepad++ 安裝完成后,選擇" 文件(F)->新建(N) ",在新建的文件中輸入以下代碼:

          <!DOCTYPEhtml><html><head><metacharset="utf-8"><title>菜鳥教程(runoob.com)</title></head><body><h1>我的第一個標(biāo)題</h1><p>我的第一個段落。</p></body></html>

          步驟 2: 另存為 HTML 文件

          然后選擇" 文件(F)->另存為(A) ",文件名為 runoob.html:

          當(dāng)您保存 HTML 文件時,既可以使用 .htm 也可以使用 .html 擴(kuò)展名。兩者沒有區(qū)別,完全根據(jù)您的喜好。

          在一個容易記憶的文件夾中保存這個文件,比如 runoob

          步驟 3: 在瀏覽器中運(yùn)行這個 HTML 文件

          啟動您的瀏覽器,然后選擇"文件"菜單的"打開文件"命令,或者直接在文件夾中雙擊您的 HTML 文件,

          運(yùn)行顯示結(jié)果類似如下:

          Notepad++ 和 Sublime Text 還可以配合 Emmet 插件來提高編碼速度。

          Emmet 官網(wǎng):http://emmet.io/

          如您還有不明白的可以在下面與我留言或是與我探討QQ群308855039,我們一起飛!


          主站蜘蛛池模板: 人妻少妇一区二区三区| 中文字幕一区日韩精品| 无码精品人妻一区二区三区漫画 | 人妻无码一区二区视频| 少妇激情av一区二区| 日韩人妻无码一区二区三区久久99| 无码国产精品一区二区免费式影视| 韩国精品一区视频在线播放| 老熟女高潮一区二区三区| 国产精品一区二区av不卡| 国产午夜一区二区在线观看| 精品少妇人妻AV一区二区| 亚洲天堂一区二区三区四区| 国产激情视频一区二区三区| 久久精品中文字幕一区| 亚洲av片一区二区三区| 国产一区二区三区在线免费观看| 无码人妻aⅴ一区二区三区| 色一情一乱一伦一区二区三欧美 | 波多野结衣一区在线观看| 欧洲精品一区二区三区| 国产激情一区二区三区小说| 精品一区二区ww| 国产精品成人99一区无码| 色一乱一伦一区一直爽| 日韩一区二区三区视频| 一区二区三区亚洲视频| 99精品久久精品一区二区| 丝袜人妻一区二区三区| 久久se精品一区二区| 日韩好片一区二区在线看| 精品视频一区二区三三区四区| 精品人无码一区二区三区| 国产乱码一区二区三区四| 久久精品成人一区二区三区| 视频精品一区二区三区| 韩国福利一区二区三区高清视频 | 精品视频在线观看一区二区三区| 天天爽夜夜爽人人爽一区二区| 亚洲国产一区二区三区| 精品亚洲综合在线第一区|