我在编写用于网络抓取项目的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中的输出
您可以看到每个元素都完全相同,即使我的表发生了变化
编辑:我通过为我废弃的每篇文章制作一个文件来解决我的问题.这是很多文件,但显然它对我的项目来说很好.
最佳答案 这可能是您想要的解决方案
import csv
fieldnames = ['UR', 'DC', 'PR', 'PU', 'SN', 'SU']
def write_to_csv(table, file):
writer = csv.DictWriter(file, fieldnames=fieldnames)
writer.writerow(table)