我正在抓一个网站获取一些信息,我一直把它写到.csv;但每当我运行这个脚本时:
import requests
from bs4 import BeautifulSoup
import csv
import time
site = "url"
with open('receipts_10.csv', 'rU') as csvfile:
reader = csv.reader(csvfile, delimiter=';')
outfile = 'test.csv'
ofile = open(outfile,"wb")
writer = csv.writer(ofile,delimiter=";")
for row in reader:
response = requests.post(site, params={'appReceiptNum':row})
soup = BeautifulSoup(response.text)
caseStatus = soup.find("h4")
for string in caseStatus.stripped_strings:
writer.writerow(string)
我在csv中得到以下输出:
I;n;i;t;i;a;l; ;R;e;v;i;e;w
D;e;c;i;s;i;o;n
有什么想法吗?
答案 0 :(得分:2)
csv.writerow(iterable)需要一个可迭代的元素将用系统(或默认)分隔符分隔。
python中的字符串对象也是可迭代的,字符串的字符是iterable的元素,因此当您将此方法与单独的字符串一起使用时,其字符将被分开。
要避免此行为,您可以使用包含字符串的列表或元组。
for string in caseStatus.stripped_strings:
newString = string.replace(" ", "")
writer.writerow([newString])