【python】【爬虫】爬取电子书《红星照耀中国》

一、任务

拟爬取读典籍网站的《红星照耀中国》电子书。

二、原理

该网战没有反爬措施,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/这个页面下的章节标题信息就可以了~作者这里因为不妨碍完成阅读任务就没有做多余的工作啦。

欢迎留言交流~

你可能感兴趣的:(Task)