分享一次python抓取网络小说写成txt文档的经历

原创 2018年04月16日 16:31:45

最近在掌阅上看到推荐了一部小说,但是是付费的。而且手机看小说确实伤眼,然后百度搜了下,发现网上有。但是网上也伤眼,关键是广告贼多。so~正好在学python,打算试一下万一就成功了呢。
于是,百度是个好东西。我发现整个过程中只用到了一个库
BeautifulSoup
然后BeautifulSoup里面呢有两个方法,用来分析HTML里面的标签
1. find 找到第一个指定的标签
2. find_all 找到所有的指定的标签,返回一个列表
说下这次的思路:
首先给个网址,关于这本小说的目录的地址。然后把所有目录抓下来,根据目录来抓取每一章的内容,依次写到文本文档里面。
然后目录也是很有规律的。找到格式抓下来放在一个列表里面就好啦。
然后重点来了,其实小说什么的,文字内容其实都是一片一片的,非常有规律。所以只用查看源码观察一下就很容易找到规律啦。举个例子,我这次的是抓的重生八万年。其中有很多网站都有免费的这个小说。所以我选了几个。其中一个是utf-8编码的,也有gbk编码格式的。
比如说这个:’http://www.3qzone.com/26_26978/’ 这个网站是gbk编码的。然后小说内容放在div模块里面的。id= content。所以就盯着这个家伙干吧~

import requests
from bs4 import BeautifulSoup

url = 'http://www.3qzone.com/26_26978/'
response = requests.get(url)
response.encoding = 'gbk'
node = BeautifulSoup(response.text,'html.parser')
'''找到章节目录'''
list_url = node.find_all('dd')
for l in list_url:
    link = l.find('a')
    if link:
        herf = link['href']
        '''抓取每一章的内容'''
        if herf:
            response = requests.get(url + herf)
            response.encoding = 'gbk'
            content = BeautifulSoup(response.text, 'html.parser')
            detail = content.find('div', id='content') 
            format_detail = detail.get_text()
            if format_detail:
                with open('重生八万年.txt', 'a+', encoding='utf-8')as book:
                    book.write(link.get_text())
                    book.write(format_detail)

print('over')

说下这次遇到的坑。在处理每章内容的时候,之前是用的format_detail = detail.find_all(‘br’)
然后后来发现这样每一章的内容都会重复,意思就是第一章 第一章 第二章 第二章。。。然后本宝宝就表示一脸懵逼啊。而且这样每行去处理好像也很慢,非常慢,虽然现在这个玩法也还是很慢。但是相对而言还是好了很多。百思不得其解,到现在也没搞清楚为什么会这样。后来发现可以直接使用detail.get_text(),而且并不会把br这种标签打印出来,爽翻,然后就悄悄绕开这个巨坑了。希望以后慢慢学习能够找到重复的原因。反正我总觉得应该是find_all()的锅。因为做过调试,发现找到detail的时候还很正常,find_all()一次就重复了。如果有大兄弟知道为啥请留言啊。
再来一个别的网站的。不过巨坑的是,前几十章都是乱码,后面的才正常

import requests
from bs4 import BeautifulSoup

response = requests.get('https://www.xs74.com/novel/zhongshengbawannian/')
soup = BeautifulSoup(response.text,'html.parser')
node = soup.find_all('dd')
with open('八万年1.txt', 'a+')as book:
    for i in node:
        book.write(i.get_text()+'\n')
        t = i.find('a')
        if t:
            url = t['href']
            response = requests.get(url)
            soup2 = BeautifulSoup(response.text,'html.parser')
            content = soup2.find('div',id = 'content')
            book.write(content.get_text()+'\n')
            book.flush()

嗯~希望以后还可以优化下速度,这龟速确实等得伤心

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/C2496649361/article/details/79962483

Python爬取小说

Python爬取小说生成txt文档
  • zhangweiguo_717
  • zhangweiguo_717
  • 2016-09-21 15:37:47
  • 4804

Python爬虫系列:爬取小说并写入txt文件

Python爬虫系列——爬取小说并写入txt文件     文章介绍了如何从网站中爬取小说并写入txt文件中,实现了单章节写取,整本写取,多线程多本写取。爬虫使用的python版本为python3,有些...
  • baidu_26678247
  • baidu_26678247
  • 2017-07-13 17:14:51
  • 16840

下载小说(python实现)

突然想看《仙剑问情》,网上又下载不到完整的txt版,看到“爱上中文”网有分章节在线版,于是有了写个爬虫下载小说的想法具体代码如下:import urllib.request import re as ...
  • pingzi1990
  • pingzi1990
  • 2015-01-03 20:13:50
  • 719

python写的整本书的小说爬虫(并写入txt文件)

用Python将“剑来”小说信息爬取出来并写入txt文件
  • without_scruple
  • without_scruple
  • 2017-09-24 09:32:59
  • 504

获取mysql中的数据并转化为txt或者excel文档

1. 输出所有用户的物品$uids = sql_fetch_rows("select uid from sys_user");foreach($uids as $uid){              ...
  • hopestar2
  • hopestar2
  • 2010-11-24 11:19:00
  • 563

Python爬虫入门实战系列(一)--爬取网络小说并存放至txt文件

前言:本人接触网络爬虫不久,因此目前对于爬虫的理解可能也是浮于表面,文章中若存在问题欢迎大家指出。 运行平台: Windows  Python版本: Python3.x  浏览器:chrome浏览...
  • xjm850552586
  • xjm850552586
  • 2017-11-20 19:37:19
  • 1214

使用python抓取小说

# coding: utf-8 import bs4 from bs4 import BeautifulSoup import urllib2 import codecs import time im...
  • wdt3385
  • wdt3385
  • 2013-09-30 09:22:38
  • 924

分享一次python抓取网络小说写成txt文档的经历

最近在掌阅上看到推荐了一部小说,但是是付费的。而且手机看小说确实伤眼,然后百度搜了下,发现网上有。但是网上也伤眼,关键是广告贼多。so~正好在学python,打算试一下万一就成功了呢。 于是,百度是...
  • C2496649361
  • C2496649361
  • 2018-04-16 16:31:45
  • 73

利用三十行Python爬取网络小说

python爬网络小说 python爬小说 python 小说 python爬取小说 python网络爬虫
  • qq_22073849
  • qq_22073849
  • 2017-09-18 14:42:23
  • 1293

python提取txt文档内容

import  pandas as pd result=[] f = open('testdata.txt') for line in open('testdata.txt'):       ...
  • sweetyIT
  • sweetyIT
  • 2017-06-15 16:25:03
  • 881
收藏助手
不良信息举报
您举报文章:分享一次python抓取网络小说写成txt文档的经历
举报原因:
原因补充:

(最多只允许输入30个字)