【问题标题】:Pandas writes only the last line in a CSV FilePandas 只写入 CSV 文件的最后一行
【发布时间】:2017-10-05 12:07:42
【问题描述】:

我正在从 txt 文件中抓取 url 并将其导出到 csv 文件。但在所有过程之后,我的代码只写入了最后一个 url 中的信息。我的猜测是我忘记了一个循环。但是哪里? 这是我的代码:

import requests
from bs4 import BeautifulSoup
import pandas as pd
from urllib import urlopen

file = open('urls.txt', 'r')
filelines = (line.strip() for line in file)
for code in filelines:
    site = urlopen(code)
    soup = BeautifulSoup(site, "html.parser")
    final = soup.find_all("span", {"class": "bd js-title-main-info"})
    print final

records = []
for pagetxt in final:
    print pagetxt.text
    records.append((pagetxt.text))
df = pd.DataFrame(records, columns=['product name'])  
df.to_csv('test.csv', index=False, encoding='utf-8') 

谢谢

【问题讨论】:

    标签: python-2.7 dataframe web-scraping python-requests export-to-csv


    【解决方案1】:

    当您从文件中获取数据时,您只保留变量final 中的最后一个值。尝试更早地追加数据(我已经用##### 标记了更改):

    import requests
    from bs4 import BeautifulSoup
    import pandas as pd
    from urllib import urlopen
    
    file = open('urls.txt', 'r')
    filelines = (line.strip() for line in file)
    records = []                         ######
    for code in filelines:
        site = urlopen(code)
        soup = BeautifulSoup(site, "html.parser")
        final = soup.find_all("span", {"class": "bd js-title-main-info"})
        print final
    
        for pagetxt in final:               ######
           print pagetxt.text               ######
           records.append((pagetxt.text))   ######   
    
    df = pd.DataFrame(records, columns=['product name'])  
    df.to_csv('test.csv', index=False, encoding='utf-8') 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-28
      • 2020-01-11
      • 1970-01-01
      相关资源
      最近更新 更多