首页 > 解决方案 > 如何使用熊猫将这个多页抓取保存到只有一个标题且没有索引的 csv 中

问题描述

我得到的输出是一个没有标题的 csv,这就是我的问题如果我删除 header=False oi 将其设置为 header=True,我会为每个页面得到一个标题。

所以请如果有人可以帮助我使用熊猫解决这个问题。

import pandas as pd
import requests
from bs4 import BeautifulSoup

pages = [0, 10 ,20, 30]

for page in pages:
    source = requests.get('https://guru.pucp.edu.pe/questions?start={}'.format(page))

    soup = BeautifulSoup(source.content, 'html.parser')
    quest_list = soup.find('div', class_='qa-q-list')

    q_items = quest_list.find_all('div', class_='qa-q-item-main-meta-stats')

    q_description = [item.find('a').get_text() for item in q_items]
    q_when = [item.find('span', {'class' : 'qa-q-item-when-data'}).get_text() for item in q_items]
    q_user = [item.find('span', {'class' : 'qa-q-item-who-data'}).get_text() for item in q_items]
    q_points = [item.find('span', {'class' : 'qa-q-item-who-points-data'}).get_text() for item in q_items]
    q_category = [item.find('span', {'class' : 'qa-q-item-where-data'}).get_text() for item in q_items]

    question_data = pd.DataFrame(
        {

            'question_description' : q_description,
            'when_created' : q_when,
            'user_name' : q_user,
            'question_points' : q_points,
            'question_category' : q_category,

        })
     
        print(question_data)
        question_data.to_csv('question_data.csv', mode='a', header=False, index=False)

谢谢!!

标签: pythonpandasbeautifulsoup

解决方案


将带有标题的第一页保存为原样。对于所有后续页面,将标题设置为 False。

if page == 0:
    question_data.to_csv('question_data.csv', index=False)
else:
    question_data.to_csv('question_data.csv', mode='a', header=False, index=False)

推荐阅读