利用Python爬取妙笔阁小说网站的小说信息并保存为txt和csv格式

news/2024/5/10 9:23:26/文章来源:https://blog.csdn.net/yang_xiaomie/article/details/78674647

本次爬取的是妙笔阁小说网仙侠系列中所有小说的信息,打开网页会看到如下图所示的小说列表。
这里写图片描述
根据列表,选择爬取小说的书名、作者、最新更新、简介这四项信息。
在爬取之前,为了防止网站禁止爬取,需构造访问的请求头,模拟浏览器访问该网站。那么如何构建请求头,需要找到访问网站时的代理:

在想要爬取的页面按F12,然后点击NetWork,按F5刷新,随便点击进去一个即可,然后找到User-Agent
这里写图片描述

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'  
headers  =  {'User-Agent':user_agent}

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

response = requests.get("http://www.mbige.com/bookstore/xianxia/default-0-0-0-0-0-0-1.html")response.encoding = response.apparent_encodinghtml = lxml.html.fromstring(response.text)

3.利用Xpath解析html,并将解析的内容写入txt文件中:

 with open("E:/xiaoshuo.txt",'a+',encoding = 'utf8') as f :#通过对页面元素检查,发现html中每个小说都有一个列表块(alistbox), 小说的信息均在alistbox 标签下,#所以首先获取所有小说的alistbox标签下的内容,存在divlst列表中divlst = html.xpath('//div[@id="alistbox"]')#对每个小说的alistbox进行解析,获取小说名(title)、作者(author)、最新更新(newest)、简介(intro)的信息for i in divlst:title = i.xpath('.//h2/a/text()')author = i.xpath('.//div[@class="title"]/span/text()')newest = i.xpath('.//li/a/text()')intro = i.xpath('.//div[@class="intro"]/text()')f.write(str(title)+" "+str(author)+'\n'+str(newest)+'\n'+str(intro)+'\n')

4.完整代码(保存为txt格式):

import requests
import lxml.htmlclass 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):try:response = requests.get(url)except:response = Noneelse:response.encoding = 'gb18030'finally:html = lxml.html.fromstring(response.text)return htmldef getpage(self,url):with open("E:/xiaoshuo.txt",'a+',encoding = 'utf-8') as f :html = self.gethtml(url)divlst = html.xpath('//div[@id="alistbox"]')for i in divlst:title = ''.join(i.xpath('.//h2/a/text()'))#''.join把元素从列表中抽取出来,例:['a']抽取出来为aauthor = ''.join(i.xpath('.//div[@class="title"]/span/text()'))newest = ''.join(i.xpath('.//li/a/text()'))#对intro进行去除换行intro = ''.join([x.strip('\n') for x in i.xpath('.//div[@class="intro"]/text()') if x])f.write(str(title)+"\n"+str(author)+'\n'+str(newest)+'\n'+str(intro)+'\n'+'\n')    if __name__ == '__main__':sp=myspider()#仙侠系列小说列表共160页,通过观察发现每页的url的最后为当前页数,即从1递增到160#所以通过循环得到替换url最后元素,得到每一页的url,逐一访问url1='http://www.mbige.com/bookstore/xianxia/default-0-0-0-0-0-0-{0}.html'for num in range(1,161):url = url1.format(num)sp.getpage(url)print(str(num)+"page")

5.得到的xiaoshuo.txt文件内容如下:
这里写图片描述

保存为csv格式只需在上述代码中增加几行代码
6.完整代码(保存为csv格式):

import requests
import lxml.html
#导入csv包
import csvclass 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):try:response = requests.get(url)except:response = Noneelse:response.encoding = 'gb18030'finally:html = lxml.html.fromstring(response.text)return htmldef getpage(self,url):with open("E:/xiaoshuo.csv",'a+',encoding = 'utf-8') as f :f1 = csv.writer(f)#创建表格中的列名f1.writerow(['书名','作者','最新更新','简介'])html = self.gethtml(url)divlst = html.xpath('//div[@id="alistbox"]')for i in divlst:#''.join把元素从列表中抽取出来,例:['a']抽取出来为atitle = ''.join(i.xpath('.//h2/a/text()'))author = ''.join(i.xpath('.//div[@class="title"]/span/text()'))newest = ''.join(i.xpath('.//li/a/text()'))#对intro进行去除换行intro = [x.strip('\n') for x in i.xpath('.//div[@class="intro"]/text()') if x]f1.writerow([str(title),str(author),str(newest),str(intro)])      if __name__ == '__main__':sp=myspider()#仙侠系列小说列表共160页,通过观察发现每页的url的最后为当前页数,即从1递增到160#所以通过循环得到替换url最后元素,得到每一页的url,逐一访问url1='http://www.mbige.com/bookstore/xianxia/default-0-0-0-0-0-0-{0}.html'for num in range(1,161):url = url1.format(num)sp.getpage(url)print(str(num)+"page")

