爬虫案例:爬取小说网站 笔趣阁

版本(一):

全部代码如下

介绍:这个版本 可以把一个小说的所有章节都爬取下来
缺点:1:爬取效率低下,2:把最新章节也爬取下来了
思路介绍:
	1:先到单个小说的页面
	2:使用开发者模式,查看单个章节的a标签--->点击查看的标签--->跳转到该章节的页面
	3:使用xpath获取到所有的a标签 中的href内容
	4:对href标签的内容进行拼接
	5:for循环 挨个请求拼接好的url
	6:保存获取到的内内容
	完成
import requests
from lxml import etree

#请求url
def get_url(url):
    response = requests.get(url=url, headers=headers)
    html = etree.HTML(response.text)
    return html

#定义路径拼接函数
def pj_url(url):
    return 'https://www.biquge.com' + url

#主函数
def resp(url):
    html = get_url(url)
    #获取小说名称
    title_name = html.xpath('//h1/text()')[0]
    all_name = html.xpath('//dd/a') #获取所有小说
    # response_url = html.xpath('//dd/a/@href')
    for name in all_name:
        xs_url = name.xpath('./@href')[0] #获取单个小说的章节

        #路径拼接
        complete_url = pj_url(xs_url) #将单个小说的路径拼接

        #对单个章节的内部内容进行数据清洗
        tible,txt = chapter(complete_url)
        txt = tible+'\n'+txt+'\n'
        # 获取到了单个章节的所有内容后 进行保存
        with open('{}2.txt'.format(title_name),'a',encoding='utf-8') as fp:
            print('{}下载完成'.format(tible))
            fp.write(txt)

#获取单个章节内容
def chapter(url):
    #获取内容
    # 请求单个章节的路径
    html = get_url(url)
    #获取章节小说的名称
    tible = html.xpath('//h1/text()')[0]
    #获取章节小说正文
    txt_list = html.xpath('//div[@id="content"]/text()')
    #对小说正文部分数据清洗,将处理好的内容保存到lis中
    lis = []
    for txt in txt_list:
        i = txt.replace('\t','').replace('\n','').replace('\r','').replace("'",'').replace('\u3000','')
        lis.append(i)
    return tible,str(lis)[2:-2].replace(r"'",'')


if __name__ == '__main__':
    #小说主路由
    # url = 'https://www.biquge.com/31_31729/'#示例路由
    url = input("请输入您想爬取的小说url:")

    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3823.400 QQBrowser/10.7.4307.400',
        # 'Cookie': 'obj=1; obj=1; UM_distinctid=176075e86b6258-0324a78ee682e2-3352487a-144000-176075e86b7515; CNZZDATA1278908080=321056136-1606439687-%7C1606981381; CNZZDATA1278862532=1058624029-1606436902-%7C1606978830'
    }
    resp(url)


运行效果如下
在这里插入图片描述
在这里插入图片描述

  • 6
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值