找回密码
  注册[Register]
查看: 480|回复: 8

[python] 笔趣阁全站小说爬取

[复制链接]
发表于 2021-4-24 15:27 来自手机 | 显示全部楼层 |阅读模式
禁止求评分、诱导评分、互刷评分、互刷悬赏值,违规者封号处理。
禁止发布推广、邀请码、邀请链接、二维码或者有利益相关的任何推广行为。
所有非原创软件请发布在【精品软件区】,发帖必须按照本版块版规格式发帖。

本帖最后由 718718 于 2021-4-24 15:28 编辑

笔趣阁全站小说爬取

1.使用了五个模块

mport time
import requests
import os
import random
from lxml import etree
源代码:


#https://www.biquge.info/wanjiexiaoshuo/   笔趣阁小说全本爬虫
[Python] 纯文本查看 复制代码
import time
import requests
import os
import random
from lxml import etree

noName = ['#','/','\\',':','*','?','\"','<','>','|']     #\/:*?"<>|
def strZ(_str): #将特殊字符转换为空格
    ret = ''
    for _ in _str:
        if _ in noName:
            ret += " "
        else:
            ret += _
    return ret
def main():
    filePath = './保存小说'
    if not os.path.exists(filePath):
        os.mkdir(filePath)
    header = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.128 Safari/537.36 Edg/89.0.774.77"
    }
    url = 'https://www.biquge.info/wanjiexiaoshuo/'
    page = requests.get(url=url, headers=header)
    page.encoding = 'utf-8'
    tree = etree.HTML(page.text)
    page_last = tree.xpath('//div[@class="pagelink"]/a[@class="last"]/text()')[0]
    for page_i in range(1, int(page_last)):
        url = 'https://www.biquge.info/wanjiexiaoshuo/' + str(page_i)
        page = requests.get(url=url, headers=header)
        page.encoding = 'utf-8'
        tree = etree.HTML(page.text)
        li_list = tree.xpath('//div[@class="novelslistss"]/ul/li')
        for li in li_list:
            page_url = li.xpath('./span[@class="s2"]/a/@href')[0]  # 目录链接
            page_title = strZ(li.xpath('./span[@class="s2"]/a/text()')[0])
            page = requests.get(url=page_url, headers=header)
            page.encoding = 'utf-8'
            page_tree = etree.HTML(page.text)
            _filePath = filePath + '/' + page_title
            if not os.path.exists(_filePath):
                os.mkdir(_filePath)
            page_dl_list = page_tree.xpath('//div[@class="box_con"]/div[@id="list"]')
            page_dl_list = page_tree.xpath('.//dl/dd')
            for _ in page_dl_list:
                _page_url = page_url + _.xpath('./a/@href')[0]
                _page_title = _filePath + '/' + strZ(_.xpath('./a/@title')[0]) + '.txt'
                _page = requests.get(_page_url, headers=header)
                _page.encoding = 'utf-8'
                _tree = etree.HTML(_page.text)
                _page_content = _tree.xpath('//div[@id="content"]/text()')
                fileContent = ''
                for _ in _page_content:
                    fileContent += _ + '\n'
                with open(_page_title, 'w', encoding='utf-8') as fp:
                    fp.write(fileContent)
                    print('%s成功下载到本地' % (_page_title))
                time.sleep(random.uniform(0.05, 0.2))
if __name__ == '__main__':
    main()

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2021-4-24 15:39 | 显示全部楼层

感谢分享,谢谢提供分享
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2021-4-24 15:42 | 显示全部楼层
谢谢大牛
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2021-4-24 15:43 | 显示全部楼层
多谢楼主分享
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2021-4-24 15:58 | 显示全部楼层
谢谢@Thanks!
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2021-4-24 16:06 | 显示全部楼层
谢谢大佬分享
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2021-4-24 16:27 | 显示全部楼层

感谢楼主的分享
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2021-4-24 20:43 | 显示全部楼层

支持楼主,谢谢分享。
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

发表于 2021-4-25 11:17 | 显示全部楼层
谢谢分享
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心值】和【牛币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 有用 没用

使用道具 举报

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

RSS订阅|手机版|小黑屋|广告投放|大牛论坛

GMT+8, 2024-5-13 08:23 , Processed in 0.037074 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表