《爬虫与网络编程基础》学习
《爬蟲與網(wǎng)絡(luò)編程基礎(chǔ)》學(xué)習(xí)
- 任務(wù)1:計算機(jī)網(wǎng)絡(luò)基礎(chǔ)
- Step1-2
- Step 3:關(guān)于XML格式的學(xué)習(xí)
- XML文件格式
- XML文件的常見操作
- 1.構(gòu)建xml格式文件
- 2. 保存XML文件
- 3.讀取XML文件 - 只讀操作,后續(xù)無法進(jìn)行操作
- 4.解析XML文件 - 讀取操作,讀入一個xml對象,后續(xù)可以進(jìn)行操作
- 5.獲取XML中的元素
- 6.修改XML文件
- Step 4:關(guān)于訪問某個網(wǎng)站所經(jīng)歷步驟的思考
- 計網(wǎng)中TCP網(wǎng)絡(luò)模型
- 任務(wù)2:HTTP協(xié)議與requests
任務(wù)1:計算機(jī)網(wǎng)絡(luò)基礎(chǔ)
Step1-2
創(chuàng)建一個list,將其轉(zhuǎn)換成json格式,并進(jìn)行讀寫操作
info = [['姓名','年齡','成績'],['小王',40,50],['小賈',50,23]] info import json filename = 'test1.json' with open(filename,'w') as f:json.dump(info,f)with open(filename,'r') as f:info2 = json.load(f) print(info2)Step 3:關(guān)于XML格式的學(xué)習(xí)
XML文件格式
XML是一種結(jié)構(gòu)化、層級化的數(shù)據(jù)格式,最適合體現(xiàn)XML的數(shù)據(jù)結(jié)構(gòu)就是樹。
ET提供了兩個對象:ElementTree將整個XML文檔轉(zhuǎn)化為樹,Element則代表著樹上的單個節(jié)點(diǎn)。對整個XML文檔的交互(讀取,寫入,查找需要的元素),一般是在ElementTree層面進(jìn)行的。對單個XML元素及其子元素,則是在Element層面進(jìn)行的。
對XML文件的格式做一些說明:
- Tag: 使用<>包圍的部分,如:<表示:start-tag,>表示:end-tags;
- Element:被Tag包圍的部分,如:68中的68,可以認(rèn)為是一個節(jié)點(diǎn),它可以有子節(jié)點(diǎn);
- Attribute:在Tag中可能存在的name/value對,如中的name=”Liechtenstein”,一般表示屬性
使用時需要導(dǎo)入的第三方庫:
操作參考鏈接:官方文檔
XML文件的常見操作
1.構(gòu)建xml格式文件
使用到的函數(shù):
(1)root = ElementTree.Element(‘data’) # 用于創(chuàng)建一個元素root
(2)b = ElementTree.SubElement(root,‘b’) # 用于創(chuàng)建一個子元素b
(3)ElementTree對象的write方法完成XML文檔的構(gòu)建.
使用場景:
(1)先讀取一個XML文檔,進(jìn)行修改后,再將修改后的內(nèi)容寫入文檔。
(2)從頭創(chuàng)建一個XML文檔。
2. 保存XML文件
tree=ET.ElementTree(root) # root為修改后的root tree.write(filePath)3.讀取XML文件 - 只讀操作,后續(xù)無法進(jìn)行操作
使用函數(shù):
open(file_name).readlines() # 讀入所有行數(shù)據(jù)
4.解析XML文件 - 讀取操作,讀入一個xml對象,后續(xù)可以進(jìn)行操作
使用場景:
(1)從文件中讀取xml文檔
(2)從字符串中讀取xml
使用樣例:
(1)從文件中讀入
5.獲取XML中的元素
tree和root是ElementTree中兩個很重要的類的對象:ElementTree和Element
(1)查看tag和屬性attribute:當(dāng)以解析XML文件的方式讀入一個xml文件后,得到的root是一個指向Element的對象,可以通過root.tag和root.attrib來分別查看root的tag和attrib。除此之外,還可以使用Element.get(AttributeName)來代替Element.attrib[AttributeName]來訪問。
(2)遞歸遍歷下面的所有子樹:Element.iter()
(3)Element.findall():找到當(dāng)前元素下直接子元素中帶有某個標(biāo)簽的元素。
(4)Element.find():找到第一個帶有特定標(biāo)簽的子元素。
(5)Element.text:查看Element的值或是訪問某個標(biāo)簽的內(nèi)容。
(6)Element.get():訪問標(biāo)簽的屬性值
6.修改XML文件
(1)修改Element:可直接訪問Element.text進(jìn)行修改,也可以修改Element.Attribute,也可以新增Element.set(‘AttributeName’,‘Value’)
(2)新增孩子節(jié)點(diǎn):Element.append(childElement)
(3)刪除孩子節(jié)點(diǎn):Element.remove(childElement)
Step 4:關(guān)于訪問某個網(wǎng)站所經(jīng)歷步驟的思考
計網(wǎng)中TCP網(wǎng)絡(luò)模型
計算機(jī)網(wǎng)絡(luò)基礎(chǔ)知識
協(xié)議部分https,域名coggle.club,其背后有一個對應(yīng)的IP地址,因此輸入URL后,瀏覽器要進(jìn)行域名解析(IP尋址)工作。
(1)如果最近有瀏覽過coggle.club這個網(wǎng)址,本地瀏覽器會有DNS緩存,可以直接找到IP地址
(2)如果是首次登陸或很久沒有訪問過了,首先瀏覽器會在C盤中hosts文件中查看本地是否有存儲DNS信息;若無,從路由器緩存DNS中查找;網(wǎng)絡(luò)服務(wù)商的DNS緩存中查找;如果上述幾種方式都沒有找到,那么回去根域名DNS服務(wù)中查找目標(biāo)URL對應(yīng)的IP,根域名服務(wù)器會向下級服務(wù)器轉(zhuǎn)送請求,層層下發(fā),直到找到。
任務(wù)2:HTTP協(xié)議與requests
HTTP協(xié)議參考鏈接
HTTP請求和響應(yīng)的過程
1)客戶端與Web服務(wù)器建立連接
瀏覽器與web服務(wù)器的http端口建立TCP套接字(80端口)
2)發(fā)送http請求
通過TCP套接字,客戶端向WEB服務(wù)器發(fā)送一個文本的請求報文。
3)服務(wù)器接受請求并返回響應(yīng)
web服務(wù)器解析請求,定位請求資源。
4)釋放TCP連接
根據(jù)connection模式,close則服務(wù)器主動關(guān)閉TCP連接,客戶端被動關(guān)閉連接。
若connection模式為keepalive,則連接會保持一段時間,在此段時間內(nèi)可以繼續(xù)接受請求。
5)客戶端解析HTML的內(nèi)容
客戶端瀏覽器首先解析狀態(tài)行,查看狀態(tài)碼判斷請求是否成功。然后解析響應(yīng)頭,分析后續(xù)字符集。客戶端瀏覽器讀取響應(yīng)數(shù)據(jù)HTML,
http 請求方法
1) get 方法
2)post 方法
向指定資源提交數(shù)據(jù),請求服務(wù)器進(jìn)行處理。數(shù)據(jù)被包含在請求文本中。
3)connect
HTTP中g(shù)et和post的區(qū)別
1)get提交的數(shù)據(jù)會放在url的請求行里,以?分割URL和傳輸數(shù)據(jù) ,參數(shù)之間以&相連。post方法是把提交的數(shù)據(jù)放在HTTP包的請求體中。
2)get提交的數(shù)據(jù)有大小限制,而post方法提交的數(shù)據(jù)沒有限制。
3)get與post請求在服務(wù)端獲取請求數(shù)據(jù)方式不同。
總結(jié)
以上是生活随笔為你收集整理的《爬虫与网络编程基础》学习的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数学系列 - 概率论 - 泊松分布和(负
- 下一篇: CV之路 —— Opencv学习