使用urllib.request去爬取小說

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>&nbsp;&nbsp;&nbsp;&nbsp;(.*?)<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('&nbsp;&nbsp;&nbsp;&nbsp;',"")
        #從列表變成字符串了,下面不用加索引
        #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>&nbsp;&nbsp;&nbsp;&nbsp;(.*?)<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('&nbsp;&nbsp;&nbsp;&nbsp;',"")

        print("正在保存%s"%novel_title)
        f = open('{}.txt'.format(novel_title),'w')
        f.write(chapt_content)
        f.close

getNovelContent()

 效果以下:html

相關文章
相關標籤/搜索