Python爬虫(九)通过txt/Excel保存爬虫数据

原文:https://www.jianshu.com/p/b4ce7ed59733

 

通过前面的学习,你应该已经知道怎么提取到爬虫数据了。但是提取数据之后,我们应该讲数据保存起来,或者进一步应用起来,爬虫才有意义。爬虫最常用的数据保存方法有txt文件、Excel文件、数据库。在这里我主要讲解txt文件保存和Excel文件保存,对于数据库保存感兴趣的同学,可以再自行学习。

txt文件保存

该方法主要是以列表的形式将数据存储到.txt文件中,其核心代码为

with open('save.txt', 'a', encoding='utf-8') as f:
    f.write()
    f.close()

我们以上一小节Python爬虫(八)数据处理方法之Xpath提取到的书籍名字为例子,演示怎么将数据保存到txt文件中。在本例中,是通过for循环遍历字典元素实现的。将数据以列表的形式存储到txt文件中的具体代码如下:

import requests
from lxml import etree

url1 = 'https://book.douban.com/tag/%E6%97%A5%E6%9C%AC%E6%96%87%E5%AD%A6?start=0&type=T/'
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.119 Safari/537.36'}
response = requests.get(url1, headers=headers)
html_str = response.content.decode()
html = etree.HTML(html_str)
#创建xpath列表
html_name = html.xpath("//ul[@class='subject-list']/li")
for li in html_name:
    item = {}
    #获取到每一个li下的书籍名字,并去除多余的\n
    item['name'] = li.xpath('./div[2]/h2/a/text()')[0].replace("\\n", " ").strip()
    with open('save_bookname.txt', 'a', encoding='utf-8') as f:
        f.write(json.dumps(item, ensure_ascii=False))
        #每保存完一行就换行
        f.write('\n')

输出结果如下:

save_bookname_txt文件.png
Excel文件保存

将爬取到的数据存储到Excel文件中的做法和将数据存储到txt文件中类似,但是需要用到python的xlwt库,其核心代码为

#1.创建book,sheet对象
book=xlwt.Workbook('encodeing=utf-8')
sheet=book.add_sheet('表格名')
#2.创建表头
sheet.write(行,列,值)
#3.写入
sheet.write(行,列, 值)
#4.保存
book.save('文件名.xls')

我们仍然以上一小节Python爬虫(八)数据处理方法之Xpath提取到的书籍名字为例子,演示怎么将数据保存到Excel文件中。在本例中,先通过for循环将所有的数据存取到列表中,再通过for循环遍历列表元素保存到Excel文件中。具体代码如下:

import requests
from lxml import etree

url1 = 'https://book.douban.com/tag/%E6%97%A5%E6%9C%AC%E6%96%87%E5%AD%A6?start=0&type=T/'
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.119 Safari/537.36'}
response = requests.get(url1, headers=headers)
html_str = response.content.decode()
html = etree.HTML(html_str)
#创建xpath列表
html_name = html.xpath("//ul[@class='subject-list']/li")
for li in html_name:
    item = {}
    #获取到每一个li下的数据名字,并去除多余的\n
    item['name{}'] = li.xpath('./div[2]/h2/a/text()')[0].replace("\\n", " ").strip()
    namelist.append(item)
book = xlwt.Workbook(encoding='utf-8')
sheet = book.add_sheet('bookname')
sheet.write(0, 0, '书名')
i = 1
for name_dict in namelist:
    #写入书名
    sheet.write(i, 0, name_dict['name'])
    #每写完一行数据,下一次换到下一行
    i += 1
book.save('E:\ClubKingdee\save_bookname.xls')

输出结果如下:

save_bookname_Excel文件.png

作者:咸甜怪
链接:https://www.jianshu.com/p/b4ce7ed59733
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。