python学习(二)爬虫——爬取网站小说并保存为txt文件(二)
前面我们已经完成了单章小说的爬取,现在我们来爬取整本小说
一:获取小说章节列表
在小说网站里没不 小说都有自己的章节目录,里面记录了所有的小说章节地址。
我们要想获取整本小说就要先得到小说的章节列表
m.50zw.la的章节列表格式为http://m.50zw.la/chapters_加上小说id,即http://m.50zw.la/chapters_1/这个链接指向的是id为1的小说的章节列表。
对网页结构的分析就不多说了,直接上代码:
import requests
import os
from bs4 import BeautifulSoupurl = 'http://m.50zw.la/chapters_4598/'
web_url = 'http://m.50zw.la'
re_header = {
'Referer':'http://m.50zw.la/',
'Upgrade-Insecure-Requests':'1',
'User-Agent':'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Mobile Safari/537.36'
}chapter_list = []
i = 1
while 1:#获取网页#更改编码#获得BeautifulSoup对象#获取章节列表#url + str(i)第i页的urlr = requests.get(url + str(i),params=re_header)r.encoding = 'gbk'soup = BeautifulSoup(r.text,"html.parser")i+=1print(url + str(i))temp_list = soup.select('.last9 a')for t in range(len(temp_list)):temp_list[t] = temp_list[t]['href']del temp_list[0]if(len(temp_list)==0):breakchapter_list.extend(temp_list)for t in chapter_list:print(t)
二:通过章节列表获取章节内
将章节列表打印出来,我们发现之前获取到的章节链接全部是相对地址,我们还需要在前面加上主站地址
#将上面的for循环修改如下
for i in range(len(chapter_list)):chapter_list[i] = 'http://m.50zw.la' + chapter_list[i]print(chapter_list[i])
获取章节内容的代码如下:
#打开/创建文件
fo = open('1.txt','wb')for t in chapter_list:#获取第一页页面r = requests.get(t,params=re_header)r.encoding = 'gbk'soup = BeautifulSoup(r.text,"html.parser")#这个网站把每个章节分为两页,要分两次获取#获取章节名和第一页的内容title = soup.select('.nr_title')[0].textcontent_1 = soup.select('#nr1')[0].text#获取第二页页面r = requests.get(t.replace('.html','_2.html'),params=re_header)r.encoding = 'gbk'soup = BeautifulSoup(r.text,"html.parser")#第二部分章节内容content_2 = soup.select('#nr1')[0].text#拼接两部分内容 详细请搜索字符串join方法str1 = ''chapter_content = str1.join([content_1,content_2])#写入章节名和内容fo.write((title).encode('utf-8'))fo.write((chapter_content).encode('utf-8'))#打印提示print(title + '已下载')#关闭文件
fo.close()
完整代码
import requests
import os
from bs4 import BeautifulSoupurl = 'http://m.50zw.la/chapters_4598/'
web_url = 'http://m.50zw.la'
re_header = {
'Referer':'http://m.50zw.la/',
'Upgrade-Insecure-Requests':'1',
'User-Agent':'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Mobile Safari/537.36'
}'''***************************获取章节列表**********************************'''
chapter_list = []
i = 1
while 1:#获取网页#更改编码#获得BeautifulSoup对象#获取章节列表#url + str(i)第i页的urlr = requests.get(url + str(i),params=re_header)r.encoding = 'gbk'soup = BeautifulSoup(r.text,"html.parser")i+=1print(url + str(i))temp_list = soup.select('.last9 a')for t in range(len(temp_list)):temp_list[t] = temp_list[t]['href']del temp_list[0]if(len(temp_list)==0):breakchapter_list.extend(temp_list)for i in range(len(chapter_list)):chapter_list[i] = 'http://m.50zw.la' + chapter_list[i]print(chapter_list[i])'''***********************************获取章节内容*************************'''
#打开/创建文件
fo = open('1.txt','wb')for t in chapter_list:#获取第一页页面r = requests.get(t,params=re_header)r.encoding = 'gbk'soup = BeautifulSoup(r.text,"html.parser")#这个网站把每个章节分为两页,要分两次获取#获取章节名和第一页的内容title = soup.select('.nr_title')[0].textcontent_1 = soup.select('#nr1')[0].text#获取第二页页面r = requests.get(t.replace('.html','_2.html'),params=re_header)r.encoding = 'gbk'soup = BeautifulSoup(r.text,"html.parser")#第二部分章节内容content_2 = soup.select('#nr1')[0].text#拼接两部分内容 详细请搜索字符串join方法str1 = ''chapter_content = str1.join([content_1,content_2])#写入章节名和内容fo.write((title).encode('utf-8'))fo.write((chapter_content).encode('utf-8'))#打印提示print(title + '已下载')#关闭文件
fo.close()print('下载成功')
虽然我们爬取到了整本小说,但速度实在是不能忍,所以我用多线程优化了一下
下一篇:多线程爬取单本小说
python学习(二)爬虫——爬取网站小说并保存为txt文件(二)相关推荐
- Python爬虫练习笔记——爬取一本小说并保存为txt文件
最近竟然开始磕起了黄晓明和尹正的CP!!! 但是万恶的爱某艺不好好更新剧集,居然搞起了超前点映- WTF???有什么是我这个贫穷而又尊贵的VIP用户不能看的吗??? 于是我决定开始看小说了!找个网站把 ...
- 【网络爬虫】爬取网络小说并保存为txt
爬虫爬取网络小说并保存为txt文件 最近突然想看小说,但是苦于无法下载为txt,于是秉持着"自己动手,丰衣足食"的原则,自己写了一个爬虫,仅供参考~ 这里就以火星引力的<逆天 ...
- 基于Python实现的网络爬虫项目——多线程下载小说并保存为txt文件(包含完整代码及注释)
基于Python实现的网络爬虫项目--多线程下载小说并保存为txt文件(包含完整代码及注释) 一.确立预期目标 二.完成项目所需工具 三.项目需要解决的问题 问题一 问题二 问题三 问题四 问题五 问 ...
- Python爬取起点小说并保存到本地文件夹和MongoDB数据库中
Python爬取起点小说并保存到本地MongoDB数据库中 工具:Python3.7 + Mongo4.0 + Pycharm """ 爬取起点小说<诡秘之主> ...
- python学习笔记爬虫——爬取智联招聘信息
目的:自己输入指定地方,指定职业,起始页数,程序会自动打印页面的所有信息. 实现过程:这次程序的代码跟以往的都不一样,这次也是我第一次使用面向对象式编程,并且并不是分析网页代码,分析json字符串得到 ...
- Python爬虫爬取微博热搜保存为 Markdown 文件
微博热搜榜python爬虫,仅供学习交流 源码及注释: # -*- coding=UTF-8 -*- #!usr/bin/env pythonimport os import time import ...
- python如何爬取网站所有目录_用python爬虫爬取网站的章节目录及其网址
认识爬虫 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁.自动索引.模拟 ...
- 如何使用robots禁止各大搜索引擎爬虫爬取网站
如何使用robots禁止各大搜索引擎爬虫爬取网站 一.总结 一句话总结:假如此网站禁止爬虫抓取,那么,只要在网站的根目录下,创建一个robots.txt文件 User-agent: * Disallo ...
- Python爬虫 爬取歌曲的评论并写入txt
文章目录 一.实验任务 二.所需库函数 三.参考代码 四.实验结果 五.遇到的问题 六.写在最后 一.实验任务 进入网易云音乐周杰伦主页面爬取对应歌曲的评论,以歌名保存为txt文件 二.所需库函数 本 ...
最新文章
- iOS多线程全套:线程生命周期,多线程的四种解决方案,线程安全问题,GCD的使用,NSOperation的使用(下)
- 【Flutter】监听滚动动作 控制组件 透明度渐变 ( 移除顶部状态栏空白 | 帧布局组件 | 透明度组件 | 监听滚动组件 )
- navicate破解失败后删除注册表
- node+express+mongDB实现简单登录注册
- spring mybatis 整合jar 包冲突问题
- 三言两语说说进程调度
- oracle体系三大文件,oracle 体系_第三章控制文件
- c++ pdflib输出表格_DescrTab2包,输出SCI级别的描述统计表
- metamask源码学习-ui/index.js
- .Net程序猿玩转Android开发---(8)表格布局TableLayout
- macbook python安装_mac下安装Python3.*(最新版本)
- java如何配置环境变量_java如何配置环境变量
- 【FLY】C语言知识点总结
- QT项目六:简易客户信息管理系统
- 头歌实践平台:机器学习——支持向量回归
- 云计算机可持续发展的关键,云计算发展的几个关键问题及可持续发展性
- 一文理解UDS安全访问服务(0x27)
- 阿里云服务器最新优惠价格及最新收费标准(2023更新)
- vue.runtime.esm.js:4560 [Vue warn]: Property or method “item“ is not defined on the instance but
- 一篇文章搞懂互联网商业模式,以及一些鲜为人知的玩法
热门文章
- 等保2.0基本安全要求之技术要求分类
- 地图可视化技术的应用现状
- 编译linux kernel samples 模块
- AOC 27G2 评测
- 小学计算机学科工作计划,2023年小学信息技术学科工作计划
- java版坦克大战_java版坦克大战 - 源码下载|源代码 - 源码中国
- 从沙盒开始学习Cesium(持续更新)
- 基于80c51的倒计时音乐播放器
- 「Vue To Words」 - 教你在Vue项目中导出Word文档(包含表格合并,图片修改大小)
- Nature子刊|“二代+三代”宏基因组学揭示肠道微生物群的个性化结构变异