Python抓取小说

前言


这个脚本命令MAC在抓取小说写,使用Python它有几个码。


代码

# coding=utf-8

import re
import urllib2
import chardet
import sys
from bs4 import BeautifulSoup
import codecs class Spider(): def __init__(self):
self.aTag=re.compile("<a href=\"(http://www.44pq.com/read/[0-9]+?_[0-9]+?.html)\"[^>]*?>(.+?)</a>")
self.contentTag=re.compile("<div class=\"readerContent\" id=\"content\">(.+?)</div>",re.I|re.S) def getHtml(self, url):
headers = {'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'}
req=urllib2.Request(url,headers=headers)
response = urllib2.urlopen(req) html = response.read()
return html
#soup=BeautifulSoup(html.decode("GB18030","ignore"))
#return soup.findAll("a")
#return soup.prettify()
#typeEncode = sys.getfilesystemencoding()
#infoencode = chardet.detect(html).get('encoding','utf-8')
#return html.decode('GB18030','ignore').encode("utf-8")
return html.decode('GB18030','ignore').encode(sys.getfilesystemencoding()) def Run(self):
bookurl="http://www.44pq.com/read/13567.html"
bookname="地球上唯一的魔法师"
text=[]
matchs=self.aTag.finditer(self.getHtml(bookurl))
alist=list(matchs)
total = len(alist)
print "total {0}".format(total)
i=0
for m in alist:
i+=1
text.append(m.group(2).decode("gb18030"))
text.append(self.getContent(m.group(1)))
self.writeFile(bookname,"\n\n".join(text))
del text[:]
print "{0}/{1}".format(i,total)
self.writeFile(bookname,"\n\n".join(text))
print "done!" def writeFile(self,filename,text):
f=open(filename+".txt","a")
f.write(text)
f.close() def getContent(self,url):
c=self.getHtml(url) c=self.contentTag.search(c).group(1)
c=re.sub("<[^>]+?>","",c)
c=c.replace("nbsp;","").replace("&","")
return c.decode("gb18030") if __name__ == '__main__':
reload(sys)
sys.setdefaultencoding('utf-8')
spider = Spider()
spider.Run()

声明一下,实在搞不定CSDN编辑器的格式问题了,上述代码中:

self.writeFile(bookname,"\n\n".join(text))

del text[:]

这两行是在for循环里的,而不应该是与keywordfor对齐的。

上面不必要的import能够删掉。以小说《地球上唯一的魔法师》为例。aTag是匹配小说文件夹全部章节的正則表達式,contentTag是匹配小说正文的正則表達式。

须要声明一点,此代码每抓取一章。就写入文件一次。以防内存占用过大。

self.writeFile(bookname,"\n\n".join(text))

del text[:]

假设须要,也能够抓取N章写入文件一次,仅仅需增加一个简单的逻辑推断就OK了。占用多少内存和写多少次文件,每一个人有自己不同的衡量标准。

版权声明:本文博客原创文章,博客,未经同意,不得转载。

