python爬取数据写入csv后日期列显示为####
时间: 2023-09-17 20:11:03 浏览: 115
这个问题通常是由于Excel默认把日期列的宽度设置得比较小,导致显示不全,从而显示成了“####”。解决方法是在打开CSV文件时,把日期列的宽度调整一下,或者在写入CSV文件时,设置日期列的宽度为一个较大的值(比如20)。具体的代码如下:
```python
import csv
with open('data.csv', 'w', newline='', encoding='utf-8') as f:
writer = csv.writer(f)
# 设置日期列宽度为20
writer.writerow(['日期'.ljust(20), '数据'])
writer.writerow(['2022-01-01', 1])
```
当然,也可以使用pandas库来写入CSV文件,pandas会自动调整列宽,避免出现这个问题。代码如下:
```python
import pandas as pd
data = {'日期': ['2022-01-01'], '数据': [1]}
df = pd.DataFrame(data)
df.to_csv('data.csv', index=False, encoding='utf-8-sig')
```
相关问题
python爬取微博数据存入数据库_Python爬取新浪微博评论数据,写入csv文件中
首先,使用Python爬取新浪微博评论数据需要以下步骤:
1. 登录微博开放平台,创建应用并获取App Key和App Secret。
2. 使用App Key和App Secret获取access_token。
3. 使用access_token获取微博的API接口。
4. 使用API接口获取微博评论数据。
5. 将数据存入数据库或写入csv文件中。
下面是一个简单的示例代码,演示如何使用Python爬取新浪微博评论数据并存入数据库中:
```python
import os
import sys
import time
import json
import pymysql
import requests
from urllib.parse import quote_plus
from datetime import datetime
from dotenv import load_dotenv
load_dotenv()
app_key = os.getenv("APP_KEY")
app_secret = os.getenv("APP_SECRET")
access_token = os.getenv("ACCESS_TOKEN")
# 数据库配置
db_host = os.getenv("DB_HOST")
db_port = os.getenv("DB_PORT")
db_user = os.getenv("DB_USER")
db_password = os.getenv("DB_PASSWORD")
db_name = os.getenv("DB_NAME")
# 连接数据库
db = pymysql.connect(host=db_host, port=int(db_port), user=db_user, password=db_password, db=db_name, charset="utf8mb4")
cursor = db.cursor()
# 微博接口配置
base_url = "https://api.weibo.com/2/comments/show.json"
max_count = 200
since_id = None
max_id = None
while True:
# 构造API请求参数
params = {
"access_token": access_token,
"source": app_key,
"count": max_count,
"since_id": since_id,
"max_id": max_id,
}
# 发送API请求
response = requests.get(base_url, params=params)
if response.status_code != 200:
print("Failed to get comments data from Weibo API.")
sys.exit(1)
# 解析API响应数据
data = json.loads(response.text)
comments = data["comments"]
# 遍历评论数据并存入数据库
for comment in comments:
created_at = datetime.strptime(comment["created_at"], "%a %b %d %H:%M:%S +0800 %Y")
text = comment["text"]
user_id = comment["user"]["id"]
user_name = comment["user"]["name"]
mid = comment["mid"]
sql = "INSERT INTO comments (created_at, text, user_id, user_name, mid) VALUES (%s, %s, %s, %s, %s)"
try:
cursor.execute(sql, (created_at, text, user_id, user_name, mid))
db.commit()
except:
db.rollback()
# 更新API请求参数
if len(comments) == 0:
break
else:
since_id = comments[0]["id"]
max_id = comments[-1]["id"]
# 控制API请求频率
time.sleep(5)
```
以上代码中使用了dotenv库来读取环境变量,因此需要在项目根目录下创建一个名为“.env”的文件,并在其中添加以下配置项:
```text
APP_KEY=your_app_key
APP_SECRET=your_app_secret
ACCESS_TOKEN=your_access_token
DB_HOST=your_db_host
DB_PORT=your_db_port
DB_USER=your_db_user
DB_PASSWORD=your_db_password
DB_NAME=your_db_name
```
注意:上述代码中的“comments”和“comments_data”均为示例数据库表名,需要根据实际情况修改。
python爬取并生成csv文件
好的,下面是 Python 爬取并生成 CSV 文件的示例代码:
```python
import csv
import requests
from bs4 import BeautifulSoup
# 发送 HTTP 请求
url = 'http://example.com'
response = requests.get(url)
# 解析 HTML 文档
soup = BeautifulSoup(response.text, 'html.parser')
data = []
# 获取需要爬取的数据
for item in soup.select('div.item'):
title = item.select('h2')[0].text.strip()
price = item.select('span.price')[0].text.strip()
data.append([title, price])
# 将数据写入 CSV 文件
with open('data.csv', 'w', newline='') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(['Title', 'Price'])
for row in data:
writer.writerow(row)
```
以上代码会从指定的网址爬取数据,并将数据写入 `data.csv` 文件中。你可以根据自己的需求修改代码中的 `url` 和 `select` 条件。
阅读全文