《崔庆才Python3网络爬虫开发实战教程》学习笔记(5):将爬虫爬取到的数据存储到TXT,Word,Excel,Json等文件中

版权声明:如需转载,请与我联系。WX:reborn0502 https://blog.csdn.net/gaifuxi9518/article/details/81016429

本篇博文是自己在学习崔庆才的《Python3网络爬虫开发实战教程》的学习笔记系列,此套教程共5章,加起来共有34节课,内容非常详细丰富!

如果你也要这套视频教程的话,加我WX吧:reborn0502,然后我私信给你百度云链接,公然放出来不太好~

数据的存储是爬虫开发中一个很重要的环节,而存储的形式也分为很多种,大体来说分为两种。一种是将爬取到的数据储存到文件中,另一种就是将数据直接存储到数据库中。两种形式各有各的优点。

今天我就总结一下如何将爬取到的数据存储到TXT,Word,Excel,Json等文件中。其实这些方法大同小异,原理都差不多,只不过是分别运用了不同的库函数,使用的不同的方法而已。

1.将数据存储到TXT文件中

存到TXT文件是最简单也是最好理解的,主要是用到了open函数。接下来我就用一个小例子给大家演示一下吧。我会爬取一下知乎(www.zhihu.com)发现页面推荐的几个问题,将标题,答主,答案存储到一个TXT文件中,每个问题用“=”来隔开。废话话不多说,直接上代码讲解!

import requests,docx
from pyquery import PyQuery as pq

headers = {
	'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36'
}

url = 'https://www.zhihu.com/explore'

def get_page(url,headers):
	response = requests.get(url,headers=headers)
	#用pyquery解析工具对网页进行解析
	doc = pq(response.text)
	#对于多结果要调用items()方法,以便进行遍历
	items = doc('.explore-tab .feed-item').items()
	for item in items:
		#获取标题
		title = item.find('h2').text()
		#获取答主
		author = item.find('.author-link').text()
		#获取回答,由于回答内容中也包含HTML代码,所以还需要用pq将纯文本提取出来
		text = pq(item.find('.content').html()).text()
		#保存数据
		save_page(title,author,text)

def save_page(title,author,text):
	with open('zhihu.txt','a',encoding='utf8') as f:
		f.write(title+'\n')
		f.write(author+'\n')
		f.write(text+'\n')
		f.write('='*50+'\n'*2)

if __name__ == '__main__':
	get_page(url,headers)

2.将数据存储到Word文档中

其实Word和TXT都是文本存储容器,只不过Word文档的功能多,可以更改文本的格式。如果想要将爬取的数据放入Word文档需要先用pip安装python-docx模块,然后在文档中导入docx库,使用一些方法即可。没有什么新鲜的内容。例子还用上面那个,只需要将save_page()方法改一下就可以了:

import requests,docx
from pyquery import PyQuery as pq

headers = {
	'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36'
}

url = 'https://www.zhihu.com/explore'

def get_page(url,headers):
	response = requests.get(url,headers=headers)
	#用pyquery解析工具对网页进行解析
	doc = pq(response.text)
	#对于多结果要调用items()方法,以便进行遍历
	items = doc('.explore-tab .feed-item').items()
	global doc1
	doc1 = docx.Document('zhihu.docx')
	for item in items:
		#获取标题
		title = item.find('h2').text()
		#获取答主
		author = item.find('.author-link').text()
		#获取回答,由于回答内容中也包含HTML代码,所以还需要用pq将纯文本提取出来
		text = pq(item.find('.content').html()).text()
		#保存数据
		save_page(title,author,text)
	doc1.save('zhihu1.docx')

#存储到Word
def save_page(title,author,text):
	doc1.add_paragraph(title)
	doc1.add_paragraph(author)
	doc1.add_paragraph(text)
	doc1.add_paragraph('='*50+'\n')

if __name__ == '__main__':
	get_page(url,headers)

3.将数据存储到Excel文档中

详见这篇博文:《崔庆才Python3网络爬虫开发实战教程》学习笔记(3):抓取猫眼电影榜单TOP100电影,并存入Excel表格

4.将数据存储到Json中

Json是一种轻量级的数据交换格式,它通过对象和数组的组合来表示数据,构造简洁但是结构化程度非常高。要想将数据存储为json格式的字符串数据,需要了解两个函数:

  1. json.loads():将json文本字符串转换为Json对象(loads:load string)
  2. json.dumps():将json对象转换为json文本字符串(loads:dump string)

需要注意的是:json文本字符串必须是双引号,否则会报错:json.decoder.JSONDecodeError,也就是说json.loads()参数为双引,json对象可以用单引号,json.dumps()里面的参数可以单引,转换出来后就成了双引号。

import json

#json文本字符串
j ='''[{
			"id" : "B227645ADB1628D62732AC8ADDEAD069",
			"server" : "uk02.anss.vip",
			"server_port" : 20036,
			"server_udp_port" : 0,
			"password" : "asd100",
			"method" : "AES-256-CFB",
			"protocol" : "auth_sha1_v4",
			"protocolparam" : "",
			"obfs" : "tls1.2_ticket_auth",
			"obfsparam" : "",
			"remarks_base64" : "6Iux5Zu9Mg==",
			"group" : "『飞牛』节点",
			"enable" : "true",
			"udp_over_tcp" : "false"
}]'''
#将json文本字符串转换为json对象
js = json.loads(j)
#js对象为list数据结构
print(type(js))

#将json对象转换为json文本字符串
js1 = json.dumps(js)
#js1为字符串
print(type(js1))

猜你喜欢

转载自blog.csdn.net/gaifuxi9518/article/details/81016429