import urllib.request import re #1獲取主頁源代碼 #2獲取章節超連接 #3獲取章節內容 #4下載小說 #駝峯命名法 #註釋 獲取小說內容 def getNovelContent(): #獲取源代碼 HTTP Response對象 html = urllib.request.urlopen('http://www.quanshuwang.com/book/0/269/') html = html.read() #print(html) #設置編碼 html = html.decode('gbk') #獲取超連接 #<li><a href="http://www.quanshuwang.com/book/0/269/78850.html" title="第一章 山邊小村,共2741字">第一章 山邊小村</a></li> #正則表達式 通配符 .*? 匹配全部 (.*?)括號裏面是須要的內容 分組匹配 reg = r'<li><a href="(.*?)" title=".*?">(.*?)</a></li>' #目的是增長效率的,能夠不寫,但寫更好 reg = re.compile(reg) urls = re.findall(reg,html) #print(urls) for i in urls: #print(i[0]) novel_url = i[0] novel_title = i[1] chapt = urllib.request.urlopen(novel_url).read() chapt_html = chapt.decode('gbk') # | ||d r' |d' reg = '</script> (.*?)<script type="text/javascript">' # S 多行匹配 reg = re.compile(reg,re.S) chapt_content = re.findall(reg,chapt_html) #print(chapt_content[0]) #把沒用的替換掉,注意類型進行一次替換以後是列表,br是換行,nbsp是空格 chapt_content = chapt_content[0].replace('<br />',"") #print(type(chapt_content)) chapt_content = chapt_content.replace(' ',"") #從列表變成字符串了,下面不用加索引 #print(chapt_content) #下載,能夠加個提示 print("正在保存%s"%novel_title) # w 讀寫模式 wb 二進制讀寫模式,通常用來讀寫照片和視頻 沒加具體路徑則在py路徑下自動新增,也能夠保存爲doc格式等 f = open('{}.txt'.format(novel_title),'w') f.write(chapt_content) f.close
#能夠換種更好的方法
#with open('{}.txt'.format(novel_title),'w') as f:
# f.write(chapt_content)
getNovelContent()
沒有註釋簡約版代碼:javascript
import urllib.request import re def getNovelContent(): html = urllib.request.urlopen('http://www.quanshuwang.com/book/0/269/') html = html.read() html = html.decode('gbk') reg = r'<li><a href="(.*?)" title=".*?">(.*?)</a></li>' reg = re.compile(reg) urls = re.findall(reg,html) for i in urls: novel_url = i[0] novel_title = i[1] chapt = urllib.request.urlopen(novel_url).read() chapt_html = chapt.decode('gbk') reg = '</script> (.*?)<script type="text/javascript">' reg = re.compile(reg,re.S) chapt_content = re.findall(reg,chapt_html) chapt_content = chapt_content[0].replace('<br />',"") chapt_content = chapt_content.replace(' ',"") print("正在保存%s"%novel_title) f = open('{}.txt'.format(novel_title),'w') f.write(chapt_content) f.close getNovelContent()
效果以下:html