本人完全没学过Python爬虫,现在需要收集7天日度操作利率数据,就用ai生成了相关代码,但是还是不行,运行的时候总是说找不到
import requests
from lxml import etree
import pandas as pd
# 目标网页的 URL
url = 'http://www.pbc.gov.cn/zhengcehuobisi/125207/125213/125431/125475/5677588/index.html'
# 设置请求头,模拟浏览器访问
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
print("开始发送请求...")
try:
# 发送 HTTP 请求获取网页内容
response = requests.get(url, headers=headers)
response.raise_for_status()
response.encoding = 'utf-8'
html_content = response.text
print(f"请求成功,状态码: {response.status_code}")
print("开始检查响应内容长度...")
content_length = len(html_content)
if content_length < 100:
print(f"警告:响应内容长度仅为 {content_length},可能内容不完整。")
else:
print(f"响应内容长度正常,为 {content_length}。")
except requests.RequestException as e:
print(f"请求出错: {e}")
exit()
print("开始解析 HTML 内容...")
# 使用 lxml 解析 HTML 内容
tree = etree.HTML(html_content)
# 定位包含 7 天和利率数据的可能元素
possible_elements = tree.xpath('//*[contains(text(), "7天") or contains(text(), ".") or contains(text(), "%")]')
rate_data = []
for element in possible_elements:
element_text = ''.join(element.itertext())
if "7天" in element_text and ('.' in element_text or '%' in element_text):
# 提取利率数据
import re
rate_match = re.search(r'(\d+\.\d+)%', element_text)
if rate_match:
rate = rate_match.group(1)
date = '2025-04-21' # 从页面可知是 21 日数据
rate_data.append({'日期': date, '7天逆回购利率(日度)': rate})
if rate_data:
df = pd.DataFrame(rate_data)
file_path = r'd:\Users\23179\Desktop\数据收集\7天逆回购利率.xlsx'
df.to_excel(file_path, index=False)
print(f"数据已保存到 {file_path}")
else:
print("未找到 7 天逆回购利率相关数据")