参考链接:https://www.cnblogs.com/wt714/p/11963497.html

模块:requests,bs4,queue,sys,time

步骤:给出URL--> 访问URL --> 获取数据 --> 保存数据

第一步:给出URL

百度搜索笔趣阁,进入相关网页,找到自己想要看的小说,如“天下第九”,打开第一章,获得第一章的URL:https://www.52bqg.com/book_113099/37128558.html

第二步:访问URL

def get_content(url):
try:
# 进入主页
# https://www.52bqg.com/
# 随便搜索一步小说,找出变化规律
# https://www.52bqg.com/book_110102/
headers = {
'User-Agent': ""
}
res = requests.get(url=url, headers=headers)
res.encoding = "gbk"
content = res.text
return content
except:
s = sys.exc_info()
print("Error '%s' happened on line %d" % (s[1], s[2].tb_lineno))
return "ERROR"

返回的是此页面的内容

第三步:获取数据

def parseContent(first_url, content):
soup = BeautifulSoup(content, "html.parser")
chapter = soup.find(name='div', class_="bookname").h1.text
content = soup.find(name="div", id="content").text

chapter获取的就是每一章的名称,例如:第一章 仙女星

content获取的就是每一章的内容,例如:这一天将是所有地球。。。。

第四步:保存数据

def save(chapter, content):
filename = 文件名字
f = open(filename, "a+", encoding="utf-8")
f.write("".join(chapter) + "\n")
f.write("".join(content.split()[2:]) + "\n")
f.close()

以上就是爬取数据的一般步骤,介绍了一章是如何爬取下来的,那么一本小说,有很多很多章,全部爬取下来的话,就将上面的步骤一次又一次的进行就好了。

这里采取的方法是队列形式,首先给出第一章的url,存放到一个队列中,然后从队列中提取url进行访问,在访问过程中找到第二章的url,放入队列中,然后提取第二个url访问,依次类推,直到将小说所有章节爬取下来,队列为空为止。文件名字这一块,也是通过访问小说的url获取到小说名字,然后以小说名字命名txt的名字。

完整代码如下:

#!/usr/bin/env python
# _*_ coding: UTF-8 _*_
"""=================================================
@Project -> File : Operate_system_ModeView_structure -> get_book_exe.py
@IDE : PyCharm
@Author : zihan
@Date : 2020/4/25 10:28
@Desc :爬取笔趣阁小说: https://www.52bqg.com/
将url放入一个队列中Queue
访问第一章的url得到第二章的url,放入队列,依次类推
=================================================""" import requests
from bs4 import BeautifulSoup
import sys
import time
import queue # 获取内容
def get_content(url):
try:
# 进入主页
# https://www.52bqg.com/
# 随便搜索一步小说,找出变化规律
# https://www.52bqg.com/book_110102/
headers = {
'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.87 Safari/537.36"
}
res = requests.get(url=url, headers=headers) # 获取小说目录界面
res.encoding = "gbk"
content = res.text
return content
except:
s = sys.exc_info()
print("Error '%s' happened on line %d" % (s[1], s[2].tb_lineno))
return "ERROR" # 解析内容
def parseContent(q, first_url, content):
base_url_list = first_url.split("/")
html_order = base_url_list[-1]
last_number = first_url.find(html_order)
base_url = first_url[:last_number]
soup = BeautifulSoup(content, "html.parser")
chapter = soup.find(name='div', class_="bookname").h1.text
content = soup.find(name="div", id="content").text
save(base_url, chapter, content)
# 如果存在下一个章节的链接,则将链接加入队列
next1 = soup.find(name='div', class_="bottem").find_all('a')[3].get('href')
if next1 != base_url:
q.put(next1)
# print(next1)
return q def save(base_url, chapter, content):
book_name = get_book_name(base_url)
filename = book_name + ".txt"
f = open(filename, "a+", encoding="utf-8")
f.write("".join(chapter) + "\n")
f.write("".join(content.split()[2:]) + "\n")
f.close() # 获取书名
def get_book_name(base_url):
content = get_content(base_url)
soup = BeautifulSoup(content, "html.parser")
name = soup.find(name='div', class_="box_con").h1.text
return name def main():
first_url = input("请输入小说第一章的链接:")
start_time = time.time() # 进入主页
# https://www.52bqg.com/
# 随便搜索一步小说,找出变化规律
# https://www.52bqg.com/book_110102/
q = queue.Queue()
# 小说第一章链接
# first_url = "https://www.52bqg.com/book_110102/35620490.html"
q.put(first_url)
while not q.empty():
content = get_content(q.get())
q = parseContent(q, first_url, content)
end_time = time.time()
project_time = end_time - start_time
print("下载用时:", project_time) if __name__ == '__main__':
main()

欢迎大家分享一些新发现。

