爬虫爬起点小说

news/2024/7/19 9:25:13 标签: python, 爬虫

起点小说:(空山老师授课所记得笔记)(VIP暂不能爬取)
小说名 + 章名 +   文章内容
文件夹  文章内容   《--》
1、请求网站拿到数据,抽取小说名创建文件夹,抽取小说链接
2、请求小说拿到数据,抽取章名,抽取文章链接
3、请求文章拿到抽取文章内容,创建文件保存到相应文件夹
---
设置模式:----面向对象
class Spidef(object)
request.get(获取网址)---HTML源代码

import requests
from lxml import etree  
import os

# 设计模式 -- 面向对象
class Spider(object):
    def start_request(self):
        # 1. 请求网站拿到数据,抽取小说名创建文件夹,抽取小说链接
        response = requests.get("https://www.qidian.com/all")
        html = etree.HTML(response.text) # 结构化
        Bigsrc_list = html.xpath('//div[@class="book-mid-info"]/h4/a/@href')
        Bigtit_list = html.xpath('//div[@class="book-mid-info"]/h4/a/text()')
        for Bigsrc, Bigtit in zip(Bigsrc_list, Bigtit_list):
            if os.path.exists(Bigtit) == False:
                os.mkdir(Bigtit)
            self.file_data(Bigsrc, Bigtit)

    def file_data(self, Bigsrc, Bigtit):
        # 2. 请求小说拿到数据,抽取章名,抽取文章链接
        response = requests.get("https:" + Bigsrc)
        html = etree.HTML(response.text) # 结构化
        Litsrc_list = html.xpath('//ul[@class="cf"]/li/a/@href')
        Littit_list = html.xpath('//ul[@class="cf"]/li/a/text()')
        for Litsrc, Littit in zip(Litsrc_list, Littit_list):
            self.finally_file(Litsrc, Littit, Bigtit)

    def finally_file(self, Litsrc, Littit, Bigtit):
        # 3. 请求文章拿到抽取文章内容,创建文件保存到相应文件夹
        response = requests.get("https:" + Litsrc)
        html = etree.HTML(response.text) # 结构化
        # xpth是属于list数据类型,可以用"\n".join()将list(列表)转换为str(字符串)
        content = "\n".join(html.xpath('//div[@class="read-content j_readContent"]/p/text()'))
        file_name = Bigtit + "\\" + Littit + ".txt"
        print("正在存储文件:" + file_name)
        with open(file_name, "a", encoding="utf-8") as f:
            f.write(content)


spider = Spider()
spider.start_request()


http://www.niftyadmin.cn/n/920584.html

相关文章

Hhml 標題 閃爍

1.添加一個jq擴展 <script type"text/javascript"> (function ($) { $.extend({ /** * 调用方法&#xff1a; var timerArr $.blinkTitle.show(); * $.blinkTitle.clear(timerAr…

python安装包更新与问题解决

1、查询python安装包&#xff08;windos&#xff09; pip list 可以查询所有已安装的包和版本。怎么知道本地安装包的版本是否有可以更新的新版本呢&#xff1f;通过pip list函数可以实现。具体实现方式如下&#xff1a; pip list --outdated --formatlegacy pip list --outd…

jQuery Ajax 实例 全解析

jQuery确实是一个挺好的轻量级的JS框架&#xff0c;能帮助我们快速的开发JS应用&#xff0c;并在一定程度上改变了我们写JavaScript代码的习惯。 废话少说&#xff0c;直接进入正题&#xff0c;我们先来看一些简单的方法&#xff0c;这些方法都是对jQuery.ajax()进行封装以方便…

关于php操作windows计划任务管理

$cmd"schtasks /create /tn anrainie11-03-23 /tr rec.php /sc MINUTE /mo 10"; system($cmd,$i); 这样的一条命令&#xff0c;总是得不出正确的结果&#xff0c;查看apache_error.log (43,4):LogonType:错误: 帐户名与安全标识间无任何映射完成。 好了&#xff0c…

ST-LINK安装

ST-LINK安装 打开你自己安装的keil&#xff0c;并打开根据如图所示点击安装&#xff0c;pack installer 安装STM32F1xx_DFP。下载完成后&#xff0c; 在keil安装录..:\ProgramFiles\keil5\ARM\Pack\Keil\STM32F1xx_DFP\2.0\Flash中复制文件夹下的所有.FLM文件&#xff08;如ST…

visual studio2013中C1083 无法打开包括文件: “opencv2/opencv.hpp”: No such file or directory 和OpenCV3.3安装教程分享

visual studio2013中C1083 无法打开包括文件: “opencv2/opencv.hpp”: No such file or directory和OpenCV3.3安装教程 解决办法&#xff1a; 1、在属性管理器中&#xff0c;右键Debug|x64&#xff0c;点击属性&#xff0c;再按opencv3.3的配置步骤&#xff0c;把“VC目录”…

socket单工聊天工具

根据核心编程里的代码&#xff0c;自己改编的socket聊天工具 ####client####from socket import *HOSTlocalhostPORT21567BUFSIZ1024ADDR(HOST,PORT)while True: tcpCliSocksocket(AF_INET,SOCK_STREAM) tcpCliSock.connect(ADDR) dataraw_input(input your words:)if…

开源一个小类库, 用于对象间灵活的拷贝属性,还有IDataReader到实体类的转换

功能一: 背景: 编程中经常有这个需求,要在两个非常类似的实体类中,拷贝同名属性的值,(例如在WCF实体和EF实体中的拷贝...) 以往一般有两个方案 1.硬编码:执行效率很高,不过要写很多重复的代码, 2.反射: 灵活,不过效率非常低 这里提供一个灵活性不比反射差的解决方案 https://g…