Python爬虫:如何用requests模块从网站本地保存XML文件?
如何用Python下载并处理目标XML文件
你用requests.get获取到的r.content就是XML文件的二进制内容,直接写入本地文件就能得到完整的XML,也可以直接在内存中解析处理,具体方法如下:
1. 直接保存XML到本地文件
这是最直接的方式,把字节串写入文件即可:
import requests url = "https://fnet.bmfbovespa.com.br/fnet/publico/downloadDocumento?id=465601" r = requests.get(url) # 先验证请求是否成功 if r.status_code == 200: # 以二进制写入模式打开文件,写入内容 with open("downloaded_document.xml", "wb") as xml_file: xml_file.write(r.content) print("XML文件已成功保存") else: print(f"请求出错,状态码:{r.status_code}")
- 使用
wb模式(二进制写入)能避免编码问题,确保XML文件内容完整。 - 你可以修改
"downloaded_document.xml"为任意你想要的本地文件名和路径。
2. 不保存本地,直接在内存中解析XML
如果不需要保存文件,想直接处理XML内容,可以把字节串解码为字符串后用XML库解析:
import requests import xml.etree.ElementTree as ET url = "https://fnet.bmfbovespa.com.br/fnet/publico/downloadDocumento?id=465601" r = requests.get(url) if r.status_code == 200: # 解码为字符串(requests会自动识别响应编码,也可手动指定如r.encoding='utf-8') xml_str = r.text # 解析XML root = ET.fromstring(xml_str) # 示例:打印根节点名称 print(f"XML根节点:{root.tag}") # 这里可以添加你的XML处理逻辑 else: print(f"请求出错,状态码:{r.status_code}")
可能遇到的问题及解决
如果请求被网站拦截,可尝试添加请求头模拟浏览器:
headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36" } r = requests.get(url, headers=headers)
内容的提问来源于stack exchange,提问作者brunosd1
相关产品推荐
相关产品推荐

