使用Python在CSV文件中编写完全相同的东西

时间:2018-03-28 11:04:05

标签: python pandas csv web-scraping

我在编写用于网络抓取项目的CSV程序时遇到了问题。

我得到的数据格式如下:

table = {
    "UR": url,
    "DC": desc,
    "PR": price,
    "PU": picture,
    "SN": seller_name,
    "SU": seller_url
}

我从一个分析html页面的循环中获取并返回给我这个表。 基本上,这个表没问题,每次循环都会改变。

现在的事情是,当我想将从循环中得到的每个表写入我的CSV文件时,它会一遍又一遍地写同样的东西。 写的唯一元素是我用循环得到的第一个元素并写入大约1000万次而不是大约45次(每页文章)

我试图用库'csv'和pandas来做香草。

所以这是我的循环:

if os.path.isfile(file_path) is False:
    open(file_path, 'a').close()
file = open(file_path, "a", encoding = "utf-8")

i = 1
while True:
    final_url = website + brand_formatted + "+handbags/?p=" + str(i)
    request = requests.get(final_url)
    soup = BeautifulSoup(request.content, "html.parser")
    articles = soup.find_all("div", {"class": "dui-card searchresultitem"})
    for article in articles:
        table = scrap_it(article)
        write_to_csv(table, file)
    if i == nb_page:
        break
    i += 1
file.close()

这里是我写入csv文件的方法:

def write_to_csv(table, file):
import csv

writer = csv.writer(file, delimiter = " ")
writer.writerow(table["UR"])
writer.writerow(table["DC"])
writer.writerow(table["PR"])
writer.writerow(table["PU"])
writer.writerow(table["SN"])
writer.writerow(table["SU"])

我在编写CSV文件和Python时非常新,但我找不到为什么这不起作用。我已经遵循了许多指南,并且或多或少地编写了用于编写csv文件的代码。

编辑:这是我的csv文件img中的输出

enter image description here

你可以看到每个元素都完全相同,即使我的表格改变了

编辑:我通过为我废弃的每篇文章制作一个文件来修复我的问题。这是很多文件,但显然我的项目很好。

1 个答案:

答案 0 :(得分:1)

这可能是您想要的解决方案

import csv

fieldnames = ['UR', 'DC', 'PR', 'PU', 'SN', 'SU']    

def write_to_csv(table, file):
    writer = csv.DictWriter(file, fieldnames=fieldnames)
    writer.writerow(table)

参考:https://docs.python.org/3/library/csv.html