Python爬取网络小说

第三方库需求

  • requests(爬虫所需)
  • BeautifulSoup(爬虫所需)
  • docx(导入word文件所需)

代码

# -*- coding:UTF-8 -*-
from bs4 import BeautifulSoup
import requests
from docx import Document

def crawler(i):
     target = 'http://book.sbkk8.com/waiguo/dongyeguiwu/eyi/'+str(206670-i)+'.html'
     req = requests.get(url = target)#向网站发送请求
     req.encoding = "gbk"#设置编码格式为gbk模式,防止出现中文乱码
     html = req.text
     bf = BeautifulSoup(html,features='lxml')
     texts = bf.find_all('div',id='content') #寻找对应的标签值
     '''
     注意单引号,class后有下划线。因为class是关键字
     class属性是"nr_nr"的标签是唯一的
     '''
     document.add_paragraph(texts[0].text)#只返回文本内容,并将其写入文档
     

if __name__ == "__main__":
    document = Document()#创建文档对象
    for i in range (0,14):
        crawler(i)
        print('正在爬取第%d章'%(i+1))
    print('爬取完毕!')
    document.save('恶意.docx')#保存文档

代码选讲

  • 分章节爬取小说的方法
    本文以http://book.sbkk8.com/waiguo/dongyeguiwu/eyi/
    为例:
    小说第一章的网址为:
    http://book.sbkk8.com/waiguo/dongyeguiwu/eyi/206670.html
    小说最后一章的网址为:
    http://book.sbkk8.com/waiguo/dongyeguiwu/eyi/206657.html
    章节数加一,最后的数字减一。于是我们可以用一个通式构造各章节小说的网址,之后在主函数里遍历即可。
'http://book.sbkk8.com/waiguo/dongyeguiwu/eyi/'+str(206670-i)+'.html'
  • beautifulsoup爬取网页的特定内容
    我们想要爬取的是小说的正文部分。选中正文部分,点击检查:
    Python爬取网络小说_第1张图片
    可以看到,正文部分所对应的标签值是'div',id='content',于是我们可以通过texts = bf.find_all('div',id='content')来查找正文。

    效果

    Python爬取网络小说_第2张图片

你可能感兴趣的:(python,html,爬虫)