120行代码爬取电子书网站

news/2024/5/10 12:41:21/文章来源:https://blog.csdn.net/weixin_34297704/article/details/89768758

无聊的练习。。。貌似网站真的有毒,我的电脑多了一个广告。。。fuck

换做好几年前我们看电子书都是在网上下载txt文件的书籍,现在各种APP阅读软件实在方便太多。
那么txt的文件就没用了吗?不呀,可以下载放kindle阅读呀!

部分网站不提供整本书籍下载,想想也是麻烦哎!既然不提供,那么,自己动手,风衣足食呀!

目标网站:http://www.136book.com/

首先 需要的库文件

import re
import os
import requests
import time
import threading
from multiprocessing import Pool
from requests import RequestException
from urllib import request
from bs4 import BeautifulSoup

根据网页链接获取整个网页代码

通过此方法获取整个网页内容,这样我们才可以做下面的页面解析

#获取页面内容
def get_page(url):user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36'myheader = {'User-Agent':user_agent}try:response = requests.get(url,headers=myheader)if response.status_code == 200:return response.textreturn Noneexcept RequestException:print( '出错',url)return None

分析网页获取所有章节链接

打开网址http://www.136book.com/santiheji 用chrome浏览器右键检查查看信息
可以发现所有章节都在div id=”box1” class=”book_detail” 一共有两个这样的div标签,而我们所需要的信息是需要第二个,因为第二个包含了第一个的所有内容

这里写图片描述

代码如下

#解析页面 获取所有链接
def get_all_link(html):#用来保存所有的章节链接link_title = []soup = BeautifulSoup(html,'lxml')#获取所有章节 不要最新章节的内容all_chapter = soup.find_all('div',attrs={'class':'box1'})#在以all_chapter为内容提取所有a标签soup_all_chapter = BeautifulSoup(str(all_chapter[1]),'lxml')# print( soup_all_chapter )#获取所有的li标签all_li = soup_all_chapter.find_all('ol',attrs={'class':'clearfix'})#在获取所有a标签soup_a = BeautifulSoup(str(all_li),'lxml')all_a = soup_a.find_all('a')for a in all_a:link_title.append( a.get('href') )# print( ( a.get('href'),a.text ) )# print( link_title )return link_title

分析网页获取文本内容

首先顺便打开一本书,比如《三体》 用chrome浏览器右键检查查看信息

可以看出章节标题在 h1第1章 科学边界(1) p标签里面就是每章节的内容只要取出div id=”content”中所有的p标签里面的内容即可!

这里写图片描述

代码如下

#解析页面提取所有TXT文本 并写入文件
def get_txt_content_and_write_file(url):#获取网页文本内容html = get_page(url)# print( html )#提取文本内容soup = BeautifulSoup(html,'lxml')#获取每章节标题soup_title = soup.find('h1')# print( soup_title.text )#获取所有trsoup_tr = soup.find('tr')soup_a = BeautifulSoup(str(soup_tr),'lxml')#获取书籍名称book_name = soup_a.find_all('a')[2].text[:-4]#将标题写入文件write_file( str(soup_title.text)+'\n',book_name ) #写入数据并换行# 找出div中的内容soup_text = soup.find('div', id='content')# 输出其中的文本soup_p = BeautifulSoup(str(soup_text),'lxml')for x in (soup_p.find_all('p')):#去掉 p 标签x = str(x).replace('<p>','').replace('</p>','')#写入TXT文件write_file( x,book_name )# print( x )

获取整本书籍名称

这样后面写入文件就可以根据书籍名来创建文件夹了

#解析页面获取整本书籍名称
def get_title(html):soup = BeautifulSoup(html,'lxml')title = soup.find('h1')return title.text

写入txt文件

获取了网页上所有我们所需的内容,接下来就是写入文件

def write_file(content,book_name):file_path = 'D:\{}/{}.txt'.format(book_name,book_name)#首先创建文件夹file_directories = 'D:\{}'.format(book_name)if not os.path.exists(file_directories):os.mkdir(file_directories)#写入文件with open(file_path,'a') as f:f.flush()f.write(content+'\n') #写入数据并换行f.close()

主函数运行函数执行操作

