吾爱破解 - LCG - LSG |安卓破解|病毒分析|破解软件|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

搜索
查看: 13828|回复: 79

[Python] 用Python编了一个爬虫,下载小说

  [复制链接]
云卷~云舒 发表于 2016-10-23 23:19
    最近刚接触了Python爬虫,比较感兴趣,再加上本人喜欢看小说,就试写了一个下载小说的脚本。    脚本说明:提供小说目录页的网址(仅限笔趣阁网站上的小说:http://www.biquge.com/),代码如下:


import requests
from bs4 import BeautifulSoup
#提取章节内容
def getNovelChapter(url):   
    res = requests.get(url)
    res.encoding = 'utf-8'
    soup = BeautifulSoup(res.text,'html.parser')
    try:
        title = soup.select('.bookname h1')[0].text   
        return title + '\n    ' + '\n    '.join(a for a in soup.select('#content')[0].text.split())
    except IndexError:
        return ''


url = 'http://www.biquge.tw/0_52/'    #小说目录页的网址
headers = {'Host':'www.biquge.tw',
           'Connection':'keep-alive',
           'Cache-Control':'max-age=0',
          'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.59 Safari/537.36'}
res = requests.get(url)
res.encoding = 'utf-8'
soup = BeautifulSoup(res.text,'html.parser')
   
title=soup.select('#info')[0].h1.text    #小说名称提取
author=soup.select('#info')[0].p.text.strip()    #小说作者提取


file = open(title + '.text','w')    #保存文件
file.write(title)
file.write('\n' + author + '\n\n')
            
i = 0
l = int(len(soup.select('#list dd')))
while (i<l):
    ChapterUrl = url + soup.select('#list dd').a['href'].split('/')[-1]
    file.write(getNovelChapter(ChapterUrl) + '\n\n')
    i=i+1
file.close()
print('下载完成')


    问题:1、因只是对某个网站上的网页源码进行解析的,换另一个小说网站可能就不行了,这个暂未去验证;
                2、在涵式getNovelChapter(url)中增加了try except代码,可能会导致某个章节漏下载,若不加这个代码,总是会出现超出界限的错误提示(IndexError: list index out of range),且每次运行,下载下来的章节数目不一样(有时候之下在一百多章,有时候二百来章),至今未搞清楚原因;
                3、另外脚本运行速度比较慢,暂不知道如何提升。
    虽然有许多问题,不过这是本人写的第一个代码,以前没有编程过,当确实下载下来小说时,自我感觉有些小小的激动{:1_912:}

    初次编写Python脚本,不足之处请大神指点,不胜感激!!!


点评

动用自己的脑袋解决问题的都要点赞!楼主我顶你!  发表于 2016-11-15 17:39

免费评分

参与人数 3吾爱币 +1 热心值 +3 收起 理由
huiji + 1 + 1 我学过爬虫,但学不会。。求楼主指点×_×
ciaomi + 1 我很赞同!
yl笑倾城 + 1 热心回复!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 云卷~云舒 发表于 2016-11-24 21:02
冷亦寒008 发表于 2016-11-21 17:57
我在命令行里直接运行,语法有问题啊。我是3.5的

看你是什么错误,导入的库,你电脑里首先要有
18717911997 发表于 2016-10-24 21:32
为什么我运行楼主的此源码,出现一下错误  我的版本是Python2.7
>>> ================================ RESTART ================================
>>>

Traceback (most recent call last):
  File "C:\Python27\Python小说网.py", line 22, in <module>
    soup = BeautifulSoup(res.text,'html.pars5er')
  File "build\bdist.win32\egg\BeautifulSoup.py", line 1522, in __init__
    BeautifulStoneSoup.__init__(self, *args, **kwargs)
  File "build\bdist.win32\egg\BeautifulSoup.py", line 1147, in __init__
    self._feed(isHTML=isHTML)
  File "build\bdist.win32\egg\BeautifulSoup.py", line 1189, in _feed
    SGMLParser.feed(self, markup)
  File "C:\Python27\lib\sgmllib.py", line 104, in feed
    self.goahead(0)
  File "C:\Python27\lib\sgmllib.py", line 174, in goahead
    k = self.parse_declaration(i)
  File "build\bdist.win32\egg\BeautifulSoup.py", line 1463, in parse_declaration
    j = SGMLParser.parse_declaration(self, i)
  File "C:\Python27\lib\markupbase.py", line 109, in parse_declaration
    self.handle_decl(data)
  File "build\bdist.win32\egg\BeautifulSoup.py", line 1448, in handle_decl
    self._toStringSubclass(data, Declaration)
  File "build\bdist.win32\egg\BeautifulSoup.py", line 1381, in _toStringSubclass
    self.endData(subclass)
  File "build\bdist.win32\egg\BeautifulSoup.py", line 1251, in endData
    (not self.parseOnlyThese.text or \
AttributeError: 'str' object has no attribute 'text'
羊之心羽 发表于 2016-10-23 23:30
小补 发表于 2016-10-23 23:34
那网站不是可以直接下载吗
 楼主| 云卷~云舒 发表于 2016-10-23 23:38
羊之心羽 发表于 2016-10-23 23:30
那网站不是可以直接下载吗

有吗,没有看到下载的链接,只是为了写爬虫玩,随便找了个小说网站
我来看看看 发表于 2016-10-23 23:51
那网站不是可以直接下载吗
绘梨衣 发表于 2016-10-23 23:51
py大法好
Mier52 发表于 2016-10-23 23:52
哈哈哈哈,虽然网站的确可以下载,不过第一次自己写程序爬到数据的成就感是前所未有的
sunpx3 发表于 2016-10-23 23:56
你可以改进下,抓取全站数据, 可以试试 scrapy
MAXtoDEATH 发表于 2016-10-24 10:43
你可以去爬codevs
东方小夕 发表于 2016-10-24 10:55
云卷~云舒 发表于 2016-10-23 23:38
有吗,没有看到下载的链接,只是为了写爬虫玩,随便找了个小说网站

直接爬起点多好呢
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:禁止回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2019-12-15 01:33

Powered by Discuz!

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表