bs4爬取笔趣阁小说的更多相关文章

  1. Jsoup-基于Java实现网络爬虫-爬取笔趣阁小说

    注意!仅供学习交流使用,请勿用在歪门邪道的地方!技术只是工具!关键在于用途! 今天接触了一款有意思的框架,作用是网络爬虫,他可以像操作JS一样对网页内容进行提取 初体验Jsoup <!-- Ma ...

  2. Python爬取笔趣阁小说,有趣又实用

    上班想摸鱼?为了摸鱼方便,今天自己写了个爬取笔阁小说的程序.好吧,其实就是找个目的学习python,分享一下. 1. 首先导入相关的模块 import os import requests from ...

  3. scrapycrawl 爬取笔趣阁小说

    前言 第一次发到博客上..不太会排版见谅 最近在看一些爬虫教学的视频,有感而发,大学的时候看盗版小说网站觉得很能赚钱,心想自己也要搞个,正好想爬点小说能不能试试做个网站(网站搭建啥的都不会...) 站 ...

  4. python应用:爬虫框架Scrapy系统学习第四篇——scrapy爬取笔趣阁小说

    使用cmd创建一个scrapy项目: scrapy startproject project_name (project_name 必须以字母开头,只能包含字母.数字以及下划线<undersco ...

  5. scrapy框架爬取笔趣阁

    笔趣阁是很好爬的网站了,这里简单爬取了全部小说链接和每本的全部章节链接,还想爬取章节内容在biquge.py里在加一个爬取循环,在pipelines.py添加保存函数即可 1 创建一个scrapy项目 ...

  6. HttpClients+Jsoup抓取笔趣阁小说,并保存到本地TXT文件

    前言 首先先介绍一下Jsoup:(摘自官网) jsoup is a Java library for working with real-world HTML. It provides a very ...

  7. scrapy框架爬取笔趣阁完整版

    继续上一篇,这一次的爬取了小说内容 pipelines.py import csv class ScrapytestPipeline(object): # 爬虫文件中提取数据的方法每yield一次it ...

  8. 爬虫入门实例:利用requests库爬取笔趣小说网

    w3cschool上的来练练手,爬取笔趣看小说http://www.biqukan.com/, 爬取<凡人修仙传仙界篇>的所有章节 1.利用requests访问目标网址,使用了get方法 ...

  9. python入门学习之Python爬取最新笔趣阁小说

    Python爬取新笔趣阁小说,并保存到TXT文件中      我写的这篇文章,是利用Python爬取小说编写的程序,这是我学习Python爬虫当中自己独立写的第一个程序,中途也遇到了一些困难,但是最后 ...

随机推荐

  1. Ajax(内含json)认识

    Ajax 认识 一.概念 1.Ajax 即"Asynchronous Javascript And XML"(英[eɪˈsɪŋkrənəs]异步 JavaScript 和 XML) ...

  2. Java 垃圾回收机制,13张图给你讲清楚

    什么是自动垃圾回收? 第一步:标记 第二步:清除 压缩 为什么需要分代垃圾收集? JVM 分代 世代垃圾收集过程 什么是自动垃圾回收? 自动垃圾回收是一种在堆内存中找出哪些对象在被使用,还有哪些对象没 ...

  3. 6.17考试总结(NOIP模拟8)[星际旅行·砍树·超级树·求和]

    6.17考试总结(NOIP模拟8) 背景 考得不咋样,有一个非常遗憾的地方:最后一题少取膜了,\(100pts->40pts\),改了这么多年的错还是头一回看见以下的情景... T1星际旅行 前 ...

  4. Arduino参考手册-函数和变量及电路图

    标题: Arduino参考手册-函数和变量及电路图 作者: 梦幻之心星 sky-seeker@qq.com 标签: [#Arduino,#参考手册,#函数,#变量] 目录: [Arduino] 日期: ...

  5. Go语言十六进制转十进制

    Go语言十六进制转十进制 代码Demo import ( "fmt" "strconv" "testing" ) func Test_1(t ...

  6. 利用 V8 深入理解 JavaScript 设计

    JavaScript 代码运行 以大家开发常用的 chrome 浏览器或 Node 举例,我们的 JavaScript 代码是通过 V8 运行的.但 V8 是怎么执行代码的呢?当我们输入 const ...

  7. 15 shell for循环

    除了 while 循环和 until 循环,Shell 脚本中还有for 循环,for 循环有两种使用形式:C语言风格的for循环与Python语言风格的for in循环,两种形式的for循环用法对比 ...

  8. ptm经验总结

  9. 2012年第三届蓝桥杯C/C++程序设计本科B组省赛 方阵旋转(代码填空)

    方阵旋转 对一个方阵转置,就是把原来的行号变列号,原来的列号变行号 例如,如下的方阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 转置后变为: 1 5 9 13 2 ...

  10. XCTF WEB backup

    不用多说,肯定是扫描后台,目录看看能不能找到备份文件,(可恶我的御剑的字典太菜了,居然爆破不出来),建议大家装御剑高一些的版本,或者用dirsearch来扫描,都是不错的. 这里插个知识点,备份文件常 ...