if __name__ == '__main__':url = 'http://www.136book.com/santiheji'  #程序计时start_time = time.time()html = get_page(url)#获取书籍名称title = get_title(html )#获取所有章节链接link_title = get_all_link(html) #返回的数据是一个列表 列表内容为所有章节链接t = 0for lt in link_title:t = t+1print( lt,'已经完成',t/len(link_title)*100,'%' )#根据每个链接去拿取数据并写入文件get_txt_content_and_write_file( lt  )#结束时间end_time = time.time()print( '耗时:',end_time-start_time )

一两分钟就搞定了一本电子书,是不是很过瘾?想想如果是手动ctrl+c ctrl+v估计会想死吧…
提示,换一本书的链接也可以下载哦,哈哈哈 不放过此网站上的任何一本书籍!

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

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

相关文章

前台模板 海豚php_WP网站模板开发中,怎样给分类目录添加SEO标题和关键词?

作为一个wordpress网站的站长&#xff0c;都希望自己的网站在百度或谷歌搜索引擎上的排名好。这时&#xff0c;我们除了要做好wordpress网站的内容之外&#xff0c;还要对wordpress网站做好相关的SEO优化。在前面的章节中&#xff0c;我们介绍了wordpress网站首页的SEO优化&…

静态资源文件自动压缩并替换成压缩版本(大型网站优化技术)

原文:静态资源文件自动压缩并替换成压缩版本&#xff08;大型网站优化技术&#xff09;这一次&#xff0c;我总结和分享一项大型网站优化技术&#xff0c;那就是在项目中自动压缩静态资源文件&#xff08;css、js&#xff09;&#xff0c;并让网站自动加载压缩后的资源文件。当…

临阵磨枪,血拼季网站优化的最后三板斧

2019独角兽企业重金招聘Python工程师标准>>> 【编者按】本文作者 Dennis Callaghan 目前就职于 Callaghan&Partners。本文中&#xff0c;作者分享了购物高峰期提高网站性能的三个建议&#xff0c;帮助电商网站解决性能难题&#xff0c;提升用户体验&#xff0c;…

用户访问网站的完整流程

在浏览器输入想要访问的域名之后&#xff0c;浏览器会进行域名解析获得IP地址&#xff0c;在经过TCP的连接&#xff0c;实现数据的传输就会有两种报文&#xff0c;及请求报文和响应报文。最终才能实现通信。因此想要实现通信&#xff0c;就得先弄懂DNS的解析原理以及TCP连接通道…

网站定位之---根据IP获得区域

记得以前做一个培训机构网站时候需要定位&#xff0c;那时候用的搜狐的api&#xff0c;不是很精准。 demo:https://github.com/dunitian/LoTCodeBase/tree/master/NetCode/3.常用技能/06.Position/01.IPToPosition 后来做电商的时候用的新浪的api&#xff0c;感觉还行&#xff…

网站收录工具(php导航自动收录源码)_让百度快速收录网站的办法(简单可行)...

让百度快速收录网站最直接的方式是把网站链接提交给百度&#xff0c;能让蜘蛛快速发现页面而不是等着百度蜘蛛自己发现&#xff0c;收录慢不说&#xff0c;如果网站结构有问题&#xff0c;可能还抓取不到某些页面&#xff0c;从而不收录。百度提交网站收录的方式有快速收录和普…

java支付宝开发-02-手机网站支付

源码已上传github&#xff0c;欢迎专注&#xff1a;https://github.com/shirayner/alipay-wap 一、基础部分 1.手机网站支付产品介绍 1.1 阅读官方介绍&#xff1a; 手机网站支付产品介绍 1.2 看完官方的介绍之后&#xff0c;可以做出如下总结&#xff1a; 通过接入此接口&…

大型网站系统架构的演化

2019独角兽企业重金招聘Python工程师标准>>> 前言 一个成熟的大型网站&#xff08;如淘宝、京东等&#xff09;的系统架构并不是开始设计就具备完整的高性能、高可用、安全等特性&#xff0c;它总是随着用户量的增加&#xff0c;业务功能的扩展逐渐演变完善的&#…

可以发外链的网站_SEO优化就是写文章发外链吗?到底该怎么优化一个网站呢?...

点击箭头处“蓝色字”&#xff0c;关注我们哦&#xff01;&#xff01;在某个群里有很多“大侠”对SEO优化很是有误解&#xff0c;有的人说优化就是使劲的发文章&#xff0c;把外链做到极致就可以了&#xff0c;也有的人对优化不屑一顾&#xff0c;觉得优化没技术含量&#xff…

网站输入正确账号密码页面刷新一下_对某钓鱼网站的一次渗透测试

文章作者&#xff1a;Mochazz文章来源&#xff1a;Mochazz的博客原文链接&#xff1a;https://mochazz.github.io/2019/07/01/对某钓鱼网站的一次渗透测试/周末在某个CTF群偶然看到这个钓鱼网站&#xff1a;http://gggggg.cn (声明&#xff1a;本文中出现的域名、IP均被替换&am…

免密登录_以Airbnb为例,用selenium免密登录网站

大家好&#xff0c;这篇文章介绍了如何通过selenium利用cookie免密登陆网站&#xff08;第一次写文章 &#xff09;zzh2027/zzh2027.github.io​github.comfrom selenium import webdriver from selenium.webdriver.common.keys import Keys## 模拟键盘用的包 from selenium.we…

SEO流量定义,什么是搜索引擎优化策略营销?

SEO流量定义&#xff0c;什么是搜索引擎优化策略营销&#xff1f; 搜索引擎优化&#xff08;SEO&#xff09;看起来非常简单。你挑选几个关键词&#xff0c;然后瞧&#xff01;您的网页针对搜索引擎优化进行了优化 还没。 很多人都明白SEO的基本原则&#xff0c;但在过去的十年…

疯狂的多域名富关键词网站优化策略

疯狂的多域名富关键词网站优化策略 SEO中一个被很多人看重的排名因素就是根域名含有关键词&#xff0c;中文也一样&#xff0c;就是含有拼音&#xff0c;在相同的条件下&#xff0c;显然根域名含有关键词就有较好的排名&#xff0c;有一些SEO.er利用搜索引擎的这个排名策略&…

实时搜索SEO如何应对

实时搜索(Real-time Search)已经大势所趋&#xff0c;不是SEO不明白&#xff0c;是互联网变化太快&#xff0c;每天都有新名词&#xff0c;每天都有新主题&#xff0c;搜索引擎如何为用户及时的返回丰富又有意义的即时结果&#xff0c;Google推出Caffeine也正是适应这种趋势&am…

国内优秀的免费素材网站大比拼

奇遇网络专业提供seo优化服务&#xff0c;seo优化外包&#xff0c;免费建站模板&#xff0c;免费wordpress模板&#xff0c;DIVCSS模板,几千种免费网页模板&#xff0c;收集最好最全的html5模板及css3模板,html5是目前最前瞻的网页技术,本站为大家提供免费技术交流平台。 国内优…

ASP.NET新建解决方案和网站

新建解决方案和网站 1.打开visual studio&#xff0c;选择新建项目&#xff0c;然后选择解决方案。 2.解决方案建好之后&#xff0c;右键点击解决方案选择新建网站。注意&#xff0c;路径。我在solution1文件夹下面又建了一个site文件夹。 3.右键点击site选择添加新项。 好了&a…

网站架构演化阶段

网站架构演化阶段 网站架构需要工程师从全局把握一个网站的前台、后台&#xff0c;要知道什么地方会有瓶颈&#xff0c; 对网站的可扩展性、安全性等需要有一个成熟的把握。 下面说的几个阶段可以了解网站架构演化。 1&#xff09;单机部署 最简单的情况&#xff0c;可以把各个…

IOS-5个可以帮你优化App的优秀网站

也许现在有一款App可以提供所有你需要的&#xff0c;你不需要的&#xff0c;或者你可以想象到的内容。但是&#xff0c;有多少App真的可以不仅满足需求而且还能提供很好的用户体验呢? 相信很多APP并没有这样的能力。有一些APP的设计特别烂&#xff0c;以至于用户很难去完成一些…

安工大计算机作业提交网站,安工大教务处教务系统:http://jwc.ahut.edu.cn

各有关学院&#xff1a;根据教育部高等教育教学评估中心和中国工程教育专业认证协会联合发布《关于接受2020年工程教育认证申请的通告》(工程教育认证通告〔2019〕第3号)(附件1)文件精神&#xff0c;2020年工程教育专业认证申请工作现已开始。请各有关学院根据工程教育认证标准…

20点提高网站访问速度缩短网页加载时间

网友上网都不喜欢用太多的时间等待网页的打开&#xff0c;等待的越长&#xff0c;用户可能会直接关闭网页&#xff0c;这样就会损失很多流量!其次&#xff0c;关键字的排名与网页的打开速度也有关系&#xff0c;这个主要体现搜索引擎对用户体验度上&#xff0c;用户体验度好&am…