• 大小: 2.71KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2024-05-11
  • 语言: Python
  • 标签: 小说  爬虫  

资源简介

本例子0积分下载,爬取单本书的所有章节内容。
重点:121行的time.sleep(6)不能删,网站有反爬虫!
2021-11-01重新上传代码,顶点换域名了,代码用不了,我随便改了下,勉强能用,有能力的自己改代码完善。30

资源截图

代码片段和文件信息

# -*- coding:utf-8 -*-
#@File:DDXS.py
import random
import requests
from lxml import etree
import time



# 获取目录页面的html
def get_chapter_html(url headers):
    resp = requests.get(urlheaders=headers)
    resp.encoding = ‘gbk‘
    html = resp.text
    if ‘顶点小说‘ in html:
        print(‘----获取目录html成功----‘)
        return resp.text
    else:
        print(‘----获取目录html失败----‘)
        return ‘获取html失败‘


# 获取所有章节的url
def get_chapter_url_list(html):
    tree = etree.HTML(html)
    book_name = tree.xpath(‘//*[@id=“info“]/h1/text()‘)[0]
    chapter_url_x = tree.xpath(‘//*[@id=“list“]/dl/dd/a/@href‘)
    if len(chapter_url_x) > 12:
        print(‘----获取所有章节url成功----‘)
        chapter_url_list = chapter_url_x[:]
    else:
        print(‘----获取所有章节url失败----‘)
        chapter_url_list = []
    return chapter_url_list book_name

# 下载并写入
def get_save_txt(chapter_url headers f):
    try:
        html = requests.get(chapter_url headers=headers timeout=10)
        html.encoding = “gbk“
        html = html.text
    except requests.exceptions.RequestException as e:
        print(e)
        return ‘获取失败‘
    tree = etree.HTML(html)
    # 获取章节名
    chapter_name = tree.xpath(‘//*[@class=“bookname“]/h1/text()‘)
    if len(chapter_name) > 0:
        chapter_name = chapter_name[0]
    else:
        chapter_name = ‘获取章节名失败|url:‘ + chapter_url
        print(‘----获取章节名失败----‘)
        print(chapter_name)
        print(‘--------------------‘)
        return ‘获取失败‘
    # 获取小说内容
    content_list = tree.xpath(‘//div[@id=“content“]/text()‘)
    if len(content_list) > 0:
        text = chapter_name + “\n“
        for content in content_list:
            text += content + ‘\n\n‘
        f.write(text)
        f.flush()  # 刷新内存缓存区
        print(‘写入成功:‘+ chapter_name + ‘--URL:‘ + chapter_url + ‘\n‘)
    else:
        print(‘----获取内容失败----‘)
        print(‘章节名:‘ + chapter_name)
        print(‘URL:‘ + chapter_url)
        print(‘--------------------‘)
        return


def main():
    # 程序开始时的时间
    time_start = time.time()

    main_url = ‘https://www.ddxs.cc/‘
    book_url = ‘https://www.ddxs.cc/ddxs/182824/‘
    book_name = ‘等待获取书名‘

    user_agent_list = [
        “Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML like Gecko) Chrome/68.0.3440.106 Safari/537.36“
        “Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML like Gecko) Chrome/67.0.3396.99 Safari/537.36“
        “Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML like Gecko) Chrome/64.0.3282.186 Safari/537.36“
        “Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML like Gecko) Chrome/62.0.3202.62 Safari/537.36“
        “Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML like Gecko) Chrome/45.0.2454.101 Safari/537.36“
        “Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)“
        “Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10.5; en-US; rv:1.9.2.15) Gecko/20

评论

共有 条评论