爬完数据存储在csv里面,但打开会出现下图情况,没有出现我期待的两列数据,这个要怎样处理呢?
我的代码如下:
# -*- coding:utf-8 -*-
import requests
from bs4 import BeautifulSoup
import csv
user_agent = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36'
def get_data(url):
response = requests.get(url)
soup = BeautifulSoup(response.text,'lxml')
soup = soup.find('div',{'id':'listZone'}).findAll('a')
return soup
csvfile = open('D:/Python34/test.csv','wt')
writer = csv.writer(csvfile,delimiter=',')
header=['url','title']
csvrow1=[]
csvrow2=[]
try:
for links in get_data('http://finance.qq.com/gdyw.htm'):
csvrow1.append('http://finance.qq.com/'+links.get('href'))
for title in get_data('http://finance.qq.com/gdyw.htm'):
csvrow2.append(title.get_text())
writer.writerow(header)
csvfile.write('\n'.join(csvrow1))
csvfile.write('\n'.join(csvrow2))
finally:
csvfile.close()
首先你这个需求完全没有必要用
csv
这个模块来做,csv
默认以半角逗号分隔不同的列, 但是如果单列内容有半角逗号的话,excel
读取就有点尴尬. 我建议用TAB
来做分隔符(定界符), 然后直接用with open(...) as fh
这种方式写入除此之外, 你的代码还有两点小问题:
函数
get_data
其实只需要调用一次就好了, 没必要调两次url里面多了个斜杠
/
结果: