用python爬小说_5分钟带你用Python爬完《剑来》小说(附完整代码)!
Python资源共享群:484031800
思路:
step 1 :请求《剑来》小说站点,获取两个东西小说名称——在Python程序同目录下,以小说名称创建文件夹
每章小说的链接地址
step 1 对应代码中的 get_url()函数 ,该函数还包括用于加速爬虫的 多线程 代码,经多次测试,爬完整本小说645章,大概需要5分钟
(最后一次测试总计用时:288.94552659988403s,具体时长视网络状况而定)
step 2 :遍历(for循环)step 1 得到的所有链接,同样获取两个东西小说章节名称——在 step 1 创建的文件夹下,以小说章节名称创建.txt文件
小说章节内容——分章节保存,便于查看
step 2 对应代码中的 download()函数 ,该函数需要两个参数:一个是step 1 得到的小说章节链接url;一个是step 1创建的文件夹名称name
工具:Pycharm 用到的第三方库有:requests、pyquery、threading、os、time(非必需,用于记录程序运行总时间)
# -*- coding: UTF-8 -*-
import requests
from pyquery import PyQuery as pq
import threading
import time
import os
# 简单的防反爬处理:修改请求头内容
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36',
'Cookie': 'Hm_lvt_acb6f2bc2dcbdaa4ceeed2289f1d0283=1562677085,1562680745,1562916025; Hm_lpvt_acb6f2bc2dcbdaa4ceeed2289f1d0283=1562922723',
'Host': 'www.jianlaixiaoshuo.com',
'Referer': 'http://www.jianlaixiaoshuo.com/',
}
def get_url():
response = requests.get("http://www.jianlaixiaoshuo.com/", headers=headers)
response.encoding = response.apparent_encoding # 防止响应体出现乱码
html = pq(response.text)
name = html('body > div:nth-child(2) > div > div > div > h1 > a').text() # 获取小说名称
if os.path.exists(name) == False: # 在Python程序同目录下,以小说名称创建文件夹
os.mkdir(name)
links = html('body > div:nth-child(2) > div > dl > dd > a') # 获取每章小说的链接地址
# 构造多线程,加速爬虫
threads = [] # 多线程列表
for link in links.items():
url = 'http://www.jianlaixiaoshuo.com' + link.attr.href # 拼接出完整链接
t = threading.Thread(target=download, args=(url, name)) # 每个链接设置一个线程
threads.append(t) # 将创建的线程依次加入到多线程列表
for i in threads:
i.start() # 启动线程
for i in threads:
i.join() # 阻塞当前上下文环境的线程,直到调用此方法的线程终止
def download(url, name):
# 获取每章小说的标题和内容
response = requests.get(url, headers=headers)
response.encoding = response.apparent_encoding # 防止响应体出现乱码
html = pq(response.text)
title = html('#BookCon > h1').text() # 章节名称
content = html('#BookText').text() # 章节内容
file_name = name + '\\' + title + '.txt' # 以章节名称创建.txt文件,分章节保存小说内容
print('正在保存小说文件:' + file_name) # 提示爬取进度
with open(file_name, "w", encoding='utf-8') as f:
f.write(content)
def main(): # 主函数
start_time = time.time() # 程序开始运行的时间
get_url()
print("总计用时:%s" % (time.time()-start_time))
if __name__ == '__main__':
main()
用python爬小说_5分钟带你用Python爬完《剑来》小说(附完整代码)!相关推荐
- python 占位符_5分钟让你用Python作出最精美的Powerpoint
介绍 PowerPoint在大多数商业环境中被广泛使用.本文向您展示如何使用python通过使用python自动创建PowerPoint幻灯片. 5分钟让你用Python作出最精美的Powerpoin ...
- 这是我见过最好的Python教程:十分钟带你认识Python
这篇文章主要介绍了简洁的十分钟Python入门教程,Python语言本身的简洁也使得网络上各种Python快门入门教程有着很高的人气,本文是国内此类其中的一篇,需要的朋友可以参考下 [简介] Pyth ...
- python图像分类实战: Keras 实现 12500 张猫狗图像的精准分类 附完整代码+数据 可直接运行 毕业设计
- 太好了,一分钟带你分清Python的模块、库、包有什么联系和区别?
Python的流行主要依赖于其有众多功能强大的库(Library),Python自带的标准库(Standard Library)可以满足大多数的基础需求,除了函数库以外,模块(Module)和包(Pa ...
- 十三、写了两年多Python文章的我,带你走进Python数据分析
@Author : By Runsen @Date : 2020/5/13 作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件.导致翘 ...
- Python数据可视化:2018年北上广深空气质量分析(附完整代码)
♚ 法纳斯特,Python爱好者,喜欢爬虫,数据分析以及可视化. 就在这周偶然看到一个学弟吐槽天津的空气,不禁想起那段厚德载雾,自强不吸的日子. 无图无真相,下图为证. 左边的图是去年2月份的时候,这 ...
- 【Python】python初学者应该知道与其他语言差异化的高效编程技巧(附测试代码+详细注释)
目录 1. 交换变量 2. 集合去重 3. 列表推导.集合推导和字典推导 4. 统计字符串中各个字符出现的次数 5.优雅地打印JSON数据 6.行内的if语句 6. 符合正常逻辑的数值比较 7. 田忌 ...
- 想要快速爬取整站图片?速进(附完整代码)
大家好,我是不温卜火,是一名计算机学院大数据专业大三的学生,昵称来源于成语-不温不火,本意是希望自己性情温和.作为一名互联网行业的小白,博主写博客一方面是为了记录自己的学习过程,另一方面是总结自己 ...
- python代码手机壁纸_Python制作微信好友背景墙教程(附完整代码)
引言 前段时间,微信朋友圈开始出现了一种晒照片新形式,微信好友墙,即在一张大图片中展示出自己的所有微信好友的头像. 效果如下图,出于隐私考虑,这里作了模糊处理. 是不是很炫,而且这还是独一无二的,毕竟 ...
最新文章
- step如何打开服务器项目,STEP7项目打开及删除
- 干货丨手把手带你玩转机器学习和深度学习
- linux开发 stc_Linux下构建stc51单片机开发环境
- Topshelf:一款非常好用的 Windows 服务开发框架 转发https://www.cnblogs.com/happyframework/p/3601995.html...
- MySQL迁移过程中遇到的问题
- MySQL查看及修改字段的字符集
- [html] 如何给input的右上角加个清除的按钮?
- Java native方法availableProcessors()获取处理器数量的底层C++实现
- 前端程序员怎么面试找工作?前端面试技巧分享
- 【恋上数据结构】图代码实现、最小生成树(Prim、Kruskal)、最短路径(Dijkstra、Bellman-Ford、Floyd)
- [面试系列]牛客网前端社招面试
- Win10笔记本电脑怎么直接重置初始化
- Window部分软件图标显示不正常
- 【数据结构】【王道】【线性表】单链表的实现及基本操作(带头结点)(可直接运行)
- Computer Shader的理解记录
- js将html转换成string
- antd menu 样式修改
- DPM目标检测算法(毕业论文节选)
- 【系统架构师】软件架构设计——2需求与质量属性
- 服务器系统盘在哪里,云服务器本地磁盘在哪里
热门文章
- php 响应时间计算,计算每个请求的平均响应时间
- 6.Java 面试题整理(XML)
- Java案例:输出指定范围内纯素数个数
- 大数据学习笔记53:Flume Sink Processors(Flume接收器处理器)
- 【codevs2098】【Tyvj1625】化工厂装箱员,煞笔的人打煞笔的DP
- 【英语学习】【English L06】U06 Banking L6 Do you use online banking?
- 【英语学习】【WOTD】two-bit 释义/词源/示例
- C++程序设计【一】之 C++ 语言简介
- Stata和Matlab联合处理金融数据
- 完整html生日祝福代码_孩子生日发朋友圈祝福语(一)!