Python抓取小说
Python 抓取 小说
2023-09-11 14:21:01 时间
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[:]
须要声明一点,此代码每抓取一章。就写入文件一次。以防内存占用过大。
self.writeFile(bookname,"\n\n".join(text))del text[:]
假设须要,也能够抓取N章写入文件一次,仅仅需增加一个简单的逻辑推断就OK了。占用多少内存和写多少次文件,每一个人有自己不同的衡量标准。
版权声明:本文博客原创文章,博客,未经同意,不得转载。
相关文章
- anconda使用---使用conda管理python环境
- Python运用于数据分析的简单教程
- [Python] Indexing An Array With Another Array with numpy
- Python 仿Windows10“幻灯片放映”桌面壁纸
- Python编程语言学习:python中与数字相关的函数(取整等)、案例应用之详细攻略
- Python:更改默认启动的python程序及其对应的安装包路径(更改pip的默认安装包的路径)图文教程之详细攻略
- Python语言编程学习:利用python输出当前python版本、MSC版本型号
- Python:python语言中与时间有关的库函数简介、安装、使用方法(获取当前时间/计算程序块前后运行时间/模型训练时间或耗费时间)之详细攻略
- Python:pmml格式文件的简介、安装、使用方法(利用python将机器学习模型转为Java常用的pmml格式文件)之详细攻略
- Python语言学习之文件夹那些事:python和文件夹的使用方法之详细攻略
- 已解决2.Set PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python (but this will use pure-Python parsing and wi
- 已解决2. Set PROTOCOL_BUPFERS_PYTHON_iMPLEMENTATION=python (but this will use pure-Python parsing and w
- 【Python成长之路】python 基础篇 -- global/nonlocal关键字使用
- 效率倍增!5款超级好用的Python工具库!
- Python Django框架学习06:Django 模型
- Python 远程调用MetaSploit
- 写网络爬虫天然就是择Python而用 python 网络爬虫3
- 基于Python语言使用RabbitMQ消息队列(三)
- python 装饰器
- python opencv轮廓检测
- Python小白的数学建模课-21.关键路径法
- 【2023年第十一届泰迪杯数据挖掘挑战赛】C题:泰迪内推平台招聘与求职双向推荐系统构建 建模及python代码详解 问题二
- p4.第一章 Python基础入门 -- 进制和码制 (四)