一、关于毛选5
《毛泽东选集》第5卷是毛泽东1949年以后著作的选集。这本书的编辑、出版用了近十年的时间,时间贯穿了整个文革。
由于特殊原因,这本书在1982年被停止发行,至今也未重新进行出版。
在豆瓣网站上,这本书获得了8.8的高分评价,可以说很是值得一看。
本篇文章,我们将会介绍从网站下采集毛选5的内容并保存为xhtml文件,方便后续将其制作为EPUB格式的电子书。
二、目标网站
机缘巧合,笔者在【读典籍】网(http://www.dudj.net) 发现了毛选5的电子版:
其内容分章节显示在不同的网页上:
每一章的内容都是独立且纯粹的:
可以说这个结构很适合我们使用Python编写代码对文章内容进行采集。
三、采集代码
根据网站网页的特点,我们首先梳理一下采集的思路:
- 1、访问目录页获取目录所有章节的链接;
- 2、遍历获取的所有章节链接并请求,获取每一章的内容;
- 3、新建xhtml文件,将内容写入xhtml文件中;
接下来,开始我们的代码编写。
首先引入相关的模块:
# coding:utf-8
# 州的先生
import requests
from bs4 import BeautifulSoup
import time
import random
根据网站的具体情况,设置一个header字典作为请求头:
headers = {
'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Accept-Encoding':'gzip, deflate, sdch',
'Accept-Language':'zh-CN,zh;q=0.8',
'Cache-Control':'max-age=0',
'Connection':'keep-alive',
'Host':'www.dudj.net',
'If-Modified-Since':'Sat, 28 Oct 2017 14:18:10 GMT',
'If-None-Match':"13c16e2-739a-55c9c1335c87a",
'Referer':'http://www.dudj.net/hongsejingdian/53/',
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',
}
请求目录页并解析每一章节的链接:
url = 'http://www.dudj.net/hongsejingdian/53/'
wbdata = requests.get(url,headers=headers)
soup = BeautifulSoup(wbdata.content,'lxml')
# print(soup)
contents = soup.select('table')[1]
contents_link = contents.select('a')
link_list = []
for link in contents_link:
link_name = link.get_text()
link_href = link.get('href')
# print(link_name,link_href)
link_list.append(link_href)
link_list列表中就是所有章节的链接,我们对每一个链接再次进行请求,并解析响应内容保存到文本文件中:
curl = 'http://www.dudj.net'+link
contentdata = requests.get(curl,headers=headers)
csoup = BeautifulSoup(contentdata.content,'lxml')
ctitle = csoup.select_one('div.atitle > h2').get_text()
ccontent = csoup.select('div.zw > p')
print(ctitle)
c_no = ctitle.split('、')[0]
c_name = ''.join(ctitle.split('、')[1:])
# print(c_no,c_name)
if len(c_no) ==1:
c_no = '0' + c_no
with open(c_no+c_name+'.xhtml','a+',encoding='utf-8') as files:
files.write('''<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<link href="../Styles/Font_Style.css" type="text/css" rel="stylesheet"/>
<link href="../Styles/Main_Style.css" type="text/css" rel="stylesheet"/>
</head>
<body>
<div style="text-align: right;"><img alt="logo" src="../Images/logo.png"/></div>
''')
for c in ccontent:
files.writelines("<p>{}</p>".format(c.get_text()))
files.write('''
</body>
</html>
''')
print('写入完成')
四、结果
最后代码运行完毕,当前目录下就会多出71个xhml文件:
打开其中一个文件,内容如下图所示:
这样,我们就采集并保存毛选5的内容成功了,下一步,我们将继续借助Python将这些xhtml文件制作为EPUB格式的电子书,敬请期待!
如需数据,请关注州的先生微信公众号并回复“0016”获取下载地址;
如需完整代码+数据,请访问 https://zmister.com/archives/692.html 获取下载地址;
文章版权所有:州的先生博客,转载必须保留出处及原文链接