随笔记录方便自己和同路人查阅。

#------------------------------------------------我是可耻的分割线-------------------------------------------

 这是一个爬取用户17k小说网站爬虫。

#------------------------------------------------我是可耻的分割线-------------------------------------------

# !/usr/bin/env python
# -*- coding: UTF-8 -*-
__author__ = 'Mr.Li' from bs4 import BeautifulSoup
import requests, sys """
类说明:下载《17K》网小说
Parameters:

Returns:

Modify:
2019-05-13
"""
class downloader(object):
def __init__(self):
""" :rtype: object
"""
self.server = 'http://www.17k.com' # 网站地址
self.target = 'http://www.17k.com/list/2731559.html' # 目录URL地址
self.names = [] #存放章节名
self.urls = [] #存放章节链接
self.nums = 0 #章节数 """
函数说明:获取下载链接
Parameters:

Returns:

Modify:
2017-09-13
"""
def get_downloader_url(self):
req = requests.get(self.target) # 获取URL地址内容
req.encoding = 'utf-8' # 转码
html = req.text # 保存get到的内容
div_bf = BeautifulSoup(html, 'html.parser') # 使用BeautifulSoup进行解析
div = div_bf.find_all('div', class_='Main List') # 查询符合条件的内容 a_bf = BeautifulSoup(str(div[0]),'html.parser')#重新解析
a = a_bf.find_all('a')#查找元素为'a'的内容 self.nums = len(a[11:])
for each in a[11:]:
self.names.append(each.string)#把章节名称添加到变量
self.urls.append(self.server + each.get('href'))#把章节URL地址添加到变量 """
函数说明:获取章节内容
Parameters:
target - 下载连接(string)
Returns:
texts - 章节内容(string)
Modify:
2019-05-13
""" def get_contents(self,target):
req = requests.get(target)#获取URL地址内容
req.encoding = 'utf-8'#解码
html = req.text
bf = BeautifulSoup(html, 'html.parser')#解析
texts = bf.find_all('div', class_='readAreaBox content')#使用查找章节正文
texts = texts[0].text.replace('\xa0' * 8, '\n\n')#使用replace方法,剔除空格,替换为回车进行分段
return texts """
函数说明:将爬取的文章内容写入文件
Parameters:
name - 章节名称(string)
path - 当前路径下,小说保存名称(string)
text - 章节内容(string)
Returns:

