将爬取的数据存储为json文件

以盗墓笔记小说阅读网为例吧,获取章节的信息和链接,毕竟我高中时也是一颗稻米,看过第一本和第八本书,电视剧电影也都看过,很喜欢张起灵和吴邪

一开始我并不知道这个网站

这次我没用Python的urllib2库,学了requests库,就用了get函数,这个确实比之前的urllib/urllib2/cookielib库简洁方便。

我本以为这个网站get的时候顶多加个headers就行了,结果还真有点麻烦... 

第一次进入这个网站的时候,有个浏览器安全检查,停留5秒,所以一开始就卡在这了,直接进不去,更别说爬人家的东西了。。。

之后在进入这个网站就没有那个检查停留了,所以要加Cookies,我用的Firebug,Cookies还是很好找的,随便选了几条,但太少可能不行

然后是中文显示问题,用sys模块处理,再加上dump函数里的ensure_ascii的参数设置,json文件才得以显示出中文

#!/usr/bin/env python  
#-*-coding:utf-8-*-  
      
import requests, json
import sys
from bs4 import BeautifulSoup

#处理编码问题
reload(sys)  
sys.setdefaultencoding("utf-8")  

user_agent = 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:55.0) Gecko/20100101 Firefox/55.0' #用户代理
headers = {'User-Agent': user_agent}
cookies = {'__cfduid':'d56050ac3d7e8ae5a71a6c49829aefb281504577002', 'ASPSESSIONIDSQCSSQRA':'GDFBBGMCACLGNJMNJFODPPLL',
 'Hm_lpvt_0154745fe13860e5efacd87a86a7cdea':'1504587470', 'bdshare_firstime':'1504577006948',
 'cf_clearance':'2faf34a20a29d30d97d3fe3cc4594fdb207978da-1504577006-86400'} #网站在电脑上留下的Cookies
res = requests.get('http://seputu.com/', headers = headers, cookies = cookies)

soup = BeautifulSoup(res.text)
content = []
for mulu in soup.find_all(class_ = 'mulu'):
	h2 = mulu.find('h2')
	if h2:
		title = h2.string
		chapter = []
		for a in mulu.find_all('a'):
			href = a.get('href')
			name = a.get('title')
			chapter.append({'href': href, 'chapter': name})
		content.append({'book': title, 'content': chapter})
with open('daomubiji.json', 'wb') as fp:  #将所得的数据存储为json文件
	json.dump(content, fp = fp, ensure_ascii = False, indent = 4, sort_keys = True)
    #dump函数有很多参数,这里也用到了好几个,第一个是目标object,第二个是要写入的文件对象,第三个处理非ascii码的字符
    #第四个是缩进,格式化显示,最后一个是排序

保存后的json文件:


  • 3
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值