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