7.得到的xiaoshuo.csv文件内容如下:
这里写图片描述
开心以为终于爬取完成,一个完美滴csv将呈现眼前,打开文件一脸懵逼,全是乱码,但是编码应该不会有问题的啊,毕竟保存txt文件中并无乱码问题,所以应该是excel编码问题。然后使用Notepad++打开csv文件,修改编码后,再次打开文件就没有乱码啦:
这里写图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_899872.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

仿360网站广告实现换肤特效

1、新建一个web项目&#xff0c;index.jsp同级目录下放jquery插件和top_right.png图片 2、index.jsp页面代码 <% page language"java" import"java.util.*" pageEncoding"utf-8"%> <% String path request.getContextPath(); String b…

仿360小说网站的源码设计实现

360首页检索小说效果如下&#xff1a; 个人完成编写的schoolnet校园网主页如下 在小说模块中&#xff0c;包括&#xff1a;小说类别编号&#xff1a;a、校园爱情 b、动漫同人 c、校园魔法 d、轻小说 e、校园励志 f、校园修真 g、名人传记 h、古典小说 …

基于仿360小说网站(校园网)的源码设计实现(升级版)

基于博文仿360小说网站的源码设计实现对小说网站的源码更新升级&#xff08;动漫小说网&#xff09;。 网站PC电脑端效果截图&#xff1a; APP手机端效果截图&#xff1a; 数据库相关表设计&#xff1a; 主要包含小说id,章节id,类型ID,小说名称,章节名称,作者,缩略图,图片地址…

动漫网站源码设计与实现

已完成编写的Sky动漫网主页如下 PC电脑端效果截图&#xff1a; APP手机端效果截图&#xff1a; 数据库相关表设计如下&#xff1a; 主要有&#xff1a;动漫主体信息表、视频播放源表、文章资讯表、主题专辑表、经典语录表、图片图集表、评论表等等 信息采集使用jsoup爬取 各…

第二次作业------仿制网站

码云链接&#xff1a;https://gitee.com/eiumc123/12.git 百度云链接&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1ej-JvlRfRYe8KzGje-ULOQ 提取码&#xff1a;fnmv &#xff08;文件中有视频&#xff0c;过大无法上传到码云&#xff0c;所以。。。&#xff09; <…

怎么在树莓派上搭建web网站,并发布到外网可访问?

系列文章 怎么在树莓派上搭建web网站&#xff0c;并发布到外网可访问&#xff1f;怎么在树莓派上搭建WordPress博客网站&#xff0c;并发布到外网可访问&#xff1f;如何为树莓派上的WordPress博客网站配置自己的域名&#xff0c;并且外网可访问&#xff1f;如何在局域网外SSH…

怎么在树莓派上搭建WordPress博客网站,并发布到外网可访问?

系列文章 怎么在树莓派上搭建web网站&#xff0c;并发布到外网可访问&#xff1f;怎么在树莓派上搭建WordPress博客网站&#xff0c;并发布到外网可访问&#xff1f;如何为树莓派上的WordPress博客网站配置自己的域名&#xff0c;并且外网可访问&#xff1f;如何在局域网外SSH…

如何为树莓派上的WordPress博客网站配置自己的域名,并且外网可访问?

系列文章 怎么在树莓派上搭建web网站&#xff0c;并发布到外网可访问&#xff1f;怎么在树莓派上搭建WordPress博客网站&#xff0c;并发布到外网可访问&#xff1f;如何为树莓派上的WordPress博客网站配置自己的域名&#xff0c;并且外网可访问&#xff1f;如何在局域网外SSH…

如何在树莓派上搭建网站,并发布上线(1)

系列文章 如何在树莓派上搭建网站&#xff0c;并发布上线&#xff08;1&#xff09;如何在树莓派上搭建网站&#xff0c;并发布上线&#xff08;2&#xff09;如何在树莓派上搭建网站&#xff0c;并发布上线&#xff08;3&#xff09;如何在树莓派上搭建网站&#xff0c;并发布…

如何在树莓派上搭建网站,并发布上线(2)

系列文章 如何在树莓派上搭建网站&#xff0c;并发布上线&#xff08;1&#xff09;如何在树莓派上搭建网站&#xff0c;并发布上线&#xff08;2&#xff09;如何在树莓派上搭建网站&#xff0c;并发布上线&#xff08;3&#xff09;如何在树莓派上搭建网站&#xff0c;并发布…

如何在树莓派上搭建网站,并发布上线(3)

系列文章 如何在树莓派上搭建网站&#xff0c;并发布上线&#xff08;1&#xff09;如何在树莓派上搭建网站&#xff0c;并发布上线&#xff08;2&#xff09;如何在树莓派上搭建网站&#xff0c;并发布上线&#xff08;3&#xff09;如何在树莓派上搭建网站&#xff0c;并发布…

如何在树莓派上搭建网站,并发布上线(4)

系列文章 如何在树莓派上搭建网站&#xff0c;并发布上线&#xff08;1&#xff09;如何在树莓派上搭建网站&#xff0c;并发布上线&#xff08;2&#xff09;如何在树莓派上搭建网站&#xff0c;并发布上线&#xff08;3&#xff09;如何在树莓派上搭建网站&#xff0c;并发布…

如何在树莓派上搭建WordPress网站 3-5

系列文章 如何在树莓派上搭建网站&#xff0c;并发布上线&#xff08;1&#xff09;如何在树莓派上搭建网站&#xff0c;并发布上线&#xff08;2&#xff09;如何在树莓派上搭建网站&#xff0c;并发布上线&#xff08;3&#xff09;如何在树莓派上搭建网站&#xff0c;并发布…

如何在树莓派上搭建WordPress网站 4-5

系列文章 如何在树莓派上搭建网站&#xff0c;并发布上线&#xff08;1&#xff09;如何在树莓派上搭建网站&#xff0c;并发布上线&#xff08;2&#xff09;如何在树莓派上搭建网站&#xff0c;并发布上线&#xff08;3&#xff09;如何在树莓派上搭建网站&#xff0c;并发布…

如何在树莓派上搭建WordPress网站 5-5

系列文章 如何在树莓派上搭建网站&#xff0c;并发布上线&#xff08;1&#xff09;如何在树莓派上搭建网站&#xff0c;并发布上线&#xff08;2&#xff09;如何在树莓派上搭建网站&#xff0c;并发布上线&#xff08;3&#xff09;如何在树莓派上搭建网站&#xff0c;并发布…

如何为搭建的网站配置自己的域名 1-2

系列文章 如何为搭建的网站配置自己的域名 1-2如何为搭建的网站配置自己的域名 2-2cpolar内网穿透如何配置自定义域名访问 在之前的系列文章中&#xff0c;我们向大家介绍了如何在本地树莓派上搭建属于自己的网站&#xff0c;并让这个网站能被公众互联网的用户安全访问。虽然这…

如何为搭建的网站配置自己的域名 2-2

系列文章 如何为搭建的网站配置自己的域名 1-2如何为搭建的网站配置自己的域名 2-2cpolar内网穿透如何配置自定义域名访问 上一篇&#xff1a; 如何为搭建的网站配置自己的域名 1-2 在上一篇文章中&#xff0c;我们通过在服务器上设置新的域名&#xff0c;并将新域名的指向引导…

如何在Ubuntu上搭建WordPress网站,并公网可访问 1-17

系列文章 如何在Ubuntu上搭建WordPress网站&#xff0c;并公网可访问 1-17如何在Ubuntu上搭建WordPress网站&#xff0c;并公网可访问 2-17如何在Ubuntu上搭建WordPress网站&#xff0c;并公网可访问 3-17如何在Ubuntu上搭建WordPress网站&#xff0c;并公网可访问 4-17如何在…

如何在Ubuntu上搭建WordPress网站,并公网可访问 2-17

系列文章 如何在Ubuntu上搭建WordPress网站&#xff0c;并公网可访问 1-17如何在Ubuntu上搭建WordPress网站&#xff0c;并公网可访问 2-17如何在Ubuntu上搭建WordPress网站&#xff0c;并公网可访问 3-17如何在Ubuntu上搭建WordPress网站&#xff0c;并公网可访问 4-17如何在…

如何在Ubuntu上搭建WordPress网站,并公网可访问 3-17

系列文章 如何在Ubuntu上搭建WordPress网站&#xff0c;并公网可访问 1-17如何在Ubuntu上搭建WordPress网站&#xff0c;并公网可访问 2-17如何在Ubuntu上搭建WordPress网站&#xff0c;并公网可访问 3-17如何在Ubuntu上搭建WordPress网站&#xff0c;并公网可访问 4-17如何在…