Python抓取小说的更多相关文章

  1. Python 抓取网页并提取信息(程序详解)

    最近因项目需要用到python处理网页,因此学习相关知识.下面程序使用python抓取网页并提取信息,具体内容如下: #---------------------------------------- ...

  2. 使用 Python 抓取欧洲足球联赛数据

    Web Scraping在大数据时代,一切都要用数据来说话,大数据处理的过程一般需要经过以下的几个步骤    数据的采集和获取    数据的清洗,抽取,变形和装载    数据的分析,探索和预测    ...

  3. python抓取性感尤物美女图

    由于是只用标准库,装了python3运行本代码就能下载到多多的美女图... 写出代码前面部分的时候,我意识到自己的函数设计错了,强忍继续把代码写完. 测试发现速度一般,200K左右的下载速度,也没有很 ...

  4. python抓取网页例子

    python抓取网页例子 最近在学习python,刚刚完成了一个网页抓取的例子,通过python抓取全世界所有的学校以及学院的数据,并存为xml文件.数据源是人人网. 因为刚学习python,写的代码 ...

  5. Python抓取页面中超链接(URL)的三中方法比较(HTMLParser、pyquery、正则表达式) <转>

    Python抓取页面中超链接(URL)的3中方法比较(HTMLParser.pyquery.正则表达式) HTMLParser版: #!/usr/bin/python # -*- coding: UT ...

  6. 如何用python抓取js生成的数据 - SegmentFault

    如何用python抓取js生成的数据 - SegmentFault 如何用python抓取js生成的数据 1赞 踩 收藏 想写一个爬虫,但是需要抓去的的数据是js生成的,在源代码里看不到,要怎么才能抓 ...

  7. 关于python抓取google搜索结果的若干问题

    关于python抓取google搜索结果的若干问题     前一段时间一直在研究如何用python抓取搜索引擎结果,在实现的过程中遇到了很多的问题,我把我遇到的问题都记录下来,希望以后遇到同样问题的童 ...

  8. C# 爬虫 抓取小说

    心血来潮,想研究下爬虫,爬点小说. 通过百度选择了个小说网站,随便找了一本小书http://www.23us.so/files/article/html/13/13655/index.html. 1. ...

  9. 用python抓取智联招聘信息并存入excel

    用python抓取智联招聘信息并存入excel tags:python 智联招聘导出excel 引言:前一阵子是人们俗称的金三银四,跳槽的小朋友很多,我觉得每个人都应该给自己做一下规划,根据自己的进步 ...

随机推荐

  1. Solving the Problem of Overfitting

    The Problem of Overfitting Cost Function Regularized Linear Regression Note: [8:43 - It is said that ...

  2. Linux系统编程——线程私有数据

    在多线程程序中.常常要用全局变量来实现多个函数间的数据共享.因为数据空间是共享的,因此全局变量也为全部线程共同拥有. 測试代码例如以下: #include <stdio.h> #inclu ...

  3. ios开发网络学习五:MiMEType ,多线程下载文件思路,文件的压缩和解压缩

    一:MiMEType:一般可以再百度上搜索到相应文件的MiMEType,或是利用c语言的api去获取文件的MiMEType : //对该文件发送一个异步请求,拿到文件的MIMEType - (void ...

  4. openstack中虚拟机怎么与物理机通信

    How-to-connection-ns-outside 环境配置 网络接口 vi /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 TYPE ...

  5. 【Heritrix基础教程之3】Heritrix的基本架构 分类: H3_NUTCH 2014-06-01 16:56 1267人阅读 评论(0) 收藏

    Heritrix可分为四大模块: 1.控制器CrawlController 2.待处理的uri列表  Frontier 3.线程池 ToeThread 4.各个步骤的处理器 (1)Pre-fetch ...

  6. Docker入门之 - 如何安装Docker CE

    原文:Docker入门之 - 如何安装Docker CE 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u012055638/article/det ...

  7. 小梦词典WP8.1应用发布

    这几天一直在做这款应用,今天终于发布了! 小梦词典简介: 小梦词典是一款永久免费无广告的网络词典. 支持英汉单词查询: 支持中,英,法,韩,德,俄,日七国语言翻译,多语言极致体验: 支持生词本记忆,查 ...

  8. 【codeforces 742C】Arpa's loud Owf and Mehrdad's evil plan

    time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...

  9. PatentTips – CoAP Segment size determination

    BACKGROUND OF THE INVENTION The subject matter disclosed herein relates to routing data through a ne ...

  10. 【iOS】怎样推断文本文件的字符编码格式

    整体思路: 遍历全部的字符编码.能正确读取输出转换的就是文本文件的编码格式. 代码例如以下: // // main.m // 检測文本字符编码格式的小技巧 // // Created by 杜子兮 ( ...