成都网站建设设计

将想法与焦点和您一起共享

Python如何爬取全站小说

这篇文章主要讲解了“Python如何爬取全站小说”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python如何爬取全站小说”吧!

建网站原本是网站策划师、网络程序员、网页设计师等,应用各种网络程序开发技术和网页设计技术配合操作的协同工作。创新互联公司专业提供成都做网站、网站制作,网页设计,网站制作(企业站、自适应网站建设、电商门户网站)等服务,从网站深度策划、搜索引擎友好度优化到用户体验的提升,我们力求做到极致!

开发环境:

  • 版 本:anaconda5.2.0(python3.6.5)

  • 编辑器:pycharm 社区版

PS:如有需要Python学习资料的小伙伴可以加下方的群去找免费管理员领取

点击加群即可免费获取Python学习资料

可以免费领取源码项目实战视频PDF文件

开始撸代码:

1、导入工具

import requests
import parsel

2、伪造浏览器的环境

headers = {
    # "Cookie": "bcolor=; font=; size=; fontcolor=; width=; Hm_lvt_3806e321b1f2fd3d61de33e5c1302fa5=1596800365,1596800898; Hm_lpvt_3806e321b1f2fd3d61de33e5c1302fa5=1596802442",
    "Host": "www.shuquge.com",
    "Referer": "http://www.shuquge.com/txt/8659/index.html",
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.92 Safari/537.36",
}

3、解析网站,爬取小说

def download_one_chapter(url_chapter, book):
    """爬取一章小说"""
    # 从浏览器里面分析出来的
    response = requests.get(url_chapter, headers=headers)
    # response.apparent_encoding
    # 自适应编码,万能的  正确率是百分之 99%
    response.encoding = response.apparent_encoding
    # print(response.text)
    """提取数据"""
    """ 
    工具  bs4 parsel
    
    xpath
    css
    re
    """
    # 把html转化为提取对象
    # 标签重复怎么办 id class 怎么二次进行提取
    sel = parsel.Selector(response.text)
    h2 = sel.css('h2::text')
    title = h2.get()
    print(title)

    content = sel.css('#content ::text').getall()
    # print(content)
    # text = "".join(content)
    # print(text)
    # w write 写入
    """写入数据"""
    # with open(title + '.txt', mode='w', encoding='utf-8') as f:
    with open(book + '.txt', mode='w', encoding='utf-8') as f:
        f.write(title)
        f.write('\n')
        for line in content:
            f.write(line.strip())
            f.write('\n')
"""爬取一本小说 会有很多章"""
# download_one_chapter('http://www.shuquge.com/txt/8659/2324752.html')
# download_one_chapter('http://www.shuquge.com/txt/8659/2324753.html')
def download_one_book(book_url):
    response = requests.get(book_url, headers=headers)
    response.encoding = response.apparent_encoding
    html = response.text
    sel = parsel.Selector(html)
    title = sel.css('h3::text').get()

    index_s = sel.css('body > div.listmain > dl > dd > a::attr(href)').getall()
    print(index_s)
    for index in index_s:
        print(book_url[:-10] + index)
        one_chapter_url = book_url[:-10] + index
        download_one_chapter(one_chapter_url, title)

1. 异常不会 try except

2. 错误重试 报错之后,重新尝试,或者是记录下来,重新请求

下载一本小说需要哪些东西

download_one_book('http://www.shuquge.com/txt/8659/index.html')
download_one_book('http://www.shuquge.com/txt/122230/index.html')
download_one_book('http://www.shuquge.com/txt/117456/index.html')

根据每一章的地址下载每一章小说根据每一本小说的目录页下载一个本小说

下载整个网站的小说 -> 下载所有类别的小说 -> 下载每一个类别下面的每一页小说

运行代码后的效果:

Python如何爬取全站小说

感谢各位的阅读,以上就是“Python如何爬取全站小说”的内容了,经过本文的学习后,相信大家对Python如何爬取全站小说这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!


本文题目:Python如何爬取全站小说
文章地址:http://chengdu.cdxwcx.cn/article/jhcshs.html