美文网首页
利用Python爬取妙笔阁小说网的《我是至尊》小说

利用Python爬取妙笔阁小说网的《我是至尊》小说

作者: yang_xiaomie | 来源:发表于2017-11-30 17:05 被阅读0次

    由于妙笔阁小说网中大多数小说章节数过大,基本上为几千章。所以挑选后选取了章节数为100多章的小说《我是至尊》。


    image

    下面详细描述爬取过程:
    1.构建请求头:

    user_agent = 'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36'  
    self.headers = {'User-Agent':user_agent}
    

    2.利用request请求url,并将相应内容转换为html:

    response = requests.get("http://www.mbige.com/info/27-27761/")
    response.encoding = response.apparent_encoding
    html = lxml.html.fromstring(response.text)
    

    3.目前已经得到了小说章节列表页面的html


    image

    对章节进行检查,找到html中每章节的url


    image
    利用xpath解析html,得到所有章节的url列表:
    urllst = html.xpath('//ul//li/a/@href')
    

    4.访问每一个章节的url,利用xpath解析其html,得到每章节的内容:


    image
    title = ''.join(html.xpath('//td[@valign = "top"]/div[@align="center"]/h1/text()'))
    part = ''.join(html.xpath('//div[@align="center"]/h2/text()'))
    infro = ''.join(html.xpath('//div[@class="border_b"]/text()'))
    context = '\n'.join([x.strip() for x in html.xpath('//div[@id="content"]/p/text()') if x])
    

    5.完整代码:

    import requests
    import lxml.html
    
    class myspider():
        def __init__(self):
            #构建请求头
            user_agent = 'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36'  
            self.headers = {'User-Agent':user_agent}
            
        def gethtml(self,url):
            #利用request请求url,并将相应内容转换为html
            try:
                response = requests.get(url)
            except:
                response = None
                pass
            else:
                response.encoding = 'gb18030'
            finally:
                html = lxml.html.fromstring(response.text)
            return html
            
        def getpage(self,url):
            #利用xpath解析html,得到所有章节的url列表
            htmlpage = self.gethtml(url);
            print(htmlpage)
            urllst = htmlpage.xpath('//ul//li/a/@href')
            return urllst
    
        def getcontext(self,url):
            contextlst = self.getpage(url) #获取所有章节的url列表
            num = 0
            with open('E:/我是至尊.txt', 'a+' ,encoding = 'utf8') as f :
            #爬取的每章节内容写入到E盘我是至尊.txt
                for i in contextlst[14:]:
                    i= 'http://www.mbige.com' + i #由于获取到的章节url不完整,进行补全
                    html = self.gethtml(i)
                    title = ''.join(html.xpath('//td[@valign = "top"]/div[@align="center"]/h1/text()'))
                    part = ''.join(html.xpath('//div[@align="center"]/h2/text()'))
                    infro = ''.join(html.xpath('//div[@class="border_b"]/text()'))
                    context = '\n'.join([x.strip() for x in html.xpath('//div[@id="content"]/p/text()') if x])
                    f.write(str(title)+'\n'+str(part)+'\n'+str(infro)+'\n'+str(context)+'\n'+'\n')
                    num+=1
                    print("写入完成"+"第"+str(num)+"页")
    
        
    if __name__ == '__main__':
        sp=myspider()
        url1='http://www.mbige.com/info/27-27761/'
        sp.getcontext(url1)
    
    

    6.爬取完成后得到的我是至尊.txt部分内容如下:


    image

    到这里就爬完一部小说啦~~~~
    如果对爬取全站的小说信息感兴趣,可以参考我的上一篇文章《利用Python爬取妙笔阁小说网站的小说信息并保存为txt和csv格式》,欢迎阅读。

    相关文章

      网友评论

          本文标题:利用Python爬取妙笔阁小说网的《我是至尊》小说

          本文链接:https://www.haomeiwen.com/subject/uznvbxtx.html