Modify:
2019-05-13
"""
def writer(self, name, path, text):
write_flag = True
with open(path, 'a', encoding='utf-8') as f:
f.write(name + '\n')
f.writelines(text)
f.write('\n\n') if __name__ == "__main__":
dl = downloader()
dl.get_downloader_url()
print('《正道潜龙》开始下载:')
for i in range(dl.nums):
dl.writer(str(dl.names[i]), '正道潜龙.txt', dl.get_contents(dl.urls[i]))
sys.stdout.write(" 已下载:%.3f%%" % float(i/dl.nums) + '\r')
sys.stdout.flush()
print('《正道潜龙》下载完成')

  

Python爬虫-爬取17K小说的更多相关文章

  1. 使用scrapy爬虫,爬取17k小说网的案例-方法一

    无意间看到17小说网里面有一些小说小故事,于是决定用爬虫爬取下来自己看着玩,下图这个页面就是要爬取的来源. a 这个页面一共有125个标题,每个标题里面对应一个内容,如下图所示 下面直接看最核心spi ...

  2. 使用scrapy爬虫,爬取17k小说网的案例-方法二

    楼主准备爬取此页面的小说,此页面一共有125章 我们点击进去第一章和第一百二十五章发现了一个规律 我们看到此链接的  http://www.17k.com/chapter/271047/6336386 ...

  3. Python爬虫爬取全书网小说,程序源码+程序详细分析

    Python爬虫爬取全书网小说教程 第一步:打开谷歌浏览器,搜索全书网,然后再点击你想下载的小说,进入图一页面后点击F12选择Network,如果没有内容按F5刷新一下 点击Network之后出现如下 ...

  4. Python爬虫|爬取喜马拉雅音频

    "GOOD Python爬虫|爬取喜马拉雅音频 喜马拉雅是知名的专业的音频分享平台,用户规模突破4.8亿,汇集了有声小说,有声读物,儿童睡前故事,相声小品等数亿条音频,成为国内发展最快.规模 ...

  5. Python爬虫 - 爬取百度html代码前200行

    Python爬虫 - 爬取百度html代码前200行 - 改进版,  增加了对字符串的.strip()处理 源代码如下: # 改进版, 增加了 .strip()方法的使用 # coding=utf-8 ...

  6. 用Python爬虫爬取广州大学教务系统的成绩(内网访问)

    用Python爬虫爬取广州大学教务系统的成绩(内网访问) 在进行爬取前,首先要了解: 1.什么是CSS选择器? 每一条css样式定义由两部分组成,形式如下: [code] 选择器{样式} [/code ...

  7. 使用Python爬虫爬取网络美女图片

    代码地址如下:http://www.demodashi.com/demo/13500.html 准备工作 安装python3.6 略 安装requests库(用于请求静态页面) pip install ...

  8. python爬虫爬取内容中,-xa0,-u3000的含义

    python爬虫爬取内容中,-xa0,-u3000的含义 - CSDN博客 https://blog.csdn.net/aiwuzhi12/article/details/54866310

  9. python爬虫—爬取英文名以及正则表达式的介绍

    python爬虫—爬取英文名以及正则表达式的介绍 爬取英文名: 一.  爬虫模块详细设计 (1)整体思路 对于本次爬取英文名数据的爬虫实现,我的思路是先将A-Z所有英文名的连接爬取出来,保存在一个cs ...

  10. 一个简单的python爬虫,爬取知乎

    一个简单的python爬虫,爬取知乎 主要实现 爬取一个收藏夹 里 所有问题答案下的 图片 文字信息暂未收录,可自行实现,比图片更简单 具体代码里有详细注释,请自行阅读 项目源码: # -*- cod ...

随机推荐

  1. 虚拟网络VLAN

    一.VLAN划分基础 1.VLAN概念 VLAN叫做虚拟局域网,逻辑上将网络划分 2.VLAN的分类 静态vlan:基于端口划分静态VLAN 动态vlan:基于MAC地址划分动态VLAN 3.VLAN ...

  2. Kubernetes(k8s)存储管理之数据卷volumes(四):持久卷Persistent Volume

    目录 一.系统环境 二.前言 三.持久卷(Persistent Volume) 3.1 持久卷(Persistent Volume)概览 3.2 持久卷和持久卷申领的生命周期 3.3 持久卷的类型 3 ...

  3. Django 之swagger中尝试调试post请求时返回 "detail": "JSON parse error - Expecting value: line 1 column 1 (char)

    swagger已配置OK,但发送POST请求时一直显示数据格式错误,怪异.... 经过各种查找资料,才发现setting.py文件中缺少配置 配置完成后重启服务,再次尝试发送POST请求,不会再报格式 ...

  4. python 数据迁移

    Python数据库迁移 操作数据库 mysql uroot -p create database Python1031 charset=utf8; 数据迁移 from flask_migrate im ...

  5. [生命科学] 生物基础实验之DNA提取

    生物基础实验之DNA提取实验 基因组DNA的提取通常用于构建基因组文库.Southern杂交(包括RFLP)及PCR分离基因等.利用基因组DNA较长的特性,可以将其与细胞器或质粒等小分子DNA分离. ...

  6. js鼠标轨迹特效

    今天无意中访问到了开源社区 (apiopen.top)的主界面,发现鼠标跟随的特效不错(残留轨迹),弄下来玩玩 上代码 整合后只需要两部分,导入JS依赖后,在html 添加 id 为 mouseCan ...

  7. Note: further occurrences of HTTP request parsing errors will be logged at DEBUG level

    云服务器很久没管过了,今天去看了下云服务器日志,不看不知道,一看吓一跳. 日志里竟然是一排的报错,再翻下此前的日志,每天都报一个错误: [http-nio-80-exec-10] org.apache ...

  8. Codeforces Round #844 (Div. 1 + Div. 2, based on VK Cup 2022 - Elimination Round) A-D

    比赛链接 A 题意 设计一条线路要贴着6个墙面走,从 \((a,b)\) 到 \((f,g)\) ,线路长度最短. 题解 知识点:模拟. 分类取最短即可. 时间复杂度 \(O(1)\) 空间复杂度 \ ...

  9. API 网关的功能用途及实现方式

    1. API 网关诞生背景 前言 API 经济生态链已经在全球范围覆盖, 绝大多数企业都已经走在数字化转型的道路上,API 成为企业连接业务的核心载体, 并产生巨大的盈利空间.快速增长的 API 规模 ...

  10. MySQL 判断语句 条件函数 case when、if、ifnull

    在MySQL中,需要用到条件判断函数,例如 case when.if.ifnull. 一.方法分类 二.具体方法 (1)if if(expr,result_true,result_false) 注意: ...