Python抓取小說

2021-09-07 01:35:55 字數 2251 閱讀 2852

這個指令碼命令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("]*?>(.+?)")

self.contenttag=re.compile("(.+?)

",re.i|re.s)

def gethtml(self, url):

headers =

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=""

bookname="地球上唯一的魔法師"

text=

matchs=self.atag.finditer(self.gethtml(bookurl))

alist=list(matchs)

total = len(alist)

print "total ".format(total)

i=0for m in alist:

i+=1

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

del text[:]

print "/".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()

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 爬蟲,抓取小說

coding utf 8 from bs4 import beautifulsoup from urllib import request import re import os,time 訪問url,返回html頁面 defget html url req request.request url ...

使用ruby來抓取小說

好久沒有寫ruby 了,手有點生,今年準備多練練 require rubygems require hpricot require open uri require fileutils def wri url 1.22 each do page sub url url page.to s html ...

小說頁面爬蟲抓取問題

今天在抓取的時候,試了很多次 都抓不出資料和文字,一直在提示我fand all找不到目標屬性,後來修改了自己的函式代稱進行執行抓取 雖然成功了,但是卻把整個 頁面的資料和文字給全部抓取了下來 雖然解決了之前的問題,但是這些資料太過於雜亂無法獲取該有的作用,目前思路還是有點混亂,還是需要對 進行改進,...