温馨提示×

python爬虫requests如何进行数据存储

小樊
85
2024-12-11 10:01:22
栏目: 云计算

在Python爬虫中,使用requests库获取数据后,可以通过多种方式将数据存储到不同的存储介质中,如文件、数据库或API等。以下是一些常见的数据存储方法:

  1. 存储到文件:

可以使用Python内置的open()函数将数据写入文件。例如,将JSON数据保存到名为data.json的文件中:

import requests
import json

url = 'https://api.example.com/data'
response = requests.get(url)
data = response.json()

with open('data.json', 'w', encoding='utf-8') as f:
    json.dump(data, f, ensure_ascii=False, indent=4)
  1. 存储到CSV文件:

可以使用Python的csv库将数据写入CSV文件。例如,将获取到的数据保存到名为data.csv的文件中:

import requests
import csv

url = 'https://api.example.com/data'
response = requests.get(url)
data = response.json()

with open('data.csv', 'w', newline='', encoding='utf-8') as f:
    writer = csv.writer(f)
    writer.writerow(['column1', 'column2', 'column3'])  # 写入表头
    for item in data:
        writer.writerow([item['column1'], item['column2'], item['column3']])
  1. 存储到数据库:

可以使用Python的数据库库(如pymysqlsqlite3等)将数据存储到数据库中。以下是一个使用pymysql将数据存储到MySQL数据库的示例:

import requests
import pymysql

url = 'https://api.example.com/data'
response = requests.get(url)
data = response.json()

# 连接数据库
conn = pymysql.connect(host='localhost', user='username', password='password', db='database_name')
cursor = conn.cursor()

# 创建表
cursor.execute('''CREATE TABLE IF NOT EXISTS data_table (
                    id INT AUTO_INCREMENT PRIMARY KEY,
                    column1 VARCHAR(255),
                    column2 VARCHAR(255),
                    column3 VARCHAR(255)
                )''')

# 插入数据
for item in data:
    sql = f"INSERT INTO data_table (column1, column2, column3) VALUES ('{item['column1']}', '{item['column2']}', '{item['column3']}')"
    cursor.execute(sql)

# 提交事务
conn.commit()

# 关闭连接
cursor.close()
conn.close()
  1. 存储到API:

如果要将数据存储到另一个API,可以使用Python的requests库发送HTTP请求。例如,将获取到的数据发送到名为https://api.example.com/store_data的API:

import requests

url = 'https://api.example.com/data'
response = requests.get(url)
data = response.json()

store_url = 'https://api.example.com/store_data'
headers = {'Content-Type': 'application/json'}
response = requests.post(store_url, json=data, headers=headers)

if response.status_code == 200:
    print('数据存储成功')
else:
    print('数据存储失败')

根据实际需求选择合适的数据存储方式。

0