果頁面中包含框架,則每個框架都擁有自己的 window 對象,并且保存在 frames 集合中, 在frames 集合中,可以通過索引 或者框架名稱來訪問相應的 window 對象。每個 window 對象都有一個 name 屬性,其中包含框的名稱。請看下面一個包含框架的頁面:
頁面框架結構
上面的代碼創建了一個框架集,其中一個框架居中,兩個框架居下。對于上面的例子,可以通過 window.frames[0] 或者 window.frames['topFrame'] 來引用上方的框架。不過,最好使用 top 而非 window 來引用這些框架。
top 對象始終指向最高(外)層的框架,也就是瀏覽器窗口。使用它可以確保在一個框架中正確地訪問另外一個框架。因為對于在一個框架中編寫的任何代碼來說,其中的 window 對象指向的都是那個框架的特定實例,而非最高層框架,下圖展示了在最高層窗口中,通過代碼來訪問上面例子中每個框架的不同方式:
通過代碼訪問上面例子中每個框架的不同方式
與 top 相對另一個 window 對象是 parent。parent 對象始終指向當前框架的 直接上層框架。在某些情況下,parent 有可能等于 top;在沒有框架的情況下,parent 一定等于 top (此時它們都等于 window)。請看下面的例子:
anotherframe2.htm
在瀏覽器加載完第一個框架后,會繼續將第二個框架加載到 rightFrame 中。如果代碼位于 redFrame (或 blueFrame )中,那么 parent 對象指向的就是 rightFrame。如果代碼位于 topFrame 中 ,則 parent 指向的是 top ,因為 topFrame 的直接上層框架就是最外層框架。
注意,除非最外層窗口是通過 window.open() 打開的,否則其 window 對象的 name 屬性不會包含任何值。
與框架有關的最后一個對象是 self ,它始終指向 window 。實際上,self 和 window 對象是可以互換使用的。引入 self 對象的目的就是為了與 top 和 parent 對象對應起來,因此它不格外包含其他值。
、爬蟲程序編寫模板的結構:
# 導入請求模塊
from urllib import request
# 導入轉碼模塊
from urllib import parse
# 導入隨機生成請求頭模塊
from fake_useragent import UserAgent
# 程序結構
class xxxSpider(object):
def __init__(self):
# 定義常用變量,比如url或計數變量等
def get_html(self):
# 組合url,并獲取響應內容函數,使用隨機User-Agent
def parse_html(self):
# 使用正則表達式來解析頁面,提取數據
def write_html(self):
# 將提取的數據按要求保存,csv、MySQL數據庫等
def run(self):
# 主函數,用來控制整體邏輯
if __name__ == '__main__':
# 程序開始運行時間
spider = xxxSpider()
spider.run()
二、請求頭池(直接放在一個ua_info.py文件中提供隨機調用)
ua_list = [
'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon 2.0)',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11',
'User-Agent:Opera/9.80 (Windows NT 6.1; U; en) Presto/2.8.131 Version/11.11',
'Mozilla/5.0 (Windows NT 6.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1',
'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)',
'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50',
'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)',
'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)',
'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0.1) Gecko/20100101 Firefox/4.0.1'
]
調用方式在py文件中引用:
from ua_info import ua_list
self.headers = {"User-Agent": random.choice(ua_list)}
屬性是為HTML元素提供的附加信息。
為相同的HTML元素指定不同的屬性,會呈現不同的功能或效果。
舉個例子:
比如我們在上一篇中練習過的<a></a>標簽構成的超鏈接元素中有一個href屬性,這個屬性指定的是點擊后跳轉的頁面地址,相同的<a>標簽改變href屬性就能跳轉不同的頁面。例如
<a href="https://www.bilibili.com/read/cv2720755">殲-20戰斗機</a>
<a href="http://mil.chinanews.com/mil/hd2011/2014/03-06/315569.shtml">殲-20戰斗機</a><!-- 注釋 看起來一樣的超鏈接元素因為href屬性不同,打開的頁面也不同。-->
小伙伴們自己寫的時候要注意使用半角符號,不然不能正確打開鏈接。
超鏈接元素中還有一個控制鏈接頁面打開的屬性叫做target,是用來控制新打開頁面窗口的位置。下面我們就看看target屬性為_blank和_parent的情況下的不同。例如
<a href="https://www.bilibili.com/read/cv2720755" target="_blank">殲-20戰斗機</a>
<a href="http://mil.chinanews.com/mil/hd2011/2014/03-06/315569.shtml" target="_parent">殲-20戰斗機</a><!-- 注釋 看起來一樣的超鏈接元素因為target屬性不同,打開的頁面所在窗口不同。-->
測試后,target="_blank"時,新頁面在測試頁面窗口旁邊新建一個窗口打開。
target="_parent"時,新頁面在原有測試頁面窗口中打開。
如圖所示:
左邊為_blank,右邊為_parent,點擊左邊鏈接后,新窗口在原有窗口旁邊打開。如下圖:
點擊右側
新頁面在原窗口處打開。
<a>標簽的target屬性還有_self、_top這樣的屬性,感興趣的小伙伴可以自行測試。
一般HTML元素的通用屬性有:class 、id 、style 、title這四類,其中class 、id 、style這三個屬性會在CSS的講解中詳細學習。
下面我們通過練習來看看title屬性的作用。
HTML元素屬性使用練習1
NO.1: title
title屬性用于顯示元素的額外信息使用。示例代碼如下:
<!DOCTYPE HTML>
<html>
<head>
<title>第一個網頁</title>
</head>
<body>
<h1>第一個網頁</h1><hr>
<a href="https://www.bilibili.com/read/cv2720755" target="_blank" title="中國最先進戰斗機">殲-20戰斗機</a>
</body>
</html>
效果如圖:當鼠標移動到超鏈接上時,"中國最先進戰斗機"的說明就出現在下側。
NO.2:href/src/url
這三個屬性雖然寫法不同,但都是為元素指定路徑使用的。不屬于通用屬性。
例如<a>標簽中指定鏈接路徑使用的是href,而<img>標簽中導入圖片的路徑是src,url在css中也常用來引入鏈接。具體練習大家可以翻看《HTML中的元素使用方法2——零基礎自學網頁制作》一文。
這里要介紹的是關于網頁中的路徑的兩個重要概念:絕對路徑、相對路徑。
絕對路徑是指文件在硬盤上真正存在的路徑。
相對路徑就是相對自己的目標文件的位置。
怎么理解這兩個概念呢?舉個例子:
如果我們要在"第一個頁面.html"中顯示一張圖片image1.jpg,它們都在我的"D盤/零基礎自學網頁制作"這個文件夾中。如圖:
如果用絕對路徑導入寫法是這樣的:
<img src="file:///D:/零基礎自學網頁制作/image1.jpg"/>
相對路徑這樣寫:
<img src="image1.jpg"/>
大家觀察一下,也看出了絕對路徑與相對路徑的區別了。
另外,這樣的鏈接也屬于絕對路徑:href="https://www.bilibili.com/read/cv2720755"
那么什么時候使用相對路徑什么時候使用絕對路徑呢?這個問題我會在明天深入為大家講解,這涉及到網頁或網站上傳服務器的問題。
做教程確實是沒什么人看,但是我依然會堅持,我是一名高校教師(認證資料等疫情結束后去辦公室拍攝上傳吧),把自己的知識寫出來對自己來說是一個提高,也把原來很多常用卻不甚了然的概念再次打磨清晰是我最大的收獲。本篇教程針對完全沒有基礎的網頁制作學習者,利用碎片時間學習,只要我們堅持,必然可以完成網頁制作的學習,為未來學習更加復雜的內容打下基礎!
喜歡的小伙伴請關注我,閱讀中遇到任何問題請給我留言,如有疏漏或錯誤歡迎大家斧正,不勝感激!
HTML序章(學習目的、對象、基本概念)——零基礎自學網頁制作
HTML是什么?——零基礎自學網頁制作
第一個HTML頁面如何寫?——零基礎自學網頁制作
HTML頁面中head標簽有啥用?——零基礎自學網頁制作
初識meta標簽與SEO——零基礎自學網頁制作
HTML中的元素使用方法1——零基礎自學網頁制作
HTML中的元素使用方法2——零基礎自學網頁制作
HTML元素中的屬性1——零基礎自學網頁制作
HTML元素中的屬性2(路徑詳解)——零基礎自學網頁制作
使用HTML添加表格1(基本元素)——零基礎自學網頁制作
使用HTML添加表格2(表格頭部與腳部)——零基礎自學網頁制作
使用HTML添加表格3(間距與顏色)——零基礎自學網頁制作
使用HTML添加表格4(行顏色與表格嵌套)——零基礎自學網頁制作
16進制顏色表示與RGB色彩模型——零基礎自學網頁制作
HTML中的塊級元素與內聯元素——零基礎自學網頁制作
初識HTML中的<div>塊元素——零基礎自學網頁制作
在HTML頁面中嵌入其他頁面的方法——零基礎自學網頁制作
封閉在家學網頁制作!為頁面嵌入PDF文件——零基礎自學網頁制作
HTML表單元素初識1——零基礎自學網頁制作
HTML表單元素初識2——零基礎自學網頁制作
HTML表單3(下拉列表、多行文字輸入)——零基礎自學網頁制作
HTML表單4(form的action、method屬性)——零基礎自學網頁制作
HTML列表制作講解——零基礎自學網頁制作
為HTML頁面添加視頻、音頻的方法——零基礎自學網頁制作
音視頻格式轉換神器與html視頻元素加字幕——零基礎自學網頁制作
HTML中使用<a>標簽實現文本內鏈接——零基礎自學網頁制作
*請認真填寫需求信息,我們會在24小時內與您取得聯系。