日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

《爬虫与网络编程基础》学习

發(fā)布時間:2025/4/5 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《爬虫与网络编程基础》学习 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

《爬蟲與網(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)入的第三方庫:
操作參考鏈接:官方文檔

# 導(dǎo)入第三方庫 import xml.etree.ElementTree as ET

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文檔。

root = ET.Element('data') info = ET.SubElement(root,'info',{'name':'小王'}) age = ET.SubElement(info,'age') age.text = '40' score = ET.SubElement(info,'score') score.text = '50'info2 = ET.SubElement(root,'info',{'name':'小賈'}) age2 = ET.SubElement(info2,'age') age2.text = '50' score2 = ET.SubElement(info2,'score') score2.text = '23'tree = ET.ElementTree(root) tree.write('test1.xml')
2. 保存XML文件
tree=ET.ElementTree(root) # root為修改后的root tree.write(filePath)
3.讀取XML文件 - 只讀操作,后續(xù)無法進(jìn)行操作

使用函數(shù):
open(file_name).readlines() # 讀入所有行數(shù)據(jù)

open_file = open('test1.xml') read_file = open_file.readlines() #讀入所有行 print(read_file)
4.解析XML文件 - 讀取操作,讀入一個xml對象,后續(xù)可以進(jìn)行操作

使用場景:
(1)從文件中讀取xml文檔
(2)從字符串中讀取xml
使用樣例:
(1)從文件中讀入

# 1.從文件中讀取xml,并進(jìn)行解析操作 import xml.etree.ElementTree as ET file_xml = 'test1.xml' tree = ET.parse(file_xml) root = tree.getroot() print(root)# 2.從字符串中讀入 sample_as_string = open(file_xml).read() print(sample_as_string) root = ET.fromstring(sample_as_string) print(root)
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ǔ)知識

  • URL(統(tǒng)一資源定位符) = “https://coggle.club/”
    協(xié)議部分https,域名coggle.club,其背后有一個對應(yīng)的IP地址,因此輸入URL后,瀏覽器要進(jìn)行域名解析(IP尋址)工作。
  • IP尋址過程,即DNS解析
    (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ā),直到找到。
  • 找到目標(biāo)服務(wù)器的IP后發(fā)起請求。HTTP報文傳輸。
  • 目標(biāo)服務(wù)器接受到請求后會選擇某個模型進(jìn)行處理,根據(jù)業(yè)務(wù)邏輯處理并返回數(shù)據(jù),最后視圖會格式化模型返回的數(shù)據(jù)給客戶端瀏覽器,瀏覽器呈現(xiàn)網(wǎng)頁給用戶。
  • 瀏覽器操作:加載,解析,渲染DOM樹。
  • 任務(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ù)方式不同。

  • 《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

    總結(jié)

    以上是生活随笔為你收集整理的《爬虫与网络编程基础》学习的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。