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

由于妙笔阁小说网中大多数小说章节数过大,基本上为几千章。所以挑选后选取了章节数为100多章的小说《我是至尊》。
这里写图片描述
下面详细描述爬取过程:
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
这里写图片描述
对章节进行检查,找到html中每章节的url
这里写图片描述
利用xpath解析html,得到所有章节的url列表:

urllst = html.xpath('//ul//li/a/@href')

4.访问每一个章节的url,利用xpath解析其html,得到每章节的内容:
这里写图片描述

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部分内容如下:
这里写图片描述

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值