Web scraper / CSV未以正确的格式保存
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Web scraper / CSV未以正确的格式保存相关的知识,希望对你有一定的参考价值。
我制作的网络刮板效果很好。但是csv文件没有正确的配置。我认为csv_writer.writerow([])
的位置有问题还是整个for
陈述有误?我想像这样写:"header","source","text"
from bs4 import BeautifulSoup
import requests
from html.parser import HTMLParser
import csv
source = requests.get('http://trenertadej.si/pocep-je-osnovna-vaja-za-noge/').text
soup = BeautifulSoup(source,'html.parser')
csv_file = open('novi.csv', 'w')
csv_writer = csv.writer(csv_file)
csv_writer.writerow(['header','source','text'])#column names,headers to my csv file
div = soup.find('div',class_="fusion-column-wrapper")# to je iskalno polje kjer iščem vse elemente...
try:
for h in soup.find_all('h2'):
header = h.text
print(header)
print()
#exit()
#csv_writer.writerow([header])
except Exception as e:
p = None
try:
for img_source in soup.find('div',class_="fusion-column-wrapper").find_all('img'):
source = img_source['src']
print(source)
#exit()
#csv_writer.writerow([source])
except Exception as e:
p = None
try:
for p in soup.find_all('p'):
text = p.text
print(text)
#exit()
#csv_writer.writerow([text])
except Exception as e:
p = None
csv_file.close()
答案
顾名思义,csvwriter.writerow()
方法应该写一行值。您在这里尝试做的(我假设是)分别为每一列编写所有值。我建议将代码完全重构为小的函数,在该函数中首先解析数据,将其存储到适当的数据结构中(一个列表列表,其中每个列表代表每一行的值应足够),然后将其打印到csv 。
以上是关于Web scraper / CSV未以正确的格式保存的主要内容,如果未能解决你的问题,请参考以下文章