请选择 进入手机版 | 继续访问电脑版

资源299论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

日本代购,韩国代购,专业海外代购服务
查看: 270|回复: 1

入门python爬取精彩阅读网的小说

[复制链接]

2891

主题

3166

帖子

1万

积分

超级版主

Rank: 8Rank: 8

积分
10615
发表于 2018-11-14 09:22:37 | 显示全部楼层 |阅读模式
先领券再购物更优惠
入门python爬取精彩阅读网的小说
简单来说面向过程就是把分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。

而面向对象则是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。


在我的理解就是,面向过程要手把手教电脑干活。而面向对象只要设定一个模拟问题解决的方案,就会自动教电脑干活。


我们先将之前面向过程的代码根据功能改成一个个方法,函数。如下面getHtml是获取网页信息,get_chapter_info是获取章节信息。最后再调用这个方法。
  1. # _*_ coding: utf_8 _*_
  2. __author__ = 'lwh'
  3. __date__ = '2018/11/12 19:56'

  4. import re
  5. import requests


  6. # 获取网页信息
  7. def getHtml(url):
  8.     response = requests.get(url)
  9.     response.encoding = 'utf-8'
  10.     html = response.text
  11.     return html


  12. def get_chapter_info(url):
  13.     html = getHtml(url)
  14.     nover_title = re.findall(r'<meta property="og:novel:book_name" content="(.*?)"/>', html)[0]
  15.     dl = re.findall(r'<dl class="panel-body panel-chapterlist">  <dd class="col-md-3">.*?</dl>', html, re.S)[0]
  16.     chapter_info_list = re.findall(r'href="(.*?)">(.*?)<', dl)
  17.     return nover_title, chapter_info_list


  18. def get_chapter_content(chapter_url):    html = getHtml(chapter_url)
  19.     chapter_content = re.findall(r' <div class="panel-body" id="htmlContent">(.*?)</div> ', html, re.S)[0]
  20.     chapter_content = chapter_content.replace('<br />', '')
  21.     chapter_content = chapter_content.replace('<br>', '')
  22.     chapter_content = chapter_content.replace('<br />', '')
  23.     chapter_content = chapter_content.replace('<p>', '')
  24.     chapter_content = chapter_content.replace('</p>', '')
  25.     chapter_content = chapter_content.replace(' ', '')

  26.     return chapter_content


  27. def spider(url):
  28.     nover_title, chapter_info_list = get_chapter_info(url)

  29.     f = open('%s.txt' % nover_title, "w", encoding='utf-8')
  30.     # 下载各章节
  31.     for chapter_url, chapter_title in chapter_info_list:
  32.         chapter_url = 'http://www.jingcaiyuedu.com%s' % chapter_url
  33.         chapter_content = get_chapter_content(chapter_url)

  34.         f.write(chapter_title)
  35.         f.write('\n')
  36.         f.write(chapter_content)
  37.         f.write('\n\n\n\n\n')
  38.         print(chapter_url)


  39. if __name__ == '__main__':
  40.     nover_url = 'http://www.jingcaiyuedu.com/book/376655.html'
  41.     spider(nover_url)
复制代码

我们也可以将它彻底封装成一个类,这样就算别人不知道内部实现的细节也能直接调用

  1. # _*_ coding: utf_8 _*_
  2. __author__ = 'lwh'
  3. __date__ = '2018/11/12 20:10'

  4. import re
  5. import requests


  6. class Spider():
  7.     # 获取网页信息
  8.     def getHtml(self, url):
  9.         response = requests.get(url)
  10.         response.encoding = 'utf-8'
  11.         html = response.text
  12.         return html

  13.     def get_chapter_info(self, url):
  14.         html = self.getHtml(url)
  15.         nover_title = re.findall(r'<meta property="og:novel:book_name" content="(.*?)"/>', html)[0]
  16.         dl = re.findall(r'<dl class="panel-body panel-chapterlist">  <dd class="col-md-3">.*?</dl>', html, re.S)[0]
  17.         chapter_info_list = re.findall(r'href="(.*?)">(.*?)<', dl)
  18.         return nover_title, chapter_info_list
  19.          
  20.     def get_chapter_content(self, chapter_url):
  21.         html = self.getHtml(chapter_url)
  22.         chapter_content = re.findall(r' <div class="panel-body" id="htmlContent">(.*?)</div> ', html, re.S)[0]
  23.         chapter_content = chapter_content.replace('<br />', '')
  24.         chapter_content = chapter_content.replace('<br>', '')
  25.         chapter_content = chapter_content.replace('<br />', '')
  26.         chapter_content = chapter_content.replace('<p>', '')
  27.         chapter_content = chapter_content.replace('</p>', '')
  28.         chapter_content = chapter_content.replace(' ', '')

  29.         return chapter_content

  30.     def spider(self, url):
  31.         nover_title, chapter_info_list = self.get_chapter_info(url)

  32.         f = open('%s.txt' % nover_title, "w", encoding='utf-8')
  33.         # 下载各章节
  34.         for chapter_url, chapter_title in chapter_info_list:
  35.             chapter_url = 'http://www.jingcaiyuedu.com%s' % chapter_url
  36.             chapter_content = self.get_chapter_content(chapter_url)

  37.             f.write(chapter_title)
  38.             f.write('\n')
  39.             f.write(chapter_content)
  40.             f.write('\n\n\n\n\n')
  41.             print(chapter_url)
复制代码








云博淘享惠商城,商品多多,优惠券多多,福利多多,转发还能赚零花钱,关注微信公众号“云博淘享惠商城”吧!!
回复

使用道具 举报

0

主题

247

帖子

562

积分

高级会员

Rank: 4

积分
562
发表于 2019-4-21 15:18:49 | 显示全部楼层
先领券再购物更优惠
别看阿墩胖得肥肉直打颤颤,动作却机警得像只与猎人周旋的豹子!! 伸缩门http://www.ssmdd.com
我爱学习啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /3 下一条

QQ|Archiver|手机版|小黑屋|资源299论坛

GMT+8, 2019-11-13 07:36 , Processed in 0.025577 second(s), 24 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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