我有一个脚本,用于从网站上抓取数据并将其存储到电子表格中
with open("c:\source\list.csv") as f:
for row in csv.reader(f):
for url in row:
r = requests.get(url)
soup = BeautifulSoup(r.content, 'lxml')
tables = soup.find('table', attrs={"class": "hpui-standardHrGrid-table"})
for rows in tables.find_all('tr', {'releasetype': 'Current_Releases'})[0::1]:
item = []
for val in rows.find_all('td'):
item.append(val.text.strip())
with open('c:\output_file.csv', 'a', newline='') as f:
writer = csv.writer(f)
writer.writerow({url})
writer.writerows(item)
到目前为止,当这个脚本运行时,大约有50个新行被添加到CSV文件的底部(与附加功能完全相同)但我希望它做的是确定是否有重复的条目在CSV文件中跳过它们,然后更改不匹配项。
我觉得这应该是可能的,但我似乎无法想到一种方式
有什么想法吗?
答案 0 :(得分:1)
如果不从CSV文件中读取数据,则无法执行此操作。另外,为了改变错配",你只需要重写它们。
f = open('c:\output_file.csv', 'w', newline='')
writer = csv.writer(f)
for item in list_to_write_from:
writer.writerow(item)
在此,您假设list_to_write_from
将包含您需要的最新数据形式。
答案 1 :(得分:0)
我找到了解决此问题的方法,因为提供的答案对我不起作用
我补充说:
if os.path.isfile("c:\source\output_file.csv"):
os.remove("c:\source\output_file.csv")
在我的代码的顶部,因为这将检查该文件是否存在,并删除它,只是为了稍后用最新的信息重新创建它。这是一种管道胶带的做法,但它有效。