from urllib.request import urlopenurl = "http://www.baidu.com"resp = urlopen(url)
#print(resp.read().decode("utf-8"))
with open("mybaidu.html",mode="w",encoding="utf-8") as f:f.write(resp.read().decode("utf-8"))
f12
浏览器F12开发者工具高效使用教程-CSDN博客
关于`XMLHttpRequest`(XHR),以下是一些关键信息:
1. **定义和用途**:
- `XMLHttpRequest`(简称XHR)是浏览器提供的JS对象,通过它可以请求到服务器上的数据资源。
- 它允许客户端与服务器进行异步通信,是实现AJAX技术的核心,能够在不刷新页面的情况下更新部分内容。
2. **基本使用**:
- 创建XHR对象:`var xhr = new XMLHttpRequest();`
- 建立连接:`xhr.open('请求方式', '请求地址', 异步标志);`
- 发送请求:`xhr.send(数据);`
- 监听响应:`xhr.onreadystatechange = function() { if (xhr.readyState === 4 && xhr.status === 200) { console.log(xhr.responseText); } };`。
3. **GET请求**:
- 通过查询字符串的形式发起带参数请求,例如:`xhr.open('get','https://blog.csdn.net/Vest_er?id=02&name=zs');`。
4. **POST请求**:
- 发起POST请求时,需要设置请求头以告诉服务器内容类型(如JSON字符串),并发送请求体数据,例如:
var xhr = new XMLHttpRequest();
xhr.open("POST",'http://www.liulongbin.top:3006/api/formdata');
xhr.setRequestHeader('Content-Type', 'application/json');
var data = { key: 'value' };
var jsonData = JSON.stringify(data);
xhr.send(jsonData);
- 监听响应状态变化以获取服务器响应。
5. **文件上传**:
- XHR可以实现文件上传,步骤包括定义UI结构、验证用户是否选择了文件、向`FormData`中追加文件、使用xhr发起上传文件的请求、监听`onreadystatechange`事件。
6. **进度事件**:
- XHR允许监听`progress`事件来跟踪文件上传或下载的进度,例如:
var xhr = new XMLHttpRequest();
xhr.open('GET', 'https://api.example.com/largefile');
xhr.onprogress = function(event) {if (event.lengthComputable) {console.log(`Received ${event.loaded} of ${event.total} bytes`);}
};
xhr.onload = function() {if (xhr.status === 200) {console.log('File received:', xhr.responseText);}
};
xhr.send();
- 这可以帮助开发者了解文件传输的进度。
7. **与Fetch API的比较**:
- Fetch API是现代浏览器提供的一种新的网络请求API,它提供了一个更简洁、更易于理解和使用的方式来发起网络请求,使用Promise对象,简化了对网络请求的处理。
- XHR基于事件模型,使用`onreadystatechange`事件处理请求状态变化,请求和响应处理较为复杂,需要手动设置请求头和解析响应。
这些信息提供了XHR的基本概念、使用方法以及与Fetch API的比较,可以帮助你更好地理解和使用XHR进行网络请求。
Preserve log 如果勾选,在跨页面加载请求时,会保留之前的所有请求,目的是为了方便开发同学排查一些跨站请求是接口的一些问题,比如数据对比等
disable cache在网络开发和调试中,禁用缓存是一个常见的需求,因为它可以确保每次请求都能从服务器获取最新的数据,而不是从本地缓存中读取。以下是如何在不同上下文中禁用缓存的方法:
在浏览器的开发者工具(DevTools)中,你可以通过以下步骤禁用缓存:
- 打开浏览器的开发者工具。
- 点击“Network”(网络)标签。
- 勾选“Disable cache”(禁用缓存)选项。在某些浏览器中,这个选项可能标记为“Disable cache (while DevTools is open)”(在开发者工具打开时禁用缓存)。
这个设置会在整个开发者工具打开期间生效,关闭开发者工具后,缓存将重新启用。
import requests
url = "http://www.baidu.com"
resp = requests.get(url)
resp.encoding = "utf-8"
print(resp.text)
get请求
import requests
content = input('请输入你要检索的内容:')
url = f"https://www.sogou.com/web?query={content}"
headers = {"User0Agent":"xxxxxxxxx"
}
resp = requests.get(url,headers=headers)
print(resp.text)
print(resp.request.headers)
post请求
import requests
url = "https://fanyi.baidu.com/sug"
hehe = {"kw":input("请输入一个单词")
}resp = requests.post(url,data=hehe)#print(resp.text)#拿到的是文本字符串
print(resp.json())#此时拿到的直接是json数据
import requestsurl = "https://movie.douban.com/j/chart/top_list"hehe = {"type": "13","interval_id": "100:90","action": "","start": "0","limit": "20"
}headers = {"user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36"}resp = requests.get(url,params=hehe,headers=headers)#处理一个小小的反爬
print(resp.text)
print(resp.request.url)