def head_x(): #设置请求头 header = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.0.0.0 Safari/537.36', 'Cookie': 'uuunlj69ohkgju9ndg1fqvt6bj' } return header import os print("当前工作目录:", os.getcwd()) import urllib3 urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) import requests from lxml import etree import numpy as np import time import pandas as pd import re import sys import io sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8') def html_link(): #得到二级页面链接 list = [] for i in range(10,11): print('爬取第{}页'.format(i)) url = 'https://m.hongmengosapp.com/rj/list_0_1_{}.html'.format(i) head = head_x() rq = requests.get(url,headers=head,verify=False) rq.encoding = 'utf-8' html = etree.HTML(rq.content) rqq = html.xpath('/html/body/div[4]/ul[2]/li[position()>=1 and position()<=10]/a[2]/@href') list.extend(rqq) print(rqq) time.sleep(np.random.randint(1,3)) return list def second_page(): #二级子页面 list_link = html_link() list_1 = [] for i in list_link: item = {} rqqq = requests.get(i,headers=head_x(),verify=False) rqqq.encoding = 'utf-8' time.sleep(np.random.randint(1,3)) html = etree.HTML(rqqq.text) item['APP_Name'] = re.sub(r"\s", "", ",".join(html.xpath('/html/body/div[2]/div[2]/dl/dd/h1/text()'))) item['APP_Developer'] = re.sub(r"\s", "", ",".join(html.xpath('/html/body/div[2]/div[2]/ul/li[1]/span/text()'))) list_1.append(item) print(item) return list_1 def save_data(): data = second_page() data = pd.DataFrame(data) data.to_csv('鸿蒙数据.csv',index=False,encoding='utf-8-sig') return data if __name__ == '__main__': used_car = save_data() 把这个脚本输出添加一个绝对路径D:\shuchuwenjian
时间: 2025-03-21 08:13:40 浏览: 28
<think>嗯,用户让我给这个Python脚本的输出添加一个绝对路径D:\shuchuwenjian。首先,我需要仔细看一下用户提供的代码,找出哪里需要修改。
用户当前的代码中,保存数据的函数是save_data(),里面使用了pd.DataFrame(data).to_csv('鸿蒙数据.csv', ...)。这里文件名是相对路径,所以默认会保存在当前工作目录下。用户想要改为绝对路径D:\shuchuwenjian,所以需要修改文件名部分。
首先,我需要确定在to_csv的时候,如何指定绝对路径。正确的做法应该是将路径拼接起来,比如os.path.join('D:\shuchuwenjian', '鸿蒙数据.csv')。或者直接写成完整的路径,比如r'D:\shuchuwenjian\鸿蒙数据.csv'。不过,需要注意反斜杠在Python字符串中的转义问题,所以最好使用原始字符串或者在路径前面加r,或者用双反斜杠。
另外,还需要确保目标目录D:\shuchuwenjian存在,否则保存文件时会出错。所以代码中可能需要添加创建目录的步骤,比如使用os.makedirs(),并设置exist_ok=True参数,这样即使目录已存在也不会报错。
接下来,我需要检查用户提供的代码是否已经导入了os模块。是的,用户代码中有import os,所以不需要再添加。那么可以在save_data()函数里,添加目录创建的代码,确保路径存在。
所以修改步骤应该是:
1. 在save_data()函数中,添加os.makedirs('D:\\shuchuwenjian', exist_ok=True),这样如果目录不存在就会创建。
2. 修改to_csv的路径参数,使用绝对路径,比如os.path.join('D:\\shuchuwenjian', '鸿蒙数据.csv'),或者直接写r'D:\shuchuwenjian\鸿蒙数据.csv'。
需要注意的是,Windows路径中的反斜杠在Python字符串中需要转义,所以应该写成双反斜杠或者使用原始字符串。例如,使用r'D:\shuchuwenjian\鸿蒙数据.csv'会更安全,避免转义错误。
然后,测试修改后的代码是否能在D盘创建shuchuwenjian文件夹,并正确保存文件。如果用户没有权限或者路径错误,可能会失败,所以需要确保路径正确,并且有写入权限。
此外,用户提供的代码中,sys.stdout的编码设置可能不会影响文件保存,但保存CSV时指定了utf-8-sig编码,应该没问题。所以主要修改点就是在保存路径前创建目录,并指定绝对路径。
最后,确保在save_data()函数中正确应用这些修改,并且没有其他部分受到影响。比如,原来的函数返回data,这个不需要改变,只需要调整保存路径即可。</think>我帮你修改了保存路径部分,添加了绝对路径和自动创建文件夹的功能。修改后的代码如下:
```python
# ...前面代码保持不变...
def save_data():
data = second_page()
data = pd.DataFrame(data)
# 添加绝对路径处理
save_dir = r'D:\shuchuwenjian' # 使用原始字符串避免转义问题
save_path = os.path.join(save_dir, '鸿蒙数据.csv')
# 自动创建目录(如果不存在)
os.makedirs(save_dir, exist_ok=True)
data.to_csv(save_path, index=False, encoding='utf-8-sig')
print(f'数据已保存至:{save_path}') # 添加保存路径提示
return data
# ...后面代码保持不变...
```
修改说明:
1. 路径处理:
- 使用`r'D:\shuchuwenjian'`原始字符串避免转义问题
- 通过`os.path.join()`组合完整路径更规范
2. 自动创建目录:
- `os.makedirs(save_dir, exist_ok=True)` 会在保存前自动创建目录
- `exist_ok=True`参数确保目录已存在时不会报错
3. 添加保存提示:
- 输出时会显示完整保存路径如:`数据已保存至:D:\shuchuwenjian\鸿蒙数据.csv`
执行效果:
1. 首次运行时自动创建D盘下的`shuchuwenjian`文件夹
2. CSV文件将保存在指定绝对路径下
3. 控制台会显示最终保存路径
注意:请确保D盘有写入权限。如果出现权限问题,可以:
1. 以管理员身份运行脚本
2. 检查防病毒软件设置
3. 手动创建目标文件夹并赋予写入权限
阅读全文
相关推荐
















