python爬虫(小说)

导入库
import requests
from lxml import etree
import os
获取小说目录url
def catalog(url):
    """
    获取所有目录url
    :param url:网址
    :return:目录url
    """
    try:
        rq = requests.get(url = url,headers = HEADERS,timeout = 10)
        tree = etree.HTML(rq.text)
     	book_title = tree.xpath('//div[@class = "mu_h1"]/h1/text')
        mulu_list = tree.xpath('//ul[@class = "mulu_list"]/li')
        mulu_url = [url+''.join(i.xpath('./a/@href')) for i in mulu_list]
        return mulu_url
    except:
        print("catalog出错!")
解析网页数据获取文本内容
def mulu_content(mulu_url):
    """
    解析小说内容
    :param mulu_url:目录url
    :return:无
    """
    try:
        response = requests.get(url = mulu_url,headers = HEADERS,timeout = 5)
        response.encoding = response.apparent_encoding
        tree = etree.HTML(response.text)
        content = tree.xpath('//div[@id = "htmlContent"]/text()') # 内容
        content = "".join(content).strip().replace("  ","")
        title = tree.xpath('//div[@class = "h1title"]/h1/text()') # 标题
        title = "".join(title).strip()
        print(content,title)
        if not os.path.exists(r'./文件夹名称'):
            os.mkdir(r'./文件夹名称')
        if not os.path.exists(f'./文件夹名称/{title}.txt'):
            with open(f'./文件夹名称/{title}.txt','w',encoding = 'utf-8') as f:
                f.write(content)
                print(title+"采集完成!")
        else:
            print(title+'本章已采集!')
        print("小说采集完成!")
    except:
        print('mulu_content出错!')
主函数
if __name__  ==  '__main__':
    url = 'https://www.duquanben.com/xiaoshuo/13/13695/'
    HEADERS = {
        "user-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36 SLBrowser/7.0.0.8031 SLBChan/30"
    }
   for mulu_url in catalog(url):
		mulu_content(mulu_url)
		

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值