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

本文档介绍了XML文件的创建、保存、读取和解析操作,以及如何使用Python的ElementTree库进行XML元素的获取与修改。同时,概述了HTTP请求和响应的基本过程,包括TCP网络模型中的IP寻址和HTTP请求方法(GET、POST)。
摘要由CSDN通过智能技术生成

任务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”,一般表示属性

使用时需要导入的第三方库:
操作参考链接:官方文档

# 导入第三方库
import xml.etree.ElementTree as ET
XML文件的常见操作
1.构建xml格式文件

使用到的函数:
(1)root = ElementTree.Element(‘data’) # 用于创建一个元素root
(2)b = ElementTree.SubElement(root,‘b’) # 用于创建一个子元素b
(3)ElementTree对象的write方法完成XML文档的构建.

使用场景:
(1)先读取一个XML文档,进行修改后,再将修改后的内容写入文档。
(2)从头创建一个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文件 - 只读操作,后续无法进行操作

使用函数:
open(file_name).readlines() # 读入所有行数据

open_file = open('test1.xml')
read_file = open_file.readlines() #读入所有行
print(read_file)
4.解析XML文件 - 读取操作,读入一个xml对象,后续可以进行操作

使用场景:
(1)从文件中读取xml文档
(2)从字符串中读取xml
使用样例:
(1)从文件中读入

# 1.从文件中读取xml,并进行解析操作
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:当以解析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网络模型

计算机网络基础知识在这里插入图片描述

  1. URL(统一资源定位符) = “https://coggle.club/”
    协议部分https,域名coggle.club,其背后有一个对应的IP地址,因此输入URL后,浏览器要进行域名解析(IP寻址)工作。
  2. IP寻址过程,即DNS解析
    (1)如果最近有浏览过coggle.club这个网址,本地浏览器会有DNS缓存,可以直接找到IP地址
    (2)如果是首次登陆或很久没有访问过了,首先浏览器会在C盘中hosts文件中查看本地是否有存储DNS信息;若无,从路由器缓存DNS中查找;网络服务商的DNS缓存中查找;如果上述几种方式都没有找到,那么回去根域名DNS服务中查找目标URL对应的IP,根域名服务器会向下级服务器转送请求,层层下发,直到找到。
  3. 找到目标服务器的IP后发起请求。HTTP报文传输。
  4. 目标服务器接受到请求后会选择某个模型进行处理,根据业务逻辑处理并返回数据,最后视图会格式化模型返回的数据给客户端浏览器,浏览器呈现网页给用户。
  5. 浏览器操作:加载,解析,渲染DOM树。

任务2:HTTP协议与requests

在这里插入图片描述
HTTP协议参考链接

  1. HTTP请求和响应的过程
    1)客户端与Web服务器建立连接
    浏览器与web服务器的http端口建立TCP套接字(80端口)
    2)发送http请求
    通过TCP套接字,客户端向WEB服务器发送一个文本的请求报文。
    3)服务器接受请求并返回响应
    web服务器解析请求,定位请求资源。
    4)释放TCP连接
    根据connection模式,close则服务器主动关闭TCP连接,客户端被动关闭连接。
    若connection模式为keepalive,则连接会保持一段时间,在此段时间内可以继续接受请求。
    5)客户端解析HTML的内容
    客户端浏览器首先解析状态行,查看状态码判断请求是否成功。然后解析响应头,分析后续字符集。客户端浏览器读取响应数据HTML,

  2. http 请求方法
    1) get 方法
    2)post 方法
    向指定资源提交数据,请求服务器进行处理。数据被包含在请求文本中。
    3)connect

  3. HTTP中get和post的区别
    1)get提交的数据会放在url的请求行里,以?分割URL和传输数据 ,参数之间以&相连。post方法是把提交的数据放在HTTP包的请求体中。
    2)get提交的数据有大小限制,而post方法提交的数据没有限制。
    3)get与post请求在服务端获取请求数据方式不同。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值