一、任务
拟爬取读典籍网站的《红星照耀中国》电子书。
二、原理
该网战没有反爬措施,HTML页面结构简单清晰,适合新手练手。(然鹅作者只是为了完成史纲课的阅读作业才决定爬这本书的……)
如果有小伙伴对爬虫基本原理和方法还不清楚的,推荐北京理工大学《网络爬虫与信息提取》这门慕课 ~ 个人感觉讲的比较基础、系统、清晰 ~
三、代码
from bs4 import BeautifulSoup
import requests
passage = ''
pages = []
for i in range(1703,1763):
pages.append('http://www.dudj.net/renwuzhuanji/22/' + str(i) + '.html')#构建要爬取的网页地址
for p in pages:
page = requests.get(p)
page.encoding = page.apparent_encoding#要根据网页编码更改成对应的编码,否则爬下来的内容是乱码
page = page.text
soup = BeautifulSoup(page,'html5lib')
passage += ('----' + soup.find('h2').text[0:soup.find('h2').text.index('更新时间')] + '\n')#获得章节标题,并去掉“更新时间balabala”字样
#这里增加‘----’的目的是方便作者之后复制到word中使用查找功能以修改标题的格式
s = soup.find('div', class_ = 'zw').find_all('p')
for i in s:
passage += (i.string + '\n')
print(len(passage))
接下来将爬取的文章保存下来即可
passage_file=open('C:\\Red_Star_over_China.txt',mode='w',encoding="utf-8")#注意:要改编码,否则会报错
passage_file.write(passage)
passage_file.close()
四、反思
1.作者没有进一步研究如何直接把文件写到docx文件中,直接把txt复制粘贴过去惹 >.<
2.另外作者发现作者好像只爬取了章节下面的小标题,没有获取大的章节标题。如果想获取的话爬取http://www.dudj.net/renwuzhuanji/22/
这个页面下的章节标题信息就可以了~作者这里因为不妨碍完成阅读任务就没有做多余的工作啦。
欢迎留言交流~