抓取网页生成电子书

抓取网页生成电子书

抓取网页生成电子书(几个适合新入门学习Python爬虫的网页,总有一款适合你!)

网站优化优采云 发表了文章 • 0 个评论 • 100 次浏览 • 2022-02-11 17:29 • 来自相关话题

  抓取网页生成电子书(几个适合新入门学习Python爬虫的网页,总有一款适合你!)
  推荐几个适合初学者学习Python爬虫的网页。总有一款适合你!
  
  废话不多说,直接上干货吧!
  打开今日头条首页,搜索小姐姐,或者其他你感兴趣的内容,然后点击图库
  
  动态加载的json数据出来,没有反爬。注意,如果不想抓取内容中的图片,只能抓取缩略图,也就是本页显示的图片。它在 json 数据的 image_list 中。注意,将 url 中的列表更改为 origin,这是大局!代码显示如下
  
  图片地址全部出!
  全书网:直接源码匹配相关内容
  直接搜索全书,打开首页,找到一本小说,比如《盗墓笔记》,点击跳转网页,点击开始阅读,所有章节出现,小说内容,网页内容进入章节后出现代码。如下:
  
  
  80本电子书:匹配地址直接下载压缩文件
  80 与上面的全书网类似,但它本身提供了下载功能,可以直接构造下载文件、页面截图和带有小说ID和名称的代码:
  
  
  
  其他类似网站
  类似的网站还有:美子图、美拓、笔趣阁、九九等,连百度图片也可以通过抓包获取数据!
  以上代码都是手写的,没有排版,有兴趣的可以自己打,或者比如小说网站,可以先抓取大类,然后把小说全部拿进去每一类,最后把所有的小说都抓出来,小说的内容,这就是全站爬虫!!!
  
  如果你还有其他合适的网站,希望你可以在评论区分享!一起交流吧! 查看全部

  抓取网页生成电子书(几个适合新入门学习Python爬虫的网页,总有一款适合你!)
  推荐几个适合初学者学习Python爬虫的网页。总有一款适合你!
  
  废话不多说,直接上干货吧!
  打开今日头条首页,搜索小姐姐,或者其他你感兴趣的内容,然后点击图库
  
  动态加载的json数据出来,没有反爬。注意,如果不想抓取内容中的图片,只能抓取缩略图,也就是本页显示的图片。它在 json 数据的 image_list 中。注意,将 url 中的列表更改为 origin,这是大局!代码显示如下
  
  图片地址全部出!
  全书网:直接源码匹配相关内容
  直接搜索全书,打开首页,找到一本小说,比如《盗墓笔记》,点击跳转网页,点击开始阅读,所有章节出现,小说内容,网页内容进入章节后出现代码。如下:
  
  
  80本电子书:匹配地址直接下载压缩文件
  80 与上面的全书网类似,但它本身提供了下载功能,可以直接构造下载文件、页面截图和带有小说ID和名称的代码:
  
  
  
  其他类似网站
  类似的网站还有:美子图、美拓、笔趣阁、九九等,连百度图片也可以通过抓包获取数据!
  以上代码都是手写的,没有排版,有兴趣的可以自己打,或者比如小说网站,可以先抓取大类,然后把小说全部拿进去每一类,最后把所有的小说都抓出来,小说的内容,这就是全站爬虫!!!
  
  如果你还有其他合适的网站,希望你可以在评论区分享!一起交流吧!

抓取网页生成电子书(为什么80%的码农都做不了架构师?(图))

网站优化优采云 发表了文章 • 0 个评论 • 61 次浏览 • 2022-02-11 02:12 • 来自相关话题

  抓取网页生成电子书(为什么80%的码农都做不了架构师?(图))
  为什么 80% 的程序员不能成为架构师? >>>
  
  ####Calibre 制作电子书
  Calibre支持用Python语言编写脚本,爬取网页内容生成电子书,默认为mobi格式
  在爬取新闻下拉菜单中选择添加自定义新闻源New Recipe---切换到高级模式,默认提供代码模板,您只需添加自定义网页源即可编写Recipe文件代码抓取新闻,选择自定义来源,下载即可
  #!/usr/bin/env python
# vim:fileencoding=utf-8
from __future__ import unicode_literals, division, absolute_import, print_function
from calibre.web.feeds.news import BasicNewsRecipe
class liaoxuefeng_python(BasicNewsRecipe):
'''自定义的Recipe都继承自Calibre提供的基类BasicNewsRecipe,必须实现parse_index()方法
'''
#电子书名称
title = '廖雪峰Python教程3'
description = 'python教程'
max_articles_per_feed = 200
# 设置每隔1s下载一个章节,默认值为0,当网络不好时,可以把这个值调大点
delay = 1
url_prefix = 'http://www.liaoxuefeng.com'
no_stylesheets = True
#抓取每一个页面中保留的tag
keep_only_tags = [{ 'class': 'x-content' }]
#页面中删除的Tag
remove_tags=[{'class':'x-wiki-info'}]
#指定Tag之后的元素都被删除
remove_tags_after=[{'class':'x-wiki-content'}]

def get_title(self, link):
return link.contents[0].strip()

def parse_index(self):
#index_to_soup()由BasicNewsRecipe实现,使用Beautifulsoup抓取一个网址,并获得这个网页内容的soup对象
soup = self.index_to_soup('http://www.liaoxuefeng.com/wik ... %2339;)
# 左侧导航栏
div = soup.find('div', { 'class': 'x-sidebar-left-content' })
# 找到每一个章节的标题和对应的URL,Calibre会下载每一个URL的html,使用上面的类属性进行解析
articles = []
for link in div.findAll('a'):
til = self.get_title(link)
url = self.url_prefix + link['href']
a = { 'title': til, 'url': url }

articles.append(a)
#返回一个列表,这个列表中是多个元组,每个元组是书的一卷('廖雪峰python教程', articles),每一卷中又有多个章节articles
tutorial = [('廖雪峰python教程', articles)]

return tutorial
  参考:使用calibre和python制作电子书---Python和Git教程
  转载于: 查看全部

  抓取网页生成电子书(为什么80%的码农都做不了架构师?(图))
  为什么 80% 的程序员不能成为架构师? >>>
  
  ####Calibre 制作电子书
  Calibre支持用Python语言编写脚本,爬取网页内容生成电子书,默认为mobi格式
  在爬取新闻下拉菜单中选择添加自定义新闻源New Recipe---切换到高级模式,默认提供代码模板,您只需添加自定义网页源即可编写Recipe文件代码抓取新闻,选择自定义来源,下载即可
  #!/usr/bin/env python
# vim:fileencoding=utf-8
from __future__ import unicode_literals, division, absolute_import, print_function
from calibre.web.feeds.news import BasicNewsRecipe
class liaoxuefeng_python(BasicNewsRecipe):
'''自定义的Recipe都继承自Calibre提供的基类BasicNewsRecipe,必须实现parse_index()方法
'''
#电子书名称
title = '廖雪峰Python教程3'
description = 'python教程'
max_articles_per_feed = 200
# 设置每隔1s下载一个章节,默认值为0,当网络不好时,可以把这个值调大点
delay = 1
url_prefix = 'http://www.liaoxuefeng.com'
no_stylesheets = True
#抓取每一个页面中保留的tag
keep_only_tags = [{ 'class': 'x-content' }]
#页面中删除的Tag
remove_tags=[{'class':'x-wiki-info'}]
#指定Tag之后的元素都被删除
remove_tags_after=[{'class':'x-wiki-content'}]

def get_title(self, link):
return link.contents[0].strip()

def parse_index(self):
#index_to_soup()由BasicNewsRecipe实现,使用Beautifulsoup抓取一个网址,并获得这个网页内容的soup对象
soup = self.index_to_soup('http://www.liaoxuefeng.com/wik ... %2339;)
# 左侧导航栏
div = soup.find('div', { 'class': 'x-sidebar-left-content' })
# 找到每一个章节的标题和对应的URL,Calibre会下载每一个URL的html,使用上面的类属性进行解析
articles = []
for link in div.findAll('a'):
til = self.get_title(link)
url = self.url_prefix + link['href']
a = { 'title': til, 'url': url }

articles.append(a)
#返回一个列表,这个列表中是多个元组,每个元组是书的一卷('廖雪峰python教程', articles),每一卷中又有多个章节articles
tutorial = [('廖雪峰python教程', articles)]

return tutorial
  参考:使用calibre和python制作电子书---Python和Git教程
  转载于:

抓取网页生成电子书(廖雪峰的Python教程爬下来做成PDF电子书方便大家离线阅读 )

网站优化优采云 发表了文章 • 0 个评论 • 102 次浏览 • 2022-02-10 16:13 • 来自相关话题

  抓取网页生成电子书(廖雪峰的Python教程爬下来做成PDF电子书方便大家离线阅读
)
  看来写爬虫并不比使用 Python 更合适。Python社区提供的爬虫工具琳琅满目,你可以分分钟写一个爬虫,里面有各种可以直接使用的库。今天,我正在考虑写一个爬虫。,爬取廖雪峰的Python教程,制作成PDF电子书,供大家离线阅读。
  在开始写爬虫之前,我们先分析一下网站1的页面结构。页面左侧是教程目录的大纲,每个URL对应右侧一个文章,右上角是文章的标题,中间是正文部分文章的,body的内容是我们关注的重点,我们要爬取的数据是所有网页的body部分,底部是用户的评论区,评论区对我们来说很重要它没有用,所以可以忽略。
  
  工具准备
  搞清楚网站的基本结构后,就可以开始准备爬虫所依赖的工具包了。request和beautifulsoup是爬虫的两大神器,reuqests用于网络请求,beautifulsoup用于操作html数据。有了这两个穿梭机,工作敏捷,我们不需要像scrapy这样的爬虫框架,有点像小程序杀鸡。另外,既然html文件转换成pdf,就必须有相应的库支持,wkhtmltopdf是一个很好的工具,可以用于多平台html到pdf的转换,pdfkit是wkhtmltopdf的Python包。先安装以下依赖,再安装wkhtmltopdf
  pip install requests
pip install beautifulsoup
pip install pdfkit
  安装 wkhtmltopdf
  Windows平台,直接从wkhtmltopdf 2官网下载稳定版进行安装。安装完成后,将程序的执行路径添加到系统环境的$PATH变量中。否则,如果pdfkit找不到wkhtmltopdf,就会出现“No wkhtmltopdf executable found”的错误。Ubuntu和CentOS可以直接从命令行安装
  $ sudo apt-get install wkhtmltopdf # ubuntu
$ sudo yum intsall wkhtmltopdf # centos
  爬虫实现
  一切准备就绪后,就可以开始编码了,不过最好在写代码之前整理一下思路。该程序的目的是将所有URL对应的html正文部分保存在本地,然后使用pdfkit将这些文件转换成pdf文件。让我们拆分任务。首先将一个URL对应的html body保存到本地,然后找到所有的URL,进行同样的操作。
  使用Chrome浏览器找到页面body部分的标签,按F12找到文字对应的div标签:
  , div 是页面的正文内容。在本地使用请求加载整个页面后,您可以使用 beautifulsoup 操作 HTML dom 元素以提取正文内容。
  
  具体实现代码如下:使用soup.find_all函数找到body标签,然后将body部分的内容保存到a.html文件中。
  def parse_url_to_html(url):
response = requests.get(url)
soup = BeautifulSoup(response.content, "html5lib")
body = soup.find_all(class_="x-wiki-content")[0]
html = str(body)
with open("a.html", 'wb') as f:
f.write(html)
  第二步是解析页面左侧的所有URL。同样的方法,找到左侧的菜单选项卡
  
  具体代码实现逻辑:因为页面上有uk-nav uk-nav-side的两个类属性,真正的目录列表是第二个。获取所有的url,第一步也写了url转html的功能。
  def get_url_list():
"""
获取所有URL目录列表
"""
response = requests.get("http://www.liaoxuefeng.com/wik ... 6quot;)
soup = BeautifulSoup(response.content, "html5lib")
menu_tag = soup.find_all(class_="uk-nav uk-nav-side")[1]
urls = []
for li in menu_tag.find_all("li"):
url = "http://www.liaoxuefeng.com" + li.a.get('href')
urls.append(url)
return urls
  最后一步是将html转换为pdf文件。转换成pdf文件很简单,因为pdfkit封装了所有的逻辑,只需要调用函数pdfkit.from_file
  def save_pdf(htmls):
"""
把所有html文件转换成pdf文件
"""
options = {
'page-size': 'Letter',
'encoding': "UTF-8",
'custom-header': [
('Accept-Encoding', 'gzip')
]
}
pdfkit.from_file(htmls, file_name, options=options)
  执行save_pdf函数,生成电子书pdf文件,效果图为:
  
  总结
  总代码量不到 50 行,但是,等等,上面给出的代码省略了一些细节,比如如何获取 文章 的标题,body 内容的 img 标签使用相对路径,如果如果要在pdf中正常显示图片,需要将相对路径改为绝对路径,并删除保存的html临时文件。这些细节都在github上。
  完整代码可以在 github 上下载。该代码适用于Windows平台的个人测试。欢迎 fork 下载并改进它。GitHub地址3,无法访问GitHub的同学可以使用码云4,关注公众号“程序员微站”并回复可以免费下载阅读《廖雪峰Python教程》电子书PDF文件“PDF”。
  本文首发于公众号“程序员的微站”(id:VTtalk),分享Python干货的温暖内容
  博客地址:
   查看全部

  抓取网页生成电子书(廖雪峰的Python教程爬下来做成PDF电子书方便大家离线阅读
)
  看来写爬虫并不比使用 Python 更合适。Python社区提供的爬虫工具琳琅满目,你可以分分钟写一个爬虫,里面有各种可以直接使用的库。今天,我正在考虑写一个爬虫。,爬取廖雪峰的Python教程,制作成PDF电子书,供大家离线阅读。
  在开始写爬虫之前,我们先分析一下网站1的页面结构。页面左侧是教程目录的大纲,每个URL对应右侧一个文章,右上角是文章的标题,中间是正文部分文章的,body的内容是我们关注的重点,我们要爬取的数据是所有网页的body部分,底部是用户的评论区,评论区对我们来说很重要它没有用,所以可以忽略。
  
  工具准备
  搞清楚网站的基本结构后,就可以开始准备爬虫所依赖的工具包了。request和beautifulsoup是爬虫的两大神器,reuqests用于网络请求,beautifulsoup用于操作html数据。有了这两个穿梭机,工作敏捷,我们不需要像scrapy这样的爬虫框架,有点像小程序杀鸡。另外,既然html文件转换成pdf,就必须有相应的库支持,wkhtmltopdf是一个很好的工具,可以用于多平台html到pdf的转换,pdfkit是wkhtmltopdf的Python包。先安装以下依赖,再安装wkhtmltopdf
  pip install requests
pip install beautifulsoup
pip install pdfkit
  安装 wkhtmltopdf
  Windows平台,直接从wkhtmltopdf 2官网下载稳定版进行安装。安装完成后,将程序的执行路径添加到系统环境的$PATH变量中。否则,如果pdfkit找不到wkhtmltopdf,就会出现“No wkhtmltopdf executable found”的错误。Ubuntu和CentOS可以直接从命令行安装
  $ sudo apt-get install wkhtmltopdf # ubuntu
$ sudo yum intsall wkhtmltopdf # centos
  爬虫实现
  一切准备就绪后,就可以开始编码了,不过最好在写代码之前整理一下思路。该程序的目的是将所有URL对应的html正文部分保存在本地,然后使用pdfkit将这些文件转换成pdf文件。让我们拆分任务。首先将一个URL对应的html body保存到本地,然后找到所有的URL,进行同样的操作。
  使用Chrome浏览器找到页面body部分的标签,按F12找到文字对应的div标签:
  , div 是页面的正文内容。在本地使用请求加载整个页面后,您可以使用 beautifulsoup 操作 HTML dom 元素以提取正文内容。
  
  具体实现代码如下:使用soup.find_all函数找到body标签,然后将body部分的内容保存到a.html文件中。
  def parse_url_to_html(url):
response = requests.get(url)
soup = BeautifulSoup(response.content, "html5lib")
body = soup.find_all(class_="x-wiki-content")[0]
html = str(body)
with open("a.html", 'wb') as f:
f.write(html)
  第二步是解析页面左侧的所有URL。同样的方法,找到左侧的菜单选项卡
  
  具体代码实现逻辑:因为页面上有uk-nav uk-nav-side的两个类属性,真正的目录列表是第二个。获取所有的url,第一步也写了url转html的功能。
  def get_url_list():
"""
获取所有URL目录列表
"""
response = requests.get("http://www.liaoxuefeng.com/wik ... 6quot;)
soup = BeautifulSoup(response.content, "html5lib")
menu_tag = soup.find_all(class_="uk-nav uk-nav-side")[1]
urls = []
for li in menu_tag.find_all("li"):
url = "http://www.liaoxuefeng.com" + li.a.get('href')
urls.append(url)
return urls
  最后一步是将html转换为pdf文件。转换成pdf文件很简单,因为pdfkit封装了所有的逻辑,只需要调用函数pdfkit.from_file
  def save_pdf(htmls):
"""
把所有html文件转换成pdf文件
"""
options = {
'page-size': 'Letter',
'encoding': "UTF-8",
'custom-header': [
('Accept-Encoding', 'gzip')
]
}
pdfkit.from_file(htmls, file_name, options=options)
  执行save_pdf函数,生成电子书pdf文件,效果图为:
  
  总结
  总代码量不到 50 行,但是,等等,上面给出的代码省略了一些细节,比如如何获取 文章 的标题,body 内容的 img 标签使用相对路径,如果如果要在pdf中正常显示图片,需要将相对路径改为绝对路径,并删除保存的html临时文件。这些细节都在github上。
  完整代码可以在 github 上下载。该代码适用于Windows平台的个人测试。欢迎 fork 下载并改进它。GitHub地址3,无法访问GitHub的同学可以使用码云4,关注公众号“程序员微站”并回复可以免费下载阅读《廖雪峰Python教程》电子书PDF文件“PDF”。
  本文首发于公众号“程序员的微站”(id:VTtalk),分享Python干货的温暖内容
  博客地址:
  

抓取网页生成电子书(行行网电子书多线程爬取-撸代码代码非常简单-写在前面 )

网站优化优采云 发表了文章 • 0 个评论 • 86 次浏览 • 2022-02-09 10:07 • 来自相关话题

  抓取网页生成电子书(行行网电子书多线程爬取-撸代码代码非常简单-写在前面
)
  星星网电子书多线程爬取——写在前面
  最近想找几本电子书看,翻了翻,然后找到了一个叫周渡的网站,网站很好,简单清爽,有书很多,而且都是在百度上打开的,网盘可以直接下载,更新速度也还行,就爬了上去。这篇文章可以文章学习,这么好的分享网站,尽量不要爬,会影响别人访问速度。需要数据的可以在我的博客下评论,我会发给你,QQ,邮箱什么的。
  
  
  这个网站页面的逻辑很简单。我翻阅了图书详情页面,它看起来是这样的。我们只需要循环生成这些页面的链接,然后就可以爬取了。为了速度,我使用多线程。, 你可以试试看。如果想爬取后面的数据,就在本博客下方发表评论,不要乱搞别人的服务器。
  11393.html11.html。…
  星星网电子书多线程爬取-代码
  代码非常简单。以我们之前的教程做铺垫,用很少的代码就可以实现完整的功能。最后将采集的内容写入csv文件,(什么是csv,百度知道)这段代码是IO密集型操作,我们使用aiohttp模块来编写。
  步骤1
  连接 URL 并启动线程。
  
  上面的代码可以同步开启N个多线程,但是这样很容易导致其他人的服务器瘫痪。因此,我们必须限制并发数。对于以下代码,请尝试将其放在指定位置。
  
  第2步
  为了处理捕获的 Web 源代码并提取我们想要的元素,我添加了一个使用 lxml 提取数据的方法。
  
  第 3 步
  数据格式化后,将其保存为 csv 文件,然后收工!
  
  星星网电子书多线程爬取——运行代码并查看结果
  
   查看全部

  抓取网页生成电子书(行行网电子书多线程爬取-撸代码代码非常简单-写在前面
)
  星星网电子书多线程爬取——写在前面
  最近想找几本电子书看,翻了翻,然后找到了一个叫周渡的网站,网站很好,简单清爽,有书很多,而且都是在百度上打开的,网盘可以直接下载,更新速度也还行,就爬了上去。这篇文章可以文章学习,这么好的分享网站,尽量不要爬,会影响别人访问速度。需要数据的可以在我的博客下评论,我会发给你,QQ,邮箱什么的。
  
  
  这个网站页面的逻辑很简单。我翻阅了图书详情页面,它看起来是这样的。我们只需要循环生成这些页面的链接,然后就可以爬取了。为了速度,我使用多线程。, 你可以试试看。如果想爬取后面的数据,就在本博客下方发表评论,不要乱搞别人的服务器。
  11393.html11.html。…
  星星网电子书多线程爬取-代码
  代码非常简单。以我们之前的教程做铺垫,用很少的代码就可以实现完整的功能。最后将采集的内容写入csv文件,(什么是csv,百度知道)这段代码是IO密集型操作,我们使用aiohttp模块来编写。
  步骤1
  连接 URL 并启动线程。
  
  上面的代码可以同步开启N个多线程,但是这样很容易导致其他人的服务器瘫痪。因此,我们必须限制并发数。对于以下代码,请尝试将其放在指定位置。
  
  第2步
  为了处理捕获的 Web 源代码并提取我们想要的元素,我添加了一个使用 lxml 提取数据的方法。
  
  第 3 步
  数据格式化后,将其保存为 csv 文件,然后收工!
  
  星星网电子书多线程爬取——运行代码并查看结果
  
  

抓取网页生成电子书(国家数据国家统计数据库全新改版,提供了哪些服务? )

网站优化优采云 发表了文章 • 0 个评论 • 56 次浏览 • 2022-02-09 09:25 • 来自相关话题

  抓取网页生成电子书(国家数据国家统计数据库全新改版,提供了哪些服务?
)
  给大家推荐一些有趣又好用的网站。
  如在线古籍图书馆、全国数据网站、地球大数据共享服务平台、在线街道设计共享平台-Streetmix、在线问卷调查工具-Golden data、开源地图下载-OpenStreetMap、腾讯位置大数据、快速访问Site SU模型-CAD Mapper、上海1949年与2019年对比-历史航拍图、在线词云生成工具-微词云等。
  
  标签系统
  
  规划资源和工具相册页面
  电子书搜索引擎 - Kumo Search
  聚魔搜书是一个电子书搜索引擎,使用这个搜索引擎你可以找到各种格式的电子书,包括mobi、epub、pdf、azw3等。
  网址:
  
  (点击图片进入网站)
  网上古籍图书馆 - 书柜
  Shuge() 是一个免费开放的在线古籍图书馆。致力于开放分享、介绍、推荐珍贵古籍、善本,鼓励文化艺术作品数字化归档。分享内容仅限于公共版权领域的书籍(参考标准伯尔尼公约);最大限度地还原图书的质量和内容;这个计划让大家可以自由自在地享受那些来之不易的书籍。让大家感受人类文明的进步。
  BookGrid出版的书籍以PDF格式为主,带有高清彩色图片。大多数书籍的单页宽度超过1400像素,双页宽度超过2400像素。宋元时期出版书籍,明清珍本至现代版。
  网址:
  
  (点击图片进入网站)
  国家数据
  新版国家统计数据库提供以下服务:
  网址:
  
  (点击图片进入网站)
  地球大数据共享服务平台
  中科院发布的“地球大数据科学工程”A类战略性先导科技项目——地球大数据共享服务平台2018年度成果。
  地球大数据共享服务平台是一个整合多领域海量数据,服务于数据驱动的科学发现和决策支持的科学平台。该平台以共享的方式为全球用户提供具有全球唯一标识的系统化、多样化、动态化、连续化、标准化的地球大数据。目前共享数据总量约5PB,包括地球观测数据1.8PB、生物生态数据2.6PB、大气海洋数据0.4PB、基础地理数据和地面观测数据0.2PB;地层和古生物数据库有49万条数据记录,360万种中国生物物种目录,42万条微生物资源库,10亿组学数据目前在线。现在,用户可以在线检索 40% 的数据。随着硬件条件的不断提升,平台数据将陆续上线,每年更新3PB的数据量。
  数据共享服务系统网址:
  
  (点击图片进入网站)
  在线问卷调查工具 - Gold Data
  这是一款在线表单工具,直接在浏览器中搜索即可找到,可以大大提高我们日常工作的效率。相信做新媒体运营的小伙伴一定会遇到一些活动报名、问卷调查、反馈等问题。让我们谈谈最常见的事件注册案例之一。
  网址:
  
  (点击图片进入网站)
  在线街道设计分享平台-Streetmix
  Streetmix 是一个免费的在线街道设计分享平台,提供基本街道设计元素和拖放功能作为基本街道设计模板,允许用户选择道路宽度并添加或删除所有街道元素,从轻轨到公路标志,并提供了多项调整功能来满足用户的需求,其扁平化的风格也会让人爱不释手。
  
  (点击图片进入网站)
  日地图
  国家地理信息公共服务平台“天图”(以下简称“天图”)是国家基础地理信息中心建设的网络化地理信息共享和服务门户。信息部门以及相关政府部门、企事业单位、社会团体、公共地理信息公共服务资源,为各类用户提供权威、规范、统一的在线地理信息综合服务。
  网址:
  
  (点击图片进入网站)
  开源地图下载 - OpenStreetMap
  开源地图——openstreetmap,简称OSM。它收录的图层包括公路、铁路、水系、水域、建筑物、边界、建筑物和其他图层。我们不仅可以免费下载城市数据,还可以下载全球数据。
  OSM提供四种主题地图,分别对应标准地图、自行车地图、交通地图和人道主义地图,您可以根据需要选择相应的主题地图。
  OSM主要提供四种下载方式:Simple、Overpass API、OSM Planet和Geofabrik下载。
  
  (点击图片进入网站)
  腾讯位置大数据
  腾讯位置大数据官网包括区域人气、位置流量、人口迁移、市政应急与决策、商铺建设、个人出行、位置大数据应用等。
  网址:
  
  (点击图片进入网站)
  百度地图眼
  百度地图以海量时空大数据为基础,结合人工智能技术,为不同行业提供从宏观到微观的人、地、物的人口挖掘、客群分析、旅游研究、位置评估等研究。已深入应用于城市规划、人口统计、政府、零售餐饮、广告、文化旅游、高校智库、公安应急等行业。
  网址:
  
  (点击图片进入网站)
  快速获取站点SU模型-CAD Mapper
  这个网站可以在线生成站点模型,可下载的格式包括CAD、SU、RHINO。
  
  (点击图片进入网站)
  1949年与2019年的上海对比——历史航拍
  网站可以看到1949年到2019年、1979年到2019年的上海航拍图对比。
  网址:
  
  (点击图片进入网站)
  在线多媒体转换工具 - CloudConvert
  CloudConvert 是另一个强大的在线多媒体转换工具。
  支持215种文件的转换,音频、视频、文档、电子书、压缩包、图片、PPT、网页等。反正就这么多,你自己查吧。
  只需选择本地文件(或指定网盘),然后选择要转换的文件,即可转换。效率君实际测试了一下,速度很快。
  它还有一个非常黑科技的功能。您可以选择一个网盘来指定一个文件夹。添加新文件时,它可以自动转换。没有黑科技,真正解放了生产力。(但它似乎只适用于付费用户)
  它还有一个 Chrome 插件和一个 iOS 应用程序。
  网址:
  
  (点击图片进入网站)
  在线词云生成器 - 微词云
  Mini Tag Cloud 是一个非常实用的应用程序。简单的在线词云生成工具,无论你是设计师、操作员、学生还是数据分析师,都可以轻松制作出吸睛的词云图。
  网址:
  
  (点击图片进入网站)
  网页介绍:登录,在首页查看相册内容
  或点击网址直接进入网页相册页面
   查看全部

  抓取网页生成电子书(国家数据国家统计数据库全新改版,提供了哪些服务?
)
  给大家推荐一些有趣又好用的网站。
  如在线古籍图书馆、全国数据网站、地球大数据共享服务平台、在线街道设计共享平台-Streetmix、在线问卷调查工具-Golden data、开源地图下载-OpenStreetMap、腾讯位置大数据、快速访问Site SU模型-CAD Mapper、上海1949年与2019年对比-历史航拍图、在线词云生成工具-微词云等。
  
  标签系统
  
  规划资源和工具相册页面
  电子书搜索引擎 - Kumo Search
  聚魔搜书是一个电子书搜索引擎,使用这个搜索引擎你可以找到各种格式的电子书,包括mobi、epub、pdf、azw3等。
  网址:
  
  (点击图片进入网站)
  网上古籍图书馆 - 书柜
  Shuge() 是一个免费开放的在线古籍图书馆。致力于开放分享、介绍、推荐珍贵古籍、善本,鼓励文化艺术作品数字化归档。分享内容仅限于公共版权领域的书籍(参考标准伯尔尼公约);最大限度地还原图书的质量和内容;这个计划让大家可以自由自在地享受那些来之不易的书籍。让大家感受人类文明的进步。
  BookGrid出版的书籍以PDF格式为主,带有高清彩色图片。大多数书籍的单页宽度超过1400像素,双页宽度超过2400像素。宋元时期出版书籍,明清珍本至现代版。
  网址:
  
  (点击图片进入网站)
  国家数据
  新版国家统计数据库提供以下服务:
  网址:
  
  (点击图片进入网站)
  地球大数据共享服务平台
  中科院发布的“地球大数据科学工程”A类战略性先导科技项目——地球大数据共享服务平台2018年度成果。
  地球大数据共享服务平台是一个整合多领域海量数据,服务于数据驱动的科学发现和决策支持的科学平台。该平台以共享的方式为全球用户提供具有全球唯一标识的系统化、多样化、动态化、连续化、标准化的地球大数据。目前共享数据总量约5PB,包括地球观测数据1.8PB、生物生态数据2.6PB、大气海洋数据0.4PB、基础地理数据和地面观测数据0.2PB;地层和古生物数据库有49万条数据记录,360万种中国生物物种目录,42万条微生物资源库,10亿组学数据目前在线。现在,用户可以在线检索 40% 的数据。随着硬件条件的不断提升,平台数据将陆续上线,每年更新3PB的数据量。
  数据共享服务系统网址:
  
  (点击图片进入网站)
  在线问卷调查工具 - Gold Data
  这是一款在线表单工具,直接在浏览器中搜索即可找到,可以大大提高我们日常工作的效率。相信做新媒体运营的小伙伴一定会遇到一些活动报名、问卷调查、反馈等问题。让我们谈谈最常见的事件注册案例之一。
  网址:
  
  (点击图片进入网站)
  在线街道设计分享平台-Streetmix
  Streetmix 是一个免费的在线街道设计分享平台,提供基本街道设计元素和拖放功能作为基本街道设计模板,允许用户选择道路宽度并添加或删除所有街道元素,从轻轨到公路标志,并提供了多项调整功能来满足用户的需求,其扁平化的风格也会让人爱不释手。
  
  (点击图片进入网站)
  日地图
  国家地理信息公共服务平台“天图”(以下简称“天图”)是国家基础地理信息中心建设的网络化地理信息共享和服务门户。信息部门以及相关政府部门、企事业单位、社会团体、公共地理信息公共服务资源,为各类用户提供权威、规范、统一的在线地理信息综合服务。
  网址:
  
  (点击图片进入网站)
  开源地图下载 - OpenStreetMap
  开源地图——openstreetmap,简称OSM。它收录的图层包括公路、铁路、水系、水域、建筑物、边界、建筑物和其他图层。我们不仅可以免费下载城市数据,还可以下载全球数据。
  OSM提供四种主题地图,分别对应标准地图、自行车地图、交通地图和人道主义地图,您可以根据需要选择相应的主题地图。
  OSM主要提供四种下载方式:Simple、Overpass API、OSM Planet和Geofabrik下载。
  
  (点击图片进入网站)
  腾讯位置大数据
  腾讯位置大数据官网包括区域人气、位置流量、人口迁移、市政应急与决策、商铺建设、个人出行、位置大数据应用等。
  网址:
  
  (点击图片进入网站)
  百度地图眼
  百度地图以海量时空大数据为基础,结合人工智能技术,为不同行业提供从宏观到微观的人、地、物的人口挖掘、客群分析、旅游研究、位置评估等研究。已深入应用于城市规划、人口统计、政府、零售餐饮、广告、文化旅游、高校智库、公安应急等行业。
  网址:
  
  (点击图片进入网站)
  快速获取站点SU模型-CAD Mapper
  这个网站可以在线生成站点模型,可下载的格式包括CAD、SU、RHINO。
  
  (点击图片进入网站)
  1949年与2019年的上海对比——历史航拍
  网站可以看到1949年到2019年、1979年到2019年的上海航拍图对比。
  网址:
  
  (点击图片进入网站)
  在线多媒体转换工具 - CloudConvert
  CloudConvert 是另一个强大的在线多媒体转换工具。
  支持215种文件的转换,音频、视频、文档、电子书、压缩包、图片、PPT、网页等。反正就这么多,你自己查吧。
  只需选择本地文件(或指定网盘),然后选择要转换的文件,即可转换。效率君实际测试了一下,速度很快。
  它还有一个非常黑科技的功能。您可以选择一个网盘来指定一个文件夹。添加新文件时,它可以自动转换。没有黑科技,真正解放了生产力。(但它似乎只适用于付费用户)
  它还有一个 Chrome 插件和一个 iOS 应用程序。
  网址:
  
  (点击图片进入网站)
  在线词云生成器 - 微词云
  Mini Tag Cloud 是一个非常实用的应用程序。简单的在线词云生成工具,无论你是设计师、操作员、学生还是数据分析师,都可以轻松制作出吸睛的词云图。
  网址:
  
  (点击图片进入网站)
  网页介绍:登录,在首页查看相册内容
  或点击网址直接进入网页相册页面
  

抓取网页生成电子书(行行网电子书多线程爬取-撸代码代码非常简单(图) )

网站优化优采云 发表了文章 • 0 个评论 • 55 次浏览 • 2022-02-09 09:23 • 来自相关话题

  抓取网页生成电子书(行行网电子书多线程爬取-撸代码代码非常简单(图)
)
  最近想找几本电子书看,翻了翻,然后找到了一个叫周渡的网站,网站很好,简单清爽,有书很多,而且都是在百度上打开的,网盘可以直接下载,更新速度也还行,就爬了上去。这篇文章可以文章学习,这么好的分享网站,尽量不要爬,会影响别人访问速度。需要数据的可以在我的博客下评论,我会发给你,QQ,邮箱什么的。
  
  
  这个网站页面的逻辑很简单。我翻阅了图书详情页面,它看起来是这样的。我们只需要循环生成这些页面的链接,然后就可以爬取了。为了速度,我使用多线程。, 你可以试试看。如果想爬取后面的数据,就在本博客下方发表评论,不要乱搞别人的服务器。
  http://www.ireadweek.com/index ... .html
http://www.ireadweek.com/index ... .html
....
  星星网电子书多线程爬取-代码
  代码非常简单。以我们之前的教程做铺垫,用很少的代码就可以实现完整的功能。最后将采集的内容写入csv文件,(什么是csv,百度知道)这段代码是IO密集型操作,我们使用aiohttp模块来编写。
  步骤1
  连接 URL 并启动线程。
  import requests
# 导入协程模块
import asyncio
import aiohttp
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36",
"Host": "www.ireadweek.com",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8"}
async def get_content(url):
print("正在操作:{}".format(url))
# 创建一个session 去获取数据
async with aiohttp.ClientSession() as session:
async with session.get(url,headers=headers,timeout=3) as res:
if res.status == 200:
source = await res.text() # 等待获取文本
print(source)
if __name__ == '__main__':
url_format = "http://www.ireadweek.com/index.php/bookInfo/{}.html"
full_urllist = [url_format.format(i) for i in range(1,11394)] # 11394
loop = asyncio.get_event_loop()
tasks = [get_content(url) for url in full_urllist]
results = loop.run_until_complete(asyncio.wait(tasks))
  上面的代码可以同步开启N个多线程,但是这样很容易导致其他人的服务器瘫痪。因此,我们必须限制并发数。对于以下代码,请尝试将其放在指定位置。
  第2步
  为了处理捕获的 Web 源代码并提取我们想要的元素,我添加了一个使用 lxml 提取数据的方法。
  def async_content(tree):
title = tree.xpath("//div[@class='hanghang-za-title']")[0].text
# 如果页面没有信息,直接返回即可
if title == '':
return
else:
try:
description = tree.xpath("//div[@class='hanghang-shu-content-font']")
author = description[0].xpath("p[1]/text()")[0].replace("作者:","") if description[0].xpath("p[1]/text()")[0] is not None else None
cate = description[0].xpath("p[2]/text()")[0].replace("分类:","") if description[0].xpath("p[2]/text()")[0] is not None else None
douban = description[0].xpath("p[3]/text()")[0].replace("豆瓣评分:","") if description[0].xpath("p[3]/text()")[0] is not None else None
# 这部分内容不明确,不做记录
#des = description[0].xpath("p[5]/text()")[0] if description[0].xpath("p[5]/text()")[0] is not None else None
download = tree.xpath("//a[@class='downloads']")
except Exception as e:
print(title)
return
ls = [
title,author,cate,douban,download[0].get('href')
]
return ls
  第 3 步
  数据格式化后,将其保存为 csv 文件,然后收工!
   print(data)
with open('hang.csv', 'a+', encoding='utf-8') as fw:
writer = csv.writer(fw)
writer.writerow(data)
print("插入成功!")
Python资源分享qun 784758214 ,内有安装包,PDF,学习视频,这里是Python学习者的聚集地,零基础,进阶,都欢迎
  星星网电子书多线程爬取——运行代码并查看结果
   查看全部

  抓取网页生成电子书(行行网电子书多线程爬取-撸代码代码非常简单(图)
)
  最近想找几本电子书看,翻了翻,然后找到了一个叫周渡的网站,网站很好,简单清爽,有书很多,而且都是在百度上打开的,网盘可以直接下载,更新速度也还行,就爬了上去。这篇文章可以文章学习,这么好的分享网站,尽量不要爬,会影响别人访问速度。需要数据的可以在我的博客下评论,我会发给你,QQ,邮箱什么的。
  
  
  这个网站页面的逻辑很简单。我翻阅了图书详情页面,它看起来是这样的。我们只需要循环生成这些页面的链接,然后就可以爬取了。为了速度,我使用多线程。, 你可以试试看。如果想爬取后面的数据,就在本博客下方发表评论,不要乱搞别人的服务器。
  http://www.ireadweek.com/index ... .html
http://www.ireadweek.com/index ... .html
....
  星星网电子书多线程爬取-代码
  代码非常简单。以我们之前的教程做铺垫,用很少的代码就可以实现完整的功能。最后将采集的内容写入csv文件,(什么是csv,百度知道)这段代码是IO密集型操作,我们使用aiohttp模块来编写。
  步骤1
  连接 URL 并启动线程。
  import requests
# 导入协程模块
import asyncio
import aiohttp
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36",
"Host": "www.ireadweek.com",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8"}
async def get_content(url):
print("正在操作:{}".format(url))
# 创建一个session 去获取数据
async with aiohttp.ClientSession() as session:
async with session.get(url,headers=headers,timeout=3) as res:
if res.status == 200:
source = await res.text() # 等待获取文本
print(source)
if __name__ == '__main__':
url_format = "http://www.ireadweek.com/index.php/bookInfo/{}.html"
full_urllist = [url_format.format(i) for i in range(1,11394)] # 11394
loop = asyncio.get_event_loop()
tasks = [get_content(url) for url in full_urllist]
results = loop.run_until_complete(asyncio.wait(tasks))
  上面的代码可以同步开启N个多线程,但是这样很容易导致其他人的服务器瘫痪。因此,我们必须限制并发数。对于以下代码,请尝试将其放在指定位置。
  第2步
  为了处理捕获的 Web 源代码并提取我们想要的元素,我添加了一个使用 lxml 提取数据的方法。
  def async_content(tree):
title = tree.xpath("//div[@class='hanghang-za-title']")[0].text
# 如果页面没有信息,直接返回即可
if title == '':
return
else:
try:
description = tree.xpath("//div[@class='hanghang-shu-content-font']")
author = description[0].xpath("p[1]/text()")[0].replace("作者:","") if description[0].xpath("p[1]/text()")[0] is not None else None
cate = description[0].xpath("p[2]/text()")[0].replace("分类:","") if description[0].xpath("p[2]/text()")[0] is not None else None
douban = description[0].xpath("p[3]/text()")[0].replace("豆瓣评分:","") if description[0].xpath("p[3]/text()")[0] is not None else None
# 这部分内容不明确,不做记录
#des = description[0].xpath("p[5]/text()")[0] if description[0].xpath("p[5]/text()")[0] is not None else None
download = tree.xpath("//a[@class='downloads']")
except Exception as e:
print(title)
return
ls = [
title,author,cate,douban,download[0].get('href')
]
return ls
  第 3 步
  数据格式化后,将其保存为 csv 文件,然后收工!
   print(data)
with open('hang.csv', 'a+', encoding='utf-8') as fw:
writer = csv.writer(fw)
writer.writerow(data)
print("插入成功!")
Python资源分享qun 784758214 ,内有安装包,PDF,学习视频,这里是Python学习者的聚集地,零基础,进阶,都欢迎
  星星网电子书多线程爬取——运行代码并查看结果
  

抓取网页生成电子书(《网络书籍抓取器》软件特色特色介绍-上海怡健医学 )

网站优化优采云 发表了文章 • 0 个评论 • 87 次浏览 • 2022-02-07 03:04 • 来自相关话题

  抓取网页生成电子书(《网络书籍抓取器》软件特色特色介绍-上海怡健医学
)
  网络图书抓取器主要用于抓取网络小说生成文本文件。它可以提取指定小说目录页面的章节信息并进行调整,然后按照章节顺序抓取小说内容,然后将它们合并在一起。爬取过程可以随时中断,关闭程序后可以恢复上一个任务。
  
  网络图书抓取软件的特点
  1、章节调整:提取目录后,可以进行移动、删除、反转等调整操作。调整将直接影响调整后的章节顺序中的最终书籍和输出。
  2、自动重试:爬取过程中,可能由于网络因素导致爬取失败。这个程序可能会自动重试直到成功,或者暂时中断爬取(中断后关闭程序不会影响进度),等网络好了再试。
  3、停止和恢复:捕捉过程可以随时停止,退出程序后不影响进度(章节信息会保存在记录中,程序结束后可以恢复捕捉下次运行。注意:需要先用停止键中断,然后退出程序,如果直接退出,将无法恢复)。
  4、一键抓取:又称“傻瓜模式”,基本可以实现全自动抓取合并功能,直接输出最终的文本文件。前面可能需要输入最基本的URL、save bit等信息(会有明显的操作提示),调整章节后也可以使用一键爬取,爬取和合并操作会自动完成。
  5、适用网站:已输入10个适用网站(选择后可快速打开网站找到想要的书),以及相应的代码也可以自动应用,其他小说网站也可以测试,如果一起使用,可以手动添加到设置文件中备份。
  6、轻松制作电子书:可以在设置文件中添加每章名称的前缀和后缀,为后期制作电子书的编目带来极大的方便。
   查看全部

  抓取网页生成电子书(《网络书籍抓取器》软件特色特色介绍-上海怡健医学
)
  网络图书抓取器主要用于抓取网络小说生成文本文件。它可以提取指定小说目录页面的章节信息并进行调整,然后按照章节顺序抓取小说内容,然后将它们合并在一起。爬取过程可以随时中断,关闭程序后可以恢复上一个任务。
  
  网络图书抓取软件的特点
  1、章节调整:提取目录后,可以进行移动、删除、反转等调整操作。调整将直接影响调整后的章节顺序中的最终书籍和输出。
  2、自动重试:爬取过程中,可能由于网络因素导致爬取失败。这个程序可能会自动重试直到成功,或者暂时中断爬取(中断后关闭程序不会影响进度),等网络好了再试。
  3、停止和恢复:捕捉过程可以随时停止,退出程序后不影响进度(章节信息会保存在记录中,程序结束后可以恢复捕捉下次运行。注意:需要先用停止键中断,然后退出程序,如果直接退出,将无法恢复)。
  4、一键抓取:又称“傻瓜模式”,基本可以实现全自动抓取合并功能,直接输出最终的文本文件。前面可能需要输入最基本的URL、save bit等信息(会有明显的操作提示),调整章节后也可以使用一键爬取,爬取和合并操作会自动完成。
  5、适用网站:已输入10个适用网站(选择后可快速打开网站找到想要的书),以及相应的代码也可以自动应用,其他小说网站也可以测试,如果一起使用,可以手动添加到设置文件中备份。
  6、轻松制作电子书:可以在设置文件中添加每章名称的前缀和后缀,为后期制作电子书的编目带来极大的方便。
  

抓取网页生成电子书(《修真小主播》使用Scrapy抓取电子书爬虫思路怎么抓取数据 )

网站优化优采云 发表了文章 • 0 个评论 • 102 次浏览 • 2022-02-05 17:04 • 来自相关话题

  抓取网页生成电子书(《修真小主播》使用Scrapy抓取电子书爬虫思路怎么抓取数据
)
  使用 Scrapy 抓取电子书
  爬行动物的想法
  如何抓取数据,首先我们需要看看从哪里获取数据,打开“小耕主播”的页面,如下:
  
  有一个目录选项卡,单击此选项卡可以查看目录。使用浏览器的元素查看工具,我们可以找到每章的目录和相关信息。根据这些信息,我们可以爬取到特定页面:
  
  获取章节地址
  现在我们打开 xzxzb.py 文件,也就是我们刚刚创建的爬虫:
  # -*- coding: utf-8 -*-
import scrapy
'''
更多Python学习资料以及源码教程资料,可以在群1136201545免费获取
'''
class XzxzbSpider(scrapy.Spider):
name = 'xzxzb'
allowed_domains = ['qidian.com']
start_urls = ['http://qidian.com/']
def parse(self, response):
pass
  start_urls 是目录地址,爬虫会自动爬取这个地址,然后在后面的解析中处理结果。现在让我们编写处理目录数据的代码,首先爬取小说首页获取目录列表:
   def parse(self, response):
pages = response.xpath('//div[@id="j-catalogWrap"]//ul[@class="cf"]/li')
for page in pages:
url = page.xpath('./child::a/attribute::href').extract()
print url
pass
  在网页中获取 DOM 数据有两种方式,一种是使用 CSS 选择器,另一种是使用 XML 的 xPath 查询。
  这里我们使用xPath,相关知识请自行学习,看上面代码,首先我们通过ID获取目录框,获取类cf获取目录列表:
  pages = response.xpath('//div[@id="j-catalogWrap"]//ul[@class="cf"]/li')
  接下来遍历子节点,查询li标签中a子节点的href属性,最后打印出来:
  for page in pages:
url = page.xpath('./child::a/attribute::href').extract()
print url
  这样,可以说爬取章节路径的小爬虫已经写好了。使用以下命令运行xzxzb爬虫查看结果:
  scrapy crawl xzxzb
  这时候我们的程序可能会出现如下错误:
  …
ImportError: No module named win32api

  只需运行以下语句:
  pip install pypiwin32
  屏幕输出如下:
  > ...
> [u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/wrrduN6auIlOBDFlr9quQA2']
[u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/Jh-J5usgyW62uJcMpdsVgA2']
[u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/5YXHdBvg1ImaGfXRMrUjdw2']
[u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/fw5EBeKat-76ItTi_ILQ7A2']
[u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/KsFh5VutI6PwrjbX3WA1AA2']
[u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/-mpKJ01gPp1p4rPq4Fd4KQ2']
[u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/MlZSeYOQxSPM5j8_3RRvhw2']
[u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/5TXZqGvLi-3M5j8_3RRvhw2']
[u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/sysD-JPiugv4p8iEw--PPw2']
[u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/xGckZ01j64-aGfXRMrUjdw2']
[u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/72lHOJcgmedOBDFlr9quQA2']
[u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/cZkHZEYnPl22uJcMpdsVgA2']
[u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/vkNh45O3JsRMs5iq0oQwLQ2']
[u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/ge4m8RjJyPH6ItTi_ILQ7A2']
[u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/Y33PuxrKT4dp4rPq4Fd4KQ2']
[u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/MDQznkrkiyXwrjbX3WA1AA2']
[u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/A2r-YTzWCYj6ItTi_ILQ7A2']
[u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/Ng9CuONRKei2uJcMpdsVgA2']
[u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/Q_AxWAge14pMs5iq0oQwLQ2']
[u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/ZJshvAu8TVVp4rPq4Fd4KQ2']
[u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/hYD2P4c5UB2aGfXRMrUjdw2']
[u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/muxiWf_jpqTgn4SMoDUcDQ2']
[u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/OQQ5jbADJjVp4rPq4Fd4KQ2']
> ...
  爬章节路径的小爬虫写了,但是我们的目的不仅如此,我们会使用这些地址来爬取内容:
  章节页面分析
  接下来我们分析章节页面,我们要从中获取标题和内容。
  如果说用于章节信息爬取的parser方法,那么我们可以写一个爬取每个章节内容的方法,比如:parser_chapter,先看章节页面的具体情况:
  
  可以看到,章节的全部内容在类名main-text-wrap的div标签中,标题是类名j_chapterName的h3标签,具体内容是类名的div标签读取内容 j_readContent。
  尝试打印出来:
  # -*- coding: utf-8 -*-
import scrapy
class XzxzbSpider(scrapy.Spider):
name = 'xzxzb'
allowed_domains = ['qidian.com']
start_urls = ['https://book.qidian.com/info/1010780117/']
def parse(self, response):
pages = response.xpath('//div[@id="j-catalogWrap"]//ul[@class="cf"]/li')
for page in pages:
url = page.xpath('./child::a/attribute::href').extract_first()
# yield scrapy.Request('https:' + url, callback=self.parse_chapter)
yield response.follow(url, callback=self.parse_chapter)
pass
def parse_chapter(self, response):
title = response.xpath('//div[@class="main-text-wrap"]//h3[@class="j_chapterName"]/text()').extract_first().strip()
content = response.xpath('//div[@class="main-text-wrap"]//div[@class="read-content j_readContent"]').extract_first().strip()
print title
# print content
pass
  上一步我们得到了一个章节地址,这是从输出内容的相对路径,所以我们使用了yield response.follow(url, callback=self.parse_chapter),第二个参数是一个回调函数来处理章节页面,爬取到章节页面后,我们解析页面并将标题保存到文件中。
  next_page = response.urljoin(url)
yield scrapy.Request(next_page, callback=self.parse_chapter)
  与使用 response.follow 不同,scrapy.Request 需要通过相对路径来构造绝对路径。Response.follow 可以直接使用相对路径,所以不需要调用 urljoin 方法。
  注意response.follow直接返回一个Request实例,可以直接通过yield返回。
  获取数据后,将其存储。由于我们想要一个 html 页面,我们可以按标题存储它。代码如下:
   def parse_chapter(self, response):
title = response.xpath('//div[@class="main-text-wrap"]//h3[@class="j_chapterName"]/text()').extract_first().strip()
content = response.xpath('//div[@class="main-text-wrap"]//div[@class="read-content j_readContent"]').extract_first().strip()
# print title
# print content
filename = './down/%s.html' % (title)
with open(filename, 'wb') as f:
f.write(content.encode('utf-8'))
pass
  到目前为止,我们已经成功捕获到我们的数据,但是它不能直接使用,需要进行排序和优化。
  数据管理
  首先,我们爬取的章节页面的排序不是很好,手动排列太费时间精力;另外,章节内容收录很多多余的东西,阅读体验不好,需要优化内容的排版和可读性。
  我们先对章节进行排序,因为目录中的章节列表是按顺序排列的,所以只需在下载页面名称中加上序号即可。
  但是保存网页的代码是一个回调函数,只有在处理目录时才能确定顺序。回调函数怎么知道顺序?因此,我们需要告诉回调函数它处理章节的序号,并且我们需要向回调函数传递参数。修改后的代码如下:
  '''
更多Python学习资料以及源码教程资料,可以在群1136201545免费获取
'''
def parse(self, response):
pages = response.xpath('//div[@id="j-catalogWrap"]//ul[@class="cf"]/li')
for page in pages:
url = page.xpath('./child::a/attribute::href').extract_first()
idx = page.xpath('./attribute::data-rid').extract_first()
# yield scrapy.Request('https:' + url, callback=self.parse_chapter)
req = response.follow(url, callback=self.parse_chapter)
req.meta['idx'] = idx
yield req
pass
def parse_chapter(self, response):
idx = response.meta['idx']
title = response.xpath('//div[@class="main-text-wrap"]//h3[@class="j_chapterName"]/text()').extract_first().strip()
content = response.xpath('//div[@class="main-text-wrap"]//div[@class="read-content j_readContent"]').extract_first().strip()
# print title
# print content
filename = './down/%s_%s.html' % (idx, title)
cnt = '%s %s' % (title, content)
with open(filename, 'wb') as f:
f.write(cnt.encode('utf-8'))
pass
  使用 Sigil 创建电子书
  加载html文件
  要制作 ePub 电子书,我们首先通过 Sigil 将抓取的文件加载到程序中,然后在“添加文件”对话框中选择所有文件:
  
  制作目录
  当文件中存在 HTML h 标签时,单击 Generate Directory 按钮自动生成目录。我们在之前的数据捕获中自动添加了 h1 标签:
  
  做一个封面
  
  封面本质上是HTML,可以编辑或者从页面爬取,所以我留给你自己实现。
   查看全部

  抓取网页生成电子书(《修真小主播》使用Scrapy抓取电子书爬虫思路怎么抓取数据
)
  使用 Scrapy 抓取电子书
  爬行动物的想法
  如何抓取数据,首先我们需要看看从哪里获取数据,打开“小耕主播”的页面,如下:
  
  有一个目录选项卡,单击此选项卡可以查看目录。使用浏览器的元素查看工具,我们可以找到每章的目录和相关信息。根据这些信息,我们可以爬取到特定页面:
  
  获取章节地址
  现在我们打开 xzxzb.py 文件,也就是我们刚刚创建的爬虫:
  # -*- coding: utf-8 -*-
import scrapy
'''
更多Python学习资料以及源码教程资料,可以在群1136201545免费获取
'''
class XzxzbSpider(scrapy.Spider):
name = 'xzxzb'
allowed_domains = ['qidian.com']
start_urls = ['http://qidian.com/']
def parse(self, response):
pass
  start_urls 是目录地址,爬虫会自动爬取这个地址,然后在后面的解析中处理结果。现在让我们编写处理目录数据的代码,首先爬取小说首页获取目录列表:
   def parse(self, response):
pages = response.xpath('//div[@id="j-catalogWrap"]//ul[@class="cf"]/li')
for page in pages:
url = page.xpath('./child::a/attribute::href').extract()
print url
pass
  在网页中获取 DOM 数据有两种方式,一种是使用 CSS 选择器,另一种是使用 XML 的 xPath 查询。
  这里我们使用xPath,相关知识请自行学习,看上面代码,首先我们通过ID获取目录框,获取类cf获取目录列表:
  pages = response.xpath('//div[@id="j-catalogWrap"]//ul[@class="cf"]/li')
  接下来遍历子节点,查询li标签中a子节点的href属性,最后打印出来:
  for page in pages:
url = page.xpath('./child::a/attribute::href').extract()
print url
  这样,可以说爬取章节路径的小爬虫已经写好了。使用以下命令运行xzxzb爬虫查看结果:
  scrapy crawl xzxzb
  这时候我们的程序可能会出现如下错误:
  …
ImportError: No module named win32api

  只需运行以下语句:
  pip install pypiwin32
  屏幕输出如下:
  > ...
> [u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/wrrduN6auIlOBDFlr9quQA2']
[u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/Jh-J5usgyW62uJcMpdsVgA2']
[u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/5YXHdBvg1ImaGfXRMrUjdw2']
[u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/fw5EBeKat-76ItTi_ILQ7A2']
[u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/KsFh5VutI6PwrjbX3WA1AA2']
[u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/-mpKJ01gPp1p4rPq4Fd4KQ2']
[u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/MlZSeYOQxSPM5j8_3RRvhw2']
[u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/5TXZqGvLi-3M5j8_3RRvhw2']
[u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/sysD-JPiugv4p8iEw--PPw2']
[u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/xGckZ01j64-aGfXRMrUjdw2']
[u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/72lHOJcgmedOBDFlr9quQA2']
[u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/cZkHZEYnPl22uJcMpdsVgA2']
[u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/vkNh45O3JsRMs5iq0oQwLQ2']
[u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/ge4m8RjJyPH6ItTi_ILQ7A2']
[u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/Y33PuxrKT4dp4rPq4Fd4KQ2']
[u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/MDQznkrkiyXwrjbX3WA1AA2']
[u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/A2r-YTzWCYj6ItTi_ILQ7A2']
[u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/Ng9CuONRKei2uJcMpdsVgA2']
[u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/Q_AxWAge14pMs5iq0oQwLQ2']
[u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/ZJshvAu8TVVp4rPq4Fd4KQ2']
[u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/hYD2P4c5UB2aGfXRMrUjdw2']
[u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/muxiWf_jpqTgn4SMoDUcDQ2']
[u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/OQQ5jbADJjVp4rPq4Fd4KQ2']
> ...
  爬章节路径的小爬虫写了,但是我们的目的不仅如此,我们会使用这些地址来爬取内容:
  章节页面分析
  接下来我们分析章节页面,我们要从中获取标题和内容。
  如果说用于章节信息爬取的parser方法,那么我们可以写一个爬取每个章节内容的方法,比如:parser_chapter,先看章节页面的具体情况:
  
  可以看到,章节的全部内容在类名main-text-wrap的div标签中,标题是类名j_chapterName的h3标签,具体内容是类名的div标签读取内容 j_readContent。
  尝试打印出来:
  # -*- coding: utf-8 -*-
import scrapy
class XzxzbSpider(scrapy.Spider):
name = 'xzxzb'
allowed_domains = ['qidian.com']
start_urls = ['https://book.qidian.com/info/1010780117/']
def parse(self, response):
pages = response.xpath('//div[@id="j-catalogWrap"]//ul[@class="cf"]/li')
for page in pages:
url = page.xpath('./child::a/attribute::href').extract_first()
# yield scrapy.Request('https:' + url, callback=self.parse_chapter)
yield response.follow(url, callback=self.parse_chapter)
pass
def parse_chapter(self, response):
title = response.xpath('//div[@class="main-text-wrap"]//h3[@class="j_chapterName"]/text()').extract_first().strip()
content = response.xpath('//div[@class="main-text-wrap"]//div[@class="read-content j_readContent"]').extract_first().strip()
print title
# print content
pass
  上一步我们得到了一个章节地址,这是从输出内容的相对路径,所以我们使用了yield response.follow(url, callback=self.parse_chapter),第二个参数是一个回调函数来处理章节页面,爬取到章节页面后,我们解析页面并将标题保存到文件中。
  next_page = response.urljoin(url)
yield scrapy.Request(next_page, callback=self.parse_chapter)
  与使用 response.follow 不同,scrapy.Request 需要通过相对路径来构造绝对路径。Response.follow 可以直接使用相对路径,所以不需要调用 urljoin 方法。
  注意response.follow直接返回一个Request实例,可以直接通过yield返回。
  获取数据后,将其存储。由于我们想要一个 html 页面,我们可以按标题存储它。代码如下:
   def parse_chapter(self, response):
title = response.xpath('//div[@class="main-text-wrap"]//h3[@class="j_chapterName"]/text()').extract_first().strip()
content = response.xpath('//div[@class="main-text-wrap"]//div[@class="read-content j_readContent"]').extract_first().strip()
# print title
# print content
filename = './down/%s.html' % (title)
with open(filename, 'wb') as f:
f.write(content.encode('utf-8'))
pass
  到目前为止,我们已经成功捕获到我们的数据,但是它不能直接使用,需要进行排序和优化。
  数据管理
  首先,我们爬取的章节页面的排序不是很好,手动排列太费时间精力;另外,章节内容收录很多多余的东西,阅读体验不好,需要优化内容的排版和可读性。
  我们先对章节进行排序,因为目录中的章节列表是按顺序排列的,所以只需在下载页面名称中加上序号即可。
  但是保存网页的代码是一个回调函数,只有在处理目录时才能确定顺序。回调函数怎么知道顺序?因此,我们需要告诉回调函数它处理章节的序号,并且我们需要向回调函数传递参数。修改后的代码如下:
  '''
更多Python学习资料以及源码教程资料,可以在群1136201545免费获取
'''
def parse(self, response):
pages = response.xpath('//div[@id="j-catalogWrap"]//ul[@class="cf"]/li')
for page in pages:
url = page.xpath('./child::a/attribute::href').extract_first()
idx = page.xpath('./attribute::data-rid').extract_first()
# yield scrapy.Request('https:' + url, callback=self.parse_chapter)
req = response.follow(url, callback=self.parse_chapter)
req.meta['idx'] = idx
yield req
pass
def parse_chapter(self, response):
idx = response.meta['idx']
title = response.xpath('//div[@class="main-text-wrap"]//h3[@class="j_chapterName"]/text()').extract_first().strip()
content = response.xpath('//div[@class="main-text-wrap"]//div[@class="read-content j_readContent"]').extract_first().strip()
# print title
# print content
filename = './down/%s_%s.html' % (idx, title)
cnt = '%s %s' % (title, content)
with open(filename, 'wb') as f:
f.write(cnt.encode('utf-8'))
pass
  使用 Sigil 创建电子书
  加载html文件
  要制作 ePub 电子书,我们首先通过 Sigil 将抓取的文件加载到程序中,然后在“添加文件”对话框中选择所有文件:
  
  制作目录
  当文件中存在 HTML h 标签时,单击 Generate Directory 按钮自动生成目录。我们在之前的数据捕获中自动添加了 h1 标签:
  
  做一个封面
  
  封面本质上是HTML,可以编辑或者从页面爬取,所以我留给你自己实现。
  

抓取网页生成电子书(Requests-html快速指南发送一个GET请求:html的方便!)

网站优化优采云 发表了文章 • 0 个评论 • 62 次浏览 • 2022-02-05 17:04 • 来自相关话题

  抓取网页生成电子书(Requests-html快速指南发送一个GET请求:html的方便!)
  安装
  安装很简单,只需执行:
  
pip install requests-html
  而已。
  分析页面结构
  通过在浏览器中查看元素,可以发现这本电子书网站是用WordPress搭建的,首页列表元素非常简洁利落。
  所以我们可以通过查找 .entry-title > a 得到所有图书详情页的链接,然后我们到详情页找到下载链接,如下图
  可以发现.download-links > a中的链接就是该书的下载链接。回到列表页面,可以发现站点有700多个页面,所以我们可以循环列表获取所有的下载链接。
  Requests-html 快速指南
  发送 GET 请求:
  
from requests_html import HTMLSession
session = HTMLSession()

r = session.get('https://python.org/')
  Requests-html 的方便之处在于它解析 html 就像使用 jQuery 一样容易,例如:
  
# 获取页面的所有链接可以这样写:
r.html.links
# 会返回 {'//docs.python.org/3/tutorial/', '/about/apps/'}

# 获取页面的所有的绝对链接:
r.html.absolute_links
# 会返回 {'https://github.com/python/pythondotorg/issues', 'https://docs.python.org/3/tutorial/'}

# 通过 CSS 选择器选择元素:
about = r.find('.about', first=True)
# 参数 first 表示只获取找到的第一元素
about.text # 获取 .about 下的所有文本
about.attrs # 获取 .about 下所有属性像 id, src, href 等等
about.html # 获取 .about 的 HTML
about.find('a') # 获取 .about 下的所有 a 标签
  构建代码
  
from requests_html import HTMLSession
import requests
import time
import json
import random
import sys

'''
想要学习Python?Python学习交流群:984632579满足你的需求,资料都已经上传群文件,可以自行下载!
'''

session = HTMLSession()
list_url = 'http://www.allitebooks.com/page/'

USER_AGENTS = [
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.20 (KHTML, like Gecko) Chrome/19.0.1036.7 Safari/535.20",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.71 Safari/537.1 LBBROWSER",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.84 Safari/535.11 LBBROWSER",
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E)",
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SV1; QQDownload 732; .NET4.0C; .NET4.0E; 360SE)",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E)",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1",
"Mozilla/5.0 (iPad; U; CPU OS 4_2_1 like Mac OS X; zh-cn) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5",
"Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:2.0b13pre) Gecko/20110307 Firefox/4.0b13pre",
"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:16.0) Gecko/20100101 Firefox/16.0",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11",
"Mozilla/5.0 (X11; U; Linux x86_64; zh-CN; rv:1.9.2.10) Gecko/20100922 Ubuntu/10.10 (maverick) Firefox/3.6.10"
]

# 获取当前列表页所有图书链接
def get_list(url):
response = session.get(url)
all_link = response.html.find('.entry-title a') # 获取页面所有图书详情链接
for link in all_link:
getBookUrl(link.attrs['href'])

# 获取图书下载链接
def getBookUrl(url):
response = session.get(url)
l = response.html.find('.download-links a', first=True)
if l is not None: # 运行后发现有的个别页面没有下载链接,这里加个判断
link = l.attrs['href'];
download(link)

#下载图书
def download(url):
# 随机浏览器 User-Agent
headers={ "User-Agent":random.choice(USER_AGENTS) }
# 获取文件名
filename = url.split('/')[-1]
# 如果 url 里包含 .pdf
if ".pdf" in url:
file = 'book/'+filename # 文件路径写死了,运行时当前目录必须有名 book 的文件夹
with open(file, 'wb') as f:
print("正在下载 %s" % filename)
response = requests.get(url, stream=True, headers=headers)

# 获取文件大小
total_length = response.headers.get('content-length')
# 如果文件大小不存在,则直接写入返回的文本
if total_length is None:
f.write(response.content)
else:
# 下载进度条
dl = 0
total_length = int(total_length) # 文件大小
for data in response.iter_content(chunk_size=4096): # 每次响应获取 4096 字节
dl += len(data)
f.write(data)
done = int(50 * dl / total_length)
sys.stdout.write("\r[%s%s]" % ('=' * done, ' ' * (50-done)) ) # 打印进度条
sys.stdout.flush()

print(filename + '下载完成!')

if __name__ == '__main__':
#从这运行,应为知道列表总数,所以偷个懒直接开始循环
for x in range(1,756):
print('当前页面: '+ str(x))
get_list(list_url+str(x))
  运行结果:
  以上就是我用Python抓到的7000多本电子书的详细讲解和整合。我希望它对你有帮助。如有任何问题,请给我留言,小编会及时回复您。还要感谢大家对脚本之家网站的支持! 查看全部

  抓取网页生成电子书(Requests-html快速指南发送一个GET请求:html的方便!)
  安装
  安装很简单,只需执行:
  
pip install requests-html
  而已。
  分析页面结构
  通过在浏览器中查看元素,可以发现这本电子书网站是用WordPress搭建的,首页列表元素非常简洁利落。
  所以我们可以通过查找 .entry-title > a 得到所有图书详情页的链接,然后我们到详情页找到下载链接,如下图
  可以发现.download-links > a中的链接就是该书的下载链接。回到列表页面,可以发现站点有700多个页面,所以我们可以循环列表获取所有的下载链接。
  Requests-html 快速指南
  发送 GET 请求:
  
from requests_html import HTMLSession
session = HTMLSession()

r = session.get('https://python.org/')
  Requests-html 的方便之处在于它解析 html 就像使用 jQuery 一样容易,例如:
  
# 获取页面的所有链接可以这样写:
r.html.links
# 会返回 {'//docs.python.org/3/tutorial/', '/about/apps/'}

# 获取页面的所有的绝对链接:
r.html.absolute_links
# 会返回 {'https://github.com/python/pythondotorg/issues', 'https://docs.python.org/3/tutorial/'}

# 通过 CSS 选择器选择元素:
about = r.find('.about', first=True)
# 参数 first 表示只获取找到的第一元素
about.text # 获取 .about 下的所有文本
about.attrs # 获取 .about 下所有属性像 id, src, href 等等
about.html # 获取 .about 的 HTML
about.find('a') # 获取 .about 下的所有 a 标签
  构建代码
  
from requests_html import HTMLSession
import requests
import time
import json
import random
import sys

'''
想要学习Python?Python学习交流群:984632579满足你的需求,资料都已经上传群文件,可以自行下载!
'''

session = HTMLSession()
list_url = 'http://www.allitebooks.com/page/'

USER_AGENTS = [
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.20 (KHTML, like Gecko) Chrome/19.0.1036.7 Safari/535.20",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.71 Safari/537.1 LBBROWSER",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.84 Safari/535.11 LBBROWSER",
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E)",
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SV1; QQDownload 732; .NET4.0C; .NET4.0E; 360SE)",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E)",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1",
"Mozilla/5.0 (iPad; U; CPU OS 4_2_1 like Mac OS X; zh-cn) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5",
"Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:2.0b13pre) Gecko/20110307 Firefox/4.0b13pre",
"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:16.0) Gecko/20100101 Firefox/16.0",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11",
"Mozilla/5.0 (X11; U; Linux x86_64; zh-CN; rv:1.9.2.10) Gecko/20100922 Ubuntu/10.10 (maverick) Firefox/3.6.10"
]

# 获取当前列表页所有图书链接
def get_list(url):
response = session.get(url)
all_link = response.html.find('.entry-title a') # 获取页面所有图书详情链接
for link in all_link:
getBookUrl(link.attrs['href'])

# 获取图书下载链接
def getBookUrl(url):
response = session.get(url)
l = response.html.find('.download-links a', first=True)
if l is not None: # 运行后发现有的个别页面没有下载链接,这里加个判断
link = l.attrs['href'];
download(link)

#下载图书
def download(url):
# 随机浏览器 User-Agent
headers={ "User-Agent":random.choice(USER_AGENTS) }
# 获取文件名
filename = url.split('/')[-1]
# 如果 url 里包含 .pdf
if ".pdf" in url:
file = 'book/'+filename # 文件路径写死了,运行时当前目录必须有名 book 的文件夹
with open(file, 'wb') as f:
print("正在下载 %s" % filename)
response = requests.get(url, stream=True, headers=headers)

# 获取文件大小
total_length = response.headers.get('content-length')
# 如果文件大小不存在,则直接写入返回的文本
if total_length is None:
f.write(response.content)
else:
# 下载进度条
dl = 0
total_length = int(total_length) # 文件大小
for data in response.iter_content(chunk_size=4096): # 每次响应获取 4096 字节
dl += len(data)
f.write(data)
done = int(50 * dl / total_length)
sys.stdout.write("\r[%s%s]" % ('=' * done, ' ' * (50-done)) ) # 打印进度条
sys.stdout.flush()

print(filename + '下载完成!')

if __name__ == '__main__':
#从这运行,应为知道列表总数,所以偷个懒直接开始循环
for x in range(1,756):
print('当前页面: '+ str(x))
get_list(list_url+str(x))
  运行结果:
  以上就是我用Python抓到的7000多本电子书的详细讲解和整合。我希望它对你有帮助。如有任何问题,请给我留言,小编会及时回复您。还要感谢大家对脚本之家网站的支持!

抓取网页生成电子书(主流电子书格式大家最为熟知的电子书熟知格式(图))

网站优化优采云 发表了文章 • 0 个评论 • 75 次浏览 • 2022-02-05 17:03 • 来自相关话题

  抓取网页生成电子书(主流电子书格式大家最为熟知的电子书熟知格式(图))
  编者注(@Minja):在编写文章时,经常需要引用和回溯。对各种存档和剪辑工具的不满,让我萌生了自己制作电子书的念头。正好@Spencerwoo在这方面有扎实的折腾能力,于是摆脱了他,研究了一套简单易行的方法,写成文章分享给大家。
  虽然网络世界有很多有价值的文章,但并不是每一次阅读体验都令人满意。如果你想拥有出色的文章阅读体验,至少要确保我们正在阅读文章:
  很多时候,我们依靠浏览器的阅读方式,或者Pocket和RSS客户端来阅读。但是,阅读模式后期无法整理,而且大部分阅读服务的全文搜索功能都需要付费,网上的文章可能一天都找不到。或许,将 文章 保存为本地电子书是一种更方便的回顾选择。
  如果我们在网上看到一个网页形式的电子书,想直接把整个网页保存到本地(俗称“剪辑”),那简直是麻烦大了。现有的网页剪辑工具不仅会携带无用的、影响体验的广告和其他冗余区域,还会丢失重要和有价值的内容。不仅如此,几乎没有工具可以轻松抓取图片并自定义保存到本地的文章样式。那么,让我向您介绍一组免费制作个性化电子书的方法。
  本文主要使用开源工具 Pandoc。对于需要MOBI或PDF格式电子书的读者,文章后半部分也有简单的转换方法。
  ePub 电子书的突破
  目前主流的电子书格式有很多,但本文主要推荐ePub,它比较开放统一,可以很方便的转换成其他格式。
  
  主流电子书格式
  最广为人知的电子书格式可能是纯文本TXT格式,但TXT之所以被称为“纯文本”,是因为它不支持章节、图片、封面和超链接。为了让电子书有格式、有图片、有内容,目前常见的电子书通常有PDF、ePub、MOBI三种格式。在:
  我们文章文章的主要目的是利用接下来要介绍的工具,制作一个内嵌图片、目录、外观清晰美观的电子书。相对而言,ePub 更加灵活,有完整的目录和自定义布局,也很容易转换成其他两种格式。本文从它开始。
  
  制作的电子书效果
  […] 查看全部

  抓取网页生成电子书(主流电子书格式大家最为熟知的电子书熟知格式(图))
  编者注(@Minja):在编写文章时,经常需要引用和回溯。对各种存档和剪辑工具的不满,让我萌生了自己制作电子书的念头。正好@Spencerwoo在这方面有扎实的折腾能力,于是摆脱了他,研究了一套简单易行的方法,写成文章分享给大家。
  虽然网络世界有很多有价值的文章,但并不是每一次阅读体验都令人满意。如果你想拥有出色的文章阅读体验,至少要确保我们正在阅读文章:
  很多时候,我们依靠浏览器的阅读方式,或者Pocket和RSS客户端来阅读。但是,阅读模式后期无法整理,而且大部分阅读服务的全文搜索功能都需要付费,网上的文章可能一天都找不到。或许,将 文章 保存为本地电子书是一种更方便的回顾选择。
  如果我们在网上看到一个网页形式的电子书,想直接把整个网页保存到本地(俗称“剪辑”),那简直是麻烦大了。现有的网页剪辑工具不仅会携带无用的、影响体验的广告和其他冗余区域,还会丢失重要和有价值的内容。不仅如此,几乎没有工具可以轻松抓取图片并自定义保存到本地的文章样式。那么,让我向您介绍一组免费制作个性化电子书的方法。
  本文主要使用开源工具 Pandoc。对于需要MOBI或PDF格式电子书的读者,文章后半部分也有简单的转换方法。
  ePub 电子书的突破
  目前主流的电子书格式有很多,但本文主要推荐ePub,它比较开放统一,可以很方便的转换成其他格式。
  
  主流电子书格式
  最广为人知的电子书格式可能是纯文本TXT格式,但TXT之所以被称为“纯文本”,是因为它不支持章节、图片、封面和超链接。为了让电子书有格式、有图片、有内容,目前常见的电子书通常有PDF、ePub、MOBI三种格式。在:
  我们文章文章的主要目的是利用接下来要介绍的工具,制作一个内嵌图片、目录、外观清晰美观的电子书。相对而言,ePub 更加灵活,有完整的目录和自定义布局,也很容易转换成其他两种格式。本文从它开始。
  
  制作的电子书效果
  […]

抓取网页生成电子书(网络书籍抓取器是一款帮助用户下载指定网页的某)

网站优化优采云 发表了文章 • 0 个评论 • 163 次浏览 • 2022-02-05 03:22 • 来自相关话题

  抓取网页生成电子书(网络书籍抓取器是一款帮助用户下载指定网页的某)
  在线图书抓取器是一款可以帮助用户下载指定网页的某本书和某章的软件。通过在线图书抓取器,可以快速下载小说。同时软件支持断点续传功能,非常方便。可以下载使用。
  
  网络图书采集器功能介绍
  可以提取指定小说目录页面的章节信息并进行调整,然后按照章节顺序抓取小说内容,在最合适的时候进行合并。爬取过程可以随时中断,关闭程序后可以恢复上一个任务。
  网络图书抓取软件的特点
  1、章节调整:提取目录后,可以进行移动、删除、反转等调整操作。调整将直接影响调整后的章节顺序中的最终书籍和输出。
  2、自动重试:爬取过程中,可能由于网络因素导致爬取失败。这个程序可能会自动重试直到成功,或者暂时中断爬取(中断后关闭程序不会影响进度),等网络好了再试。
  3、停止和恢复:可以随时停止捕捉过程,退出程序后不影响进度(章节信息会保存在记录中,程序结束后可以恢复捕捉下次运行。注意:需要先用停止键中断,然后退出程序,如果直接退出,将无法恢复)。
  4、一键抓取:又称“傻瓜模式”,基本可以实现全自动抓取合并功能,直接输出最终的文本文件。前面可能需要输入最基本的URL、save bit等信息(会有明显的操作提示),调整章节后也可以使用一键爬取,爬取和合并操作会自动完成。
  5、适用网站:已输入10个适用网站(选择后可快速打开网站找到想要的书),以及相应的代码也可以自动应用,其他小说网站也可以测试,如果一起使用,可以手动添加到设置文件中备份。
  6、轻松制作电子书:可以在设置文件中添加每章名称的前缀和后缀,为后期制作电子书的编目带来极大的方便。
  如何使用在线图书抓取器
  一、首先进入你要下载的小说的网页。
  二、输入书名,点击目录提取。
  
  三、设置保存路径,点击Start Grab开始下载。 查看全部

  抓取网页生成电子书(网络书籍抓取器是一款帮助用户下载指定网页的某)
  在线图书抓取器是一款可以帮助用户下载指定网页的某本书和某章的软件。通过在线图书抓取器,可以快速下载小说。同时软件支持断点续传功能,非常方便。可以下载使用。
  
  网络图书采集器功能介绍
  可以提取指定小说目录页面的章节信息并进行调整,然后按照章节顺序抓取小说内容,在最合适的时候进行合并。爬取过程可以随时中断,关闭程序后可以恢复上一个任务。
  网络图书抓取软件的特点
  1、章节调整:提取目录后,可以进行移动、删除、反转等调整操作。调整将直接影响调整后的章节顺序中的最终书籍和输出。
  2、自动重试:爬取过程中,可能由于网络因素导致爬取失败。这个程序可能会自动重试直到成功,或者暂时中断爬取(中断后关闭程序不会影响进度),等网络好了再试。
  3、停止和恢复:可以随时停止捕捉过程,退出程序后不影响进度(章节信息会保存在记录中,程序结束后可以恢复捕捉下次运行。注意:需要先用停止键中断,然后退出程序,如果直接退出,将无法恢复)。
  4、一键抓取:又称“傻瓜模式”,基本可以实现全自动抓取合并功能,直接输出最终的文本文件。前面可能需要输入最基本的URL、save bit等信息(会有明显的操作提示),调整章节后也可以使用一键爬取,爬取和合并操作会自动完成。
  5、适用网站:已输入10个适用网站(选择后可快速打开网站找到想要的书),以及相应的代码也可以自动应用,其他小说网站也可以测试,如果一起使用,可以手动添加到设置文件中备份。
  6、轻松制作电子书:可以在设置文件中添加每章名称的前缀和后缀,为后期制作电子书的编目带来极大的方便。
  如何使用在线图书抓取器
  一、首先进入你要下载的小说的网页。
  二、输入书名,点击目录提取。
  
  三、设置保存路径,点击Start Grab开始下载。

抓取网页生成电子书(基于Node.js开发的开源工具,GitBook版)

网站优化优采云 发表了文章 • 0 个评论 • 84 次浏览 • 2022-02-04 07:14 • 来自相关话题

  抓取网页生成电子书(基于Node.js开发的开源工具,GitBook版)
  GitBook 是一个基于 Node.js 开发的开源工具。它可以通过命令行创建电子书项目,然后使用MarkDown编写电子书内容,然后生成PDF、ePub、mobi格式的电子书,或者生成静态站点。
  此外,您还可以使用 Git 命令来管理电子书版本。如果你是 GitHub 的重度用户,你也可以将你的 GitBook 账号和你的 GitHub 账号绑定,这样无论两边修改什么,都可以相互同步。
  一、安装 Node.js
  由于 GitBook 是基于 Node.js 开发的,所以它依赖于 Node.js 环境。如果您的系统没有安装Node.js,请根据您使用的系统点击下方链接下载对应版本。如果已经安装,请跳过此步骤。
  Node.js 下载页面:
  Node.js的Windows版和Mac版都是常规安装包,下一步即可安装。Luunix版本可以参考官方文档通过yum、apt-get等工具安装,也可以通过源码包安装,如下图:
  $ wget https://nodejs.org/dist/v5.4.1/node-v5.4.1.tar.gz
$ tar zxvf node-v5.4.1.tar.gz
$ cd node-v5.4.1
$ ./configure
$ make
$ make install
  二、安装 GitBook
  打开命令提示符(在 Mac 上打开终端)并输入以下命令安装 GitBook:
  $ npm install gitbook-cli -g
  由于网络原因,安装时间可能会较长,请耐心等待安装完成。安装完成后,可以输入以下命令,通过查看GitBook的版本来判断是否安装成功:
  $ gitbook -V
  三、创建一个电子书项目
  新建目录,进入目录,用gitbook命令初始化电子书项目。例如,现在让我们创建一个名为“MyFirstBook”的空白电子书项目,如下所示:
  $ mkdir MyFirstBook
$ cd MyFirstBook
$ gitbook init
  四、编辑电子书内容
  初始化目录中会出现“README.md(电子书介绍文件)”和“SUMMARY.md(导航目录文件)”两个基本文件。此外,您还可以手动创建其他“Glossary.md(书末词汇)”、“book.json(电子书配置文件)”。可以根据自己的喜好为电子书的文本内容新建一个.md文件,比如“chapter01.md”,然后使用MarkDown编写具体的文本内容。这些文件将在下面详细描述。
  1、README.md
  这个文件是一个简单的电子书介绍,你可以对你制作的电子书做一个简单的描述:
  # 简介
这是我的第一本使用 GitBook 制作的电子书。
  2、SUMMARY.md
  这是电子书的导航目录文件。每当添加章节文件时,都需要在该文件中添加一条记录。对于 Kindle 书籍,该文件呈现的目录结构是开头的目录内容和“转到”目录导航。
  # Summary
* [简介](README.md)
* [第一章](section1/README.md)
* [第二章](section2/README.md)
  如果需要“小节”,可以使用Tab缩进(最多支持三级标题),如下:
  # Summary
* [第一章](section1/README.md)
* [第一节](section1/example1.md)
* [第二节](section1/example2.md)
* [第二章](section2/README.md)
* [第一节](section2/example1.md)
  3、词汇表.md
  电子书内容中需要解释的术语可以在本文档中定义。词汇表将放在电子书的末尾。其格式如下:
  # 电子书
电子书是指将文字、图片、声音、影像等讯息内容数字化的出版物和植入或下载数字化文字、图片、声音、影像等讯息内容的集存储和显示终端于一体的手持阅读器。
# Kindle
Amazon Kindle 是由 Amazon 设计和销售的电子书阅读器(以及软件平台)。用户可以通过无线网络使用 Amazon Kindle 购买、下载和阅读电子书、报纸、杂志、博客及其他电子媒体。
  4、book.json
  “book.json”是电子书的配置文件,可以看作是电子书的“原创数据”,如书名、描述、isbn、语言、方向、风格等。点此查看更多信息。其基本结构如下:
  {
"title": "我的第一本電子書",
"description": "用 GitBook 制作的第一本電子書!",
"isbn": "978-3-16-148410-0",
"language": "zh-tw",
"direction": "ltr"
}
  5、普通章节.md文件
  普通章节 .md 文件可以使用您喜欢的文本编辑器编写。MarkDown的编写,可以点击这里查看相关示例。每次编写 .md 文件时,不要忘记在“SUMMARY.md”文件中添加一条记录。
  6、电子书封面图片
  GitBook 帮助文档建议封面图片大小为 1800*2360 像素,并遵循以下建议:
  图片格式为jpg格式。将图片重命名为“cover.jpg”,放入电子书项目文件夹。
  五、预览电子书内容
  电子书内容编写完成后,可以使用浏览器进行预览。首先输入以下命令,从 .md 文件生成 HTML 文档:
  $ gitbook build
  构建完成后,eBook项目目录中会出现一个名为“_book”的文件夹。进入文件夹,直接用浏览器打开“index.html”,或者先输入以下命令:
  $ gitbook serve
  然后在浏览器中输入“:4000”预览电子书的内容,按Ctrl+C结束预览。
  六、生成电子书文件
  确认电子书没有问题后,输入以下命令即可生成mobi电子书:
  $ gitbook mobi ./ ./MyFirstBook.mobi
  如果出现以下错误信息,则说明您尚未安装 Calibre。由于 GitBook 依赖 Calibre 的 ebook-convert 生成 mobi 格式的电子书,请先下载并安装 Calibre。
  Error: Need to install ebook-convert from Calibre
  Calibre安装后,对于Mac OS X系统,需要先设置软链接:
  $ ln -s /Applications/calibre.app/Contents/MacOS/ebook-convert /usr/local/bin
  再次运行转换命令,生成 mobi 格式的电子书。
  七、将项目托管到
  以上所有步骤均在本地执行。如果需要实现电子书的版本管理,或者将电子书发布到网络,也可以通过 Git 命令在 Git 上托管本地项目。
  1、注册一个账号
  首先去注册一个帐户并创建一个新项目。在“设置”页面获取“Git URL(Git链接)”,链接如下:
  https://git.gitbook.com/kindlefere/myfirstbook.git
  2、安装 Git 软件
  在开始以下步骤之前,请确保您的系统上安装了 Git。一般Mac和Lunix都自带Git功能,可以在终端运行git --version查看Git版本。Windows一般不自带Git功能,请先点击这里下载安装。
  安装适用于 Windows 的 Git 时,您将看到两个选项:“仅从 Git Bash 使用 Git”和“从 Windows 命令提示符使用 Git”。前者是指在程序自带的单独终端中使用Git。后者意味着你可以通过系统自带的“命令提示符”来使用 Git 命令。大家可以根据自己的喜好来选择,我个人推荐使用后者。
  3、上传现有的电子书项目
  在本地新建一个文件夹,通过Git命令在本地抓取新创建的远程项目,如下图:
  $ mkdir MyFirstBook-Git
$ cd MyFirstBook-Git
$ git init
$ git pull https://git.gitbook.com/kindlefere/myfirstbook.git
  然后将本地项目“MyFirstBook”的所有内容复制到新创建的文件夹中,如上面的“MyFirstBook-Git”。然后使用Git命令将本地项目上传到远程,如下:
  $ git add -A
$ git commit -m "提交说明"
$ git remote add gitbook https://git.gitbook.com/kindlefere/myfirstbook.git
$ git push -u gitbook master
  在此期间,您需要输入您的 GitBook 注册邮箱和密码。以后修改内容后,只需要输入如下Git命令即可:
  $ git add [修改的文件]
$ git commit -m "提交说明"
$ git push -u gitbook master
  八、将项目链接到 GitHub 帐户
  如果你喜欢使用 GitHub 来管理你的项目。您还可以将您的 GitBook 帐户链接到您的 GitHub 帐户,以便您的更改可以相互同步。
  1、链接 GitBook 和 GitHub 帐户
  关联设置也很简单,首先进入GitBook的“账户设置”页面,在“Profile(个人数据)”选项卡中找到“GitHub”选项卡,点击【Connect to GitHub】按钮转至GitHub的“Authorize” “申请”页面,点击【授权申请】按钮完成关联。
  2、将 GitBook 项目导入 GitHub
  关联完成后,您可以设置同步的电子书项目。以电子书项目“MyFirstBook”为例,首先需要将项目导入GitHub。转到电子书项目的设置页面并切换到“GitHub”选项卡。在“GitHub Repository”中,点击[Export to GitHub]按钮,按照向导中的步骤将项目导入GitHub。
  3、设置 GitBook 和 GitHub 同步
  导出成功后,回到GitBook项目设置页面的“GitHub”选项卡,在“GitHub Repository”的输入框中填写GitHub Repository名称,如“GitHub username/myfirstbook”,点击【保存]按钮保存。
  保存后,当前页面会出现一个名为“集成”的选项卡。点击里面的【添加 webhook】按钮,让 GitBook 可以接收来自 Github 的内容更新。这会将 GitBook 上的项目与 GitHub 上的相应项目链接起来。
  之后就可以使用 GitHub 来管理电子书项目,GitBook 上电子书内容的修改也会自动同步到 GitHub。 查看全部

  抓取网页生成电子书(基于Node.js开发的开源工具,GitBook版)
  GitBook 是一个基于 Node.js 开发的开源工具。它可以通过命令行创建电子书项目,然后使用MarkDown编写电子书内容,然后生成PDF、ePub、mobi格式的电子书,或者生成静态站点。
  此外,您还可以使用 Git 命令来管理电子书版本。如果你是 GitHub 的重度用户,你也可以将你的 GitBook 账号和你的 GitHub 账号绑定,这样无论两边修改什么,都可以相互同步。
  一、安装 Node.js
  由于 GitBook 是基于 Node.js 开发的,所以它依赖于 Node.js 环境。如果您的系统没有安装Node.js,请根据您使用的系统点击下方链接下载对应版本。如果已经安装,请跳过此步骤。
  Node.js 下载页面:
  Node.js的Windows版和Mac版都是常规安装包,下一步即可安装。Luunix版本可以参考官方文档通过yum、apt-get等工具安装,也可以通过源码包安装,如下图:
  $ wget https://nodejs.org/dist/v5.4.1/node-v5.4.1.tar.gz
$ tar zxvf node-v5.4.1.tar.gz
$ cd node-v5.4.1
$ ./configure
$ make
$ make install
  二、安装 GitBook
  打开命令提示符(在 Mac 上打开终端)并输入以下命令安装 GitBook:
  $ npm install gitbook-cli -g
  由于网络原因,安装时间可能会较长,请耐心等待安装完成。安装完成后,可以输入以下命令,通过查看GitBook的版本来判断是否安装成功:
  $ gitbook -V
  三、创建一个电子书项目
  新建目录,进入目录,用gitbook命令初始化电子书项目。例如,现在让我们创建一个名为“MyFirstBook”的空白电子书项目,如下所示:
  $ mkdir MyFirstBook
$ cd MyFirstBook
$ gitbook init
  四、编辑电子书内容
  初始化目录中会出现“README.md(电子书介绍文件)”和“SUMMARY.md(导航目录文件)”两个基本文件。此外,您还可以手动创建其他“Glossary.md(书末词汇)”、“book.json(电子书配置文件)”。可以根据自己的喜好为电子书的文本内容新建一个.md文件,比如“chapter01.md”,然后使用MarkDown编写具体的文本内容。这些文件将在下面详细描述。
  1、README.md
  这个文件是一个简单的电子书介绍,你可以对你制作的电子书做一个简单的描述:
  # 简介
这是我的第一本使用 GitBook 制作的电子书。
  2、SUMMARY.md
  这是电子书的导航目录文件。每当添加章节文件时,都需要在该文件中添加一条记录。对于 Kindle 书籍,该文件呈现的目录结构是开头的目录内容和“转到”目录导航。
  # Summary
* [简介](README.md)
* [第一章](section1/README.md)
* [第二章](section2/README.md)
  如果需要“小节”,可以使用Tab缩进(最多支持三级标题),如下:
  # Summary
* [第一章](section1/README.md)
* [第一节](section1/example1.md)
* [第二节](section1/example2.md)
* [第二章](section2/README.md)
* [第一节](section2/example1.md)
  3、词汇表.md
  电子书内容中需要解释的术语可以在本文档中定义。词汇表将放在电子书的末尾。其格式如下:
  # 电子书
电子书是指将文字、图片、声音、影像等讯息内容数字化的出版物和植入或下载数字化文字、图片、声音、影像等讯息内容的集存储和显示终端于一体的手持阅读器。
# Kindle
Amazon Kindle 是由 Amazon 设计和销售的电子书阅读器(以及软件平台)。用户可以通过无线网络使用 Amazon Kindle 购买、下载和阅读电子书、报纸、杂志、博客及其他电子媒体。
  4、book.json
  “book.json”是电子书的配置文件,可以看作是电子书的“原创数据”,如书名、描述、isbn、语言、方向、风格等。点此查看更多信息。其基本结构如下:
  {
"title": "我的第一本電子書",
"description": "用 GitBook 制作的第一本電子書!",
"isbn": "978-3-16-148410-0",
"language": "zh-tw",
"direction": "ltr"
}
  5、普通章节.md文件
  普通章节 .md 文件可以使用您喜欢的文本编辑器编写。MarkDown的编写,可以点击这里查看相关示例。每次编写 .md 文件时,不要忘记在“SUMMARY.md”文件中添加一条记录。
  6、电子书封面图片
  GitBook 帮助文档建议封面图片大小为 1800*2360 像素,并遵循以下建议:
  图片格式为jpg格式。将图片重命名为“cover.jpg”,放入电子书项目文件夹。
  五、预览电子书内容
  电子书内容编写完成后,可以使用浏览器进行预览。首先输入以下命令,从 .md 文件生成 HTML 文档:
  $ gitbook build
  构建完成后,eBook项目目录中会出现一个名为“_book”的文件夹。进入文件夹,直接用浏览器打开“index.html”,或者先输入以下命令:
  $ gitbook serve
  然后在浏览器中输入“:4000”预览电子书的内容,按Ctrl+C结束预览。
  六、生成电子书文件
  确认电子书没有问题后,输入以下命令即可生成mobi电子书:
  $ gitbook mobi ./ ./MyFirstBook.mobi
  如果出现以下错误信息,则说明您尚未安装 Calibre。由于 GitBook 依赖 Calibre 的 ebook-convert 生成 mobi 格式的电子书,请先下载并安装 Calibre。
  Error: Need to install ebook-convert from Calibre
  Calibre安装后,对于Mac OS X系统,需要先设置软链接:
  $ ln -s /Applications/calibre.app/Contents/MacOS/ebook-convert /usr/local/bin
  再次运行转换命令,生成 mobi 格式的电子书。
  七、将项目托管到
  以上所有步骤均在本地执行。如果需要实现电子书的版本管理,或者将电子书发布到网络,也可以通过 Git 命令在 Git 上托管本地项目。
  1、注册一个账号
  首先去注册一个帐户并创建一个新项目。在“设置”页面获取“Git URL(Git链接)”,链接如下:
  https://git.gitbook.com/kindlefere/myfirstbook.git
  2、安装 Git 软件
  在开始以下步骤之前,请确保您的系统上安装了 Git。一般Mac和Lunix都自带Git功能,可以在终端运行git --version查看Git版本。Windows一般不自带Git功能,请先点击这里下载安装。
  安装适用于 Windows 的 Git 时,您将看到两个选项:“仅从 Git Bash 使用 Git”和“从 Windows 命令提示符使用 Git”。前者是指在程序自带的单独终端中使用Git。后者意味着你可以通过系统自带的“命令提示符”来使用 Git 命令。大家可以根据自己的喜好来选择,我个人推荐使用后者。
  3、上传现有的电子书项目
  在本地新建一个文件夹,通过Git命令在本地抓取新创建的远程项目,如下图:
  $ mkdir MyFirstBook-Git
$ cd MyFirstBook-Git
$ git init
$ git pull https://git.gitbook.com/kindlefere/myfirstbook.git
  然后将本地项目“MyFirstBook”的所有内容复制到新创建的文件夹中,如上面的“MyFirstBook-Git”。然后使用Git命令将本地项目上传到远程,如下:
  $ git add -A
$ git commit -m "提交说明"
$ git remote add gitbook https://git.gitbook.com/kindlefere/myfirstbook.git
$ git push -u gitbook master
  在此期间,您需要输入您的 GitBook 注册邮箱和密码。以后修改内容后,只需要输入如下Git命令即可:
  $ git add [修改的文件]
$ git commit -m "提交说明"
$ git push -u gitbook master
  八、将项目链接到 GitHub 帐户
  如果你喜欢使用 GitHub 来管理你的项目。您还可以将您的 GitBook 帐户链接到您的 GitHub 帐户,以便您的更改可以相互同步。
  1、链接 GitBook 和 GitHub 帐户
  关联设置也很简单,首先进入GitBook的“账户设置”页面,在“Profile(个人数据)”选项卡中找到“GitHub”选项卡,点击【Connect to GitHub】按钮转至GitHub的“Authorize” “申请”页面,点击【授权申请】按钮完成关联。
  2、将 GitBook 项目导入 GitHub
  关联完成后,您可以设置同步的电子书项目。以电子书项目“MyFirstBook”为例,首先需要将项目导入GitHub。转到电子书项目的设置页面并切换到“GitHub”选项卡。在“GitHub Repository”中,点击[Export to GitHub]按钮,按照向导中的步骤将项目导入GitHub。
  3、设置 GitBook 和 GitHub 同步
  导出成功后,回到GitBook项目设置页面的“GitHub”选项卡,在“GitHub Repository”的输入框中填写GitHub Repository名称,如“GitHub username/myfirstbook”,点击【保存]按钮保存。
  保存后,当前页面会出现一个名为“集成”的选项卡。点击里面的【添加 webhook】按钮,让 GitBook 可以接收来自 Github 的内容更新。这会将 GitBook 上的项目与 GitHub 上的相应项目链接起来。
  之后就可以使用 GitHub 来管理电子书项目,GitBook 上电子书内容的修改也会自动同步到 GitHub。

抓取网页生成电子书(用urllib来爬取网页生成电子书的方法有哪些)

网站优化优采云 发表了文章 • 0 个评论 • 62 次浏览 • 2022-02-04 07:06 • 来自相关话题

  抓取网页生成电子书(用urllib来爬取网页生成电子书的方法有哪些)
  抓取网页生成电子书,我目前想到的方法有,爬虫爬取图片,然后根据图片文件名转换,将出版社获取并保存数据库。甚至可以爬取网站服务器的页面等等。另外,图片比较多的话,可以使用gimp、photoshop等软件。比如这个。
  建议安装一个可以爬取网页的搜索引擎,比如urllib.request。
  你可以用国外软件bookscombiy[]
  用urllib来爬,chrome有插件taobaoui可以选取网页里每个链接的信息,获取电子书名和作者,
  通过scrapy抓取网页,然后利用javascript,然后利用数据库等,
<p>我的方法:建一个反爬虫系统,找到客户端的地址,发给爬虫。爬虫爬这个页面,发给网站,再发回去。客户端地址就是所爬过页面。具体代码: 查看全部

  抓取网页生成电子书(用urllib来爬取网页生成电子书的方法有哪些)
  抓取网页生成电子书,我目前想到的方法有,爬虫爬取图片,然后根据图片文件名转换,将出版社获取并保存数据库。甚至可以爬取网站服务器的页面等等。另外,图片比较多的话,可以使用gimp、photoshop等软件。比如这个。
  建议安装一个可以爬取网页的搜索引擎,比如urllib.request。
  你可以用国外软件bookscombiy[]
  用urllib来爬,chrome有插件taobaoui可以选取网页里每个链接的信息,获取电子书名和作者,
  通过scrapy抓取网页,然后利用javascript,然后利用数据库等,
<p>我的方法:建一个反爬虫系统,找到客户端的地址,发给爬虫。爬虫爬这个页面,发给网站,再发回去。客户端地址就是所爬过页面。具体代码:

抓取网页生成电子书(搜狗收录应该怎么做?搜狗SEO工程师收录方法,搜狗推送 )

网站优化优采云 发表了文章 • 0 个评论 • 66 次浏览 • 2022-02-03 22:18 • 来自相关话题

  抓取网页生成电子书(搜狗收录应该怎么做?搜狗SEO工程师收录方法,搜狗推送
)
  搜狗收录应该怎么做?下面我们来看看搜狗的SEO工程师搜狗收录的方法。做好搜狗网站收录,必须具备以下几个维度。否则,搜狗将很难收录你的域名。
  
  搜狗推
  一、 服务器稳定
  任何网站收录或者排名都需要稳定的服务器,好的服务器是SEO优化的基础,尤其是网站,服务器出错会导致搜狗搜索引擎无法捕捉没有 收录 排名。
  二、搜狗老域名
  老域名对于搜狗搜索引擎具有得天独厚的优势。搜狗搜索引擎对老域名的信任度很高(被称为有中国历史的老域名)。只要老域名没有错误,很容易收录首页或者内页,比新域名更稳定。所以懂搜狗搜索引擎的SEO人员会选择老域名,但是老搜狗域名也是有风险的。购买旧域名时,请仔细查看。如果旧域名已经被处罚,那么你就不应该购买这样的域名,因为如果你买了,就不会有更大的改善!
  三、 搜狗节目选择
  搜狗蜘蛛对网页的抓取是通过网页之间的链接实现的。在选择程序的时候,一定要选择内置的链接功能,网页之间有更多的推荐或链接。强大的联动功能让搜狗蜘蛛对网站的抓取更加全面。自动生成Sitemap地图可以更好的让搜狗了解你的网站结构和布局。搜狗更喜欢静态页面。选择课程时,尽量选择原创学位模板过高的静态网站课程。
  四、 网站内容
  网站未被搜狗列出收录,请提交新的网站链接到搜狗站长平台,搜狗搜索引擎更注重标题+描述。因此,在填写网站的内容时,标题+第一段尽量是原创或伪原创。
  五、搜狗投稿收录
  搜狗推送有用吗?绝对有用!毫无疑问!搜狗官方:(为了让搜狗蜘蛛更快发现你的网站,你也可以通过网站收录收录提交单页申请)
  搜狗官方有几种提交方式:
  
  搜狗投稿工具
  有2种类型的提交:
  1、 验证站点提交(每个站点每天 200 个项目)
  2、 未经验证的网站提交。(单个账号每日限制200个未验证站点)
  3、sitemap.xml提交(包括搜狗邀请系统,大部分人没有权限,只能选择验证推送或者非验证推送来改进收录)
  六、搜狗收录时间
  搜狗蜘蛛只与同一IP地址的服务器主机建立一个连接,爬取间隔速度控制在几秒内。一个网页在收录之后,最快也要几天才会更新。如果您不断地抓取您的 网站,请注意您的 网站 上的页面会在每次访问时生成新链接。
  
  搜狗收录
  以上小编搜狗网站的收录的效果。这就是今天的分享!看完这篇文章,如果你觉得不错,不妨采集起来,或者发给需要的朋友和同事!你的一举一动都会成为小编源源不断的动力!
   查看全部

  抓取网页生成电子书(搜狗收录应该怎么做?搜狗SEO工程师收录方法,搜狗推送
)
  搜狗收录应该怎么做?下面我们来看看搜狗的SEO工程师搜狗收录的方法。做好搜狗网站收录,必须具备以下几个维度。否则,搜狗将很难收录你的域名。
  
  搜狗推
  一、 服务器稳定
  任何网站收录或者排名都需要稳定的服务器,好的服务器是SEO优化的基础,尤其是网站,服务器出错会导致搜狗搜索引擎无法捕捉没有 收录 排名。
  二、搜狗老域名
  老域名对于搜狗搜索引擎具有得天独厚的优势。搜狗搜索引擎对老域名的信任度很高(被称为有中国历史的老域名)。只要老域名没有错误,很容易收录首页或者内页,比新域名更稳定。所以懂搜狗搜索引擎的SEO人员会选择老域名,但是老搜狗域名也是有风险的。购买旧域名时,请仔细查看。如果旧域名已经被处罚,那么你就不应该购买这样的域名,因为如果你买了,就不会有更大的改善!
  三、 搜狗节目选择
  搜狗蜘蛛对网页的抓取是通过网页之间的链接实现的。在选择程序的时候,一定要选择内置的链接功能,网页之间有更多的推荐或链接。强大的联动功能让搜狗蜘蛛对网站的抓取更加全面。自动生成Sitemap地图可以更好的让搜狗了解你的网站结构和布局。搜狗更喜欢静态页面。选择课程时,尽量选择原创学位模板过高的静态网站课程。
  四、 网站内容
  网站未被搜狗列出收录,请提交新的网站链接到搜狗站长平台,搜狗搜索引擎更注重标题+描述。因此,在填写网站的内容时,标题+第一段尽量是原创或伪原创
  五、搜狗投稿收录
  搜狗推送有用吗?绝对有用!毫无疑问!搜狗官方:(为了让搜狗蜘蛛更快发现你的网站,你也可以通过网站收录收录提交单页申请)
  搜狗官方有几种提交方式:
  
  搜狗投稿工具
  有2种类型的提交:
  1、 验证站点提交(每个站点每天 200 个项目)
  2、 未经验证的网站提交。(单个账号每日限制200个未验证站点)
  3、sitemap.xml提交(包括搜狗邀请系统,大部分人没有权限,只能选择验证推送或者非验证推送来改进收录)
  六、搜狗收录时间
  搜狗蜘蛛只与同一IP地址的服务器主机建立一个连接,爬取间隔速度控制在几秒内。一个网页在收录之后,最快也要几天才会更新。如果您不断地抓取您的 网站,请注意您的 网站 上的页面会在每次访问时生成新链接。
  
  搜狗收录
  以上小编搜狗网站的收录的效果。这就是今天的分享!看完这篇文章,如果你觉得不错,不妨采集起来,或者发给需要的朋友和同事!你的一举一动都会成为小编源源不断的动力!
  

抓取网页生成电子书(仅以界面操作方式-RSS功能模块)

网站优化优采云 发表了文章 • 0 个评论 • 91 次浏览 • 2022-02-01 13:15 • 来自相关话题

  抓取网页生成电子书(仅以界面操作方式-RSS功能模块)
  Kindle Companion之前写过一篇文章文章——在Google Developer Console上使用KindleEar搭建RSS推送服务器。安装成功后,您可以添加自己喜欢的RSS feed,KindleEar会自动抓取最新的文章,并以期刊的形式定期推送到您的Kindle。那么除此之外,还有其他方法可以抓取 RSS 提要吗?当然有!Calibre 本身有一个 RSS 捕获功能模块,KindleEar 就是基于这个模块编写的。Calibre虽然有命令行操作方式,但对普通用户不是很友好,所以本文仅以界面操作方式为例。
  一、准备提要
  RSS订阅地址多种多样,没有一定的规则,获取RSS地址的方法也不同。一般提供RSS订阅的网站都会提供一个RSS图标,点击即可获取该网站的RSS订阅地址。如果页面上没有这个图标,可以查看网页的源码,找到类似“href=""/&gt;这样的一行,就是RSS地址。另外,一些浏览器如火狐、Opera等会自动获取网站 RSS订阅地址,并在地址栏标出RSS小图标,也可以轻松获取本站RSS地址。
  二、添加提要
  准备好 RSS 提要后,您可以在 Calibre 中添加它们。打开Calibre,在Calibre主界面顶部的功能图标中找到“抓取新闻”,点击右侧的向下箭头,在弹出的菜单中点击“添加自定义新闻源”。
  
  在弹出的对话框中,点击【新建配方】按钮,切换到“添加自定义新闻源”对话框。在“订阅列表标题”中输入一个名称,例如“我的订阅”(此名称是一个类别名称,将收录一组 RSS 提要地址)。
  “最老的文章”可以设置抓取文章的及时性。默认情况下,Calibre 只会在过去 7 天内抓取 文章。如果你想抢更多,你可以自定义更改天数。“每个源的最大 文章 秒数”设置要抓取的最大 文章 秒数。不过需要注意的是,这两个设置受限于网站 RSS的输出方式。比如有些网站的RSS只输出有限个最新的文章,所以无论在Calibre中如何设置都受这个限制,可能无法获取到指定的文章 的数量;
  接下来,我们需要在“将新闻添加到订阅”中添加我们想要保留的 RSS 地址。同样在“Source Name”中输入RSS订阅的名称,如“Kindle Companion”;然后在“Source URL”中输入RSS地址,如“”;最后,点击【添加来源】按钮,在“订阅列表中的新闻”中添加一个RSS订阅。在一个订阅列表中可以抓取多个RSS订阅,因此您可以重复输入多个RSS订阅名称和来源网址并添加多次。
  
  添加RSS提要地址后。点击右下角的【保存】按钮保存并返回“添加自定义动态消息”界面。如需修改,可在左侧列表中选择一项,然后点击【编辑此配方】按钮进行修改。如果要修改它,请单击[删除此配方]按钮将其删除。如果没有问题,可以点击【关闭】按钮返回Calibre主界面。
  三、获取和推送
  设置好 Feed 后,您就可以抓取新闻了。同样,在Calibre主界面上方的功能图标中找到“抓取新闻”,点击,弹出“定期新闻下载”对话框。在左侧列表中找到“自定义”类别,点击展开,可以找到刚刚添加的订阅列表。选择好之后,点击界面下方的【立即下载】按钮,Calibre就会开始爬取RSS内容。
  
  抓取成功后,Calibre 会生成一本期刊格式的电子书,并自动存入图书馆。如果您设置了电子邮件推送,Calibre 还会自动将生成的电子书推送到云端,以便自动同步到您的 Kindle。
  
  当然,除了这种手动爬取方式,你还可以通过“定时下载”来定时爬取,比如每周、每月或者每隔指定天数爬取RSS内容,但前提是你要保持电脑开机,让您的计算机保持在线状态。
  另外需要注意的是,网站的一些RSS只输出摘要,所以Calibre只能抓取摘要内容;如果您订阅的 RSS 被屏蔽并且您的网络没有使用代理,则 Failed to crawl 成功。
  Kindle Companion之前写过一篇文章文章——在Google Developer Console上使用KindleEar搭建RSS推送服务器。安装成功后,您可以添加自己喜欢的RSS feed,KindleEar会自动抓取最新的文章,并以期刊的形式定期推送到您的Kindle。那么除此之外,还有其他方法可以抓取 RSS 提要吗?当然有!Calibre 本身有一个 RSS 捕获功能模块,KindleEar 就是基于这个模块编写的。Calibre虽然有命令行操作方式,但对普通用户不是很友好,所以本文仅以界面操作方式为例。
  一、准备提要
  RSS订阅地址多种多样,没有一定的规则,获取RSS地址的方法也不同。一般提供RSS订阅的网站都会提供一个RSS图标,点击即可获取该网站的RSS订阅地址。如果页面上没有这个图标,可以查看网页的源码,找到类似“href=""/&gt;这样的一行,就是RSS地址。另外,一些浏览器如火狐、Opera等会自动获取网站 RSS订阅地址,并在地址栏标出RSS小图标,也可以轻松获取本站RSS地址。
  二、添加提要
  准备好 RSS 提要后,您可以在 Calibre 中添加它们。打开Calibre,在Calibre主界面顶部的功能图标中找到“抓取新闻”,点击右侧的向下箭头,在弹出的菜单中点击“添加自定义新闻源”。
  
  在弹出的对话框中,点击【新建配方】按钮,切换到“添加自定义新闻源”对话框。在“订阅列表标题”中输入一个名称,例如“我的订阅”(此名称是一个类别名称,将收录一组 RSS 提要地址)。
  “最老的文章”可以设置抓取文章的及时性。默认情况下,Calibre 只会在过去 7 天内抓取 文章。如果你想抢更多,你可以自定义更改天数。“每个源的最大 文章 秒数”设置要抓取的最大 文章 秒数。不过需要注意的是,这两个设置受限于网站 RSS的输出方式。比如有些网站的RSS只输出有限个最新的文章,所以无论在Calibre中如何设置都受这个限制,可能无法获取到指定的文章 的数量;
  接下来,我们需要在“将新闻添加到订阅”中添加我们想要保留的 RSS 地址。同样在“Source Name”中输入RSS订阅的名称,如“Kindle Companion”;然后在“Source URL”中输入RSS地址,如“”;最后,点击【添加来源】按钮,在“订阅列表中的新闻”中添加一个RSS订阅。在一个订阅列表中可以抓取多个RSS订阅,因此您可以重复输入多个RSS订阅名称和来源网址并添加多次。
  
  添加RSS提要地址后。点击右下角的【保存】按钮保存并返回“添加自定义动态消息”界面。如需修改,可在左侧列表中选择一项,然后点击【编辑此配方】按钮进行修改。如果要修改它,请单击[删除此配方]按钮将其删除。如果没有问题,可以点击【关闭】按钮返回Calibre主界面。
  三、获取和推送
  设置好 Feed 后,您就可以抓取新闻了。同样,在Calibre主界面上方的功能图标中找到“抓取新闻”,点击,弹出“定期新闻下载”对话框。在左侧列表中找到“自定义”类别,点击展开,可以找到刚刚添加的订阅列表。选择好之后,点击界面下方的【立即下载】按钮,Calibre就会开始爬取RSS内容。
  
  抓取成功后,Calibre 会生成一本期刊格式的电子书,并自动存入图书馆。如果您设置了电子邮件推送,Calibre 还会自动将生成的电子书推送到云端,以便自动同步到您的 Kindle。
  
  当然,除了这种手动爬取方式,你还可以通过“定时下载”来定时爬取,比如每周、每月或者每隔指定天数爬取RSS内容,但前提是你要保持电脑开机,让您的计算机保持在线状态。
  另外需要注意的是,网站的一些RSS只输出摘要,所以Calibre只能抓取摘要内容;如果您订阅的 RSS 被屏蔽并且您的网络没有使用代理,则 Failed to crawl 成功。 查看全部

  抓取网页生成电子书(仅以界面操作方式-RSS功能模块)
  Kindle Companion之前写过一篇文章文章——在Google Developer Console上使用KindleEar搭建RSS推送服务器。安装成功后,您可以添加自己喜欢的RSS feed,KindleEar会自动抓取最新的文章,并以期刊的形式定期推送到您的Kindle。那么除此之外,还有其他方法可以抓取 RSS 提要吗?当然有!Calibre 本身有一个 RSS 捕获功能模块,KindleEar 就是基于这个模块编写的。Calibre虽然有命令行操作方式,但对普通用户不是很友好,所以本文仅以界面操作方式为例。
  一、准备提要
  RSS订阅地址多种多样,没有一定的规则,获取RSS地址的方法也不同。一般提供RSS订阅的网站都会提供一个RSS图标,点击即可获取该网站的RSS订阅地址。如果页面上没有这个图标,可以查看网页的源码,找到类似“href=""/&gt;这样的一行,就是RSS地址。另外,一些浏览器如火狐、Opera等会自动获取网站 RSS订阅地址,并在地址栏标出RSS小图标,也可以轻松获取本站RSS地址。
  二、添加提要
  准备好 RSS 提要后,您可以在 Calibre 中添加它们。打开Calibre,在Calibre主界面顶部的功能图标中找到“抓取新闻”,点击右侧的向下箭头,在弹出的菜单中点击“添加自定义新闻源”。
  
  在弹出的对话框中,点击【新建配方】按钮,切换到“添加自定义新闻源”对话框。在“订阅列表标题”中输入一个名称,例如“我的订阅”(此名称是一个类别名称,将收录一组 RSS 提要地址)。
  “最老的文章”可以设置抓取文章的及时性。默认情况下,Calibre 只会在过去 7 天内抓取 文章。如果你想抢更多,你可以自定义更改天数。“每个源的最大 文章 秒数”设置要抓取的最大 文章 秒数。不过需要注意的是,这两个设置受限于网站 RSS的输出方式。比如有些网站的RSS只输出有限个最新的文章,所以无论在Calibre中如何设置都受这个限制,可能无法获取到指定的文章 的数量;
  接下来,我们需要在“将新闻添加到订阅”中添加我们想要保留的 RSS 地址。同样在“Source Name”中输入RSS订阅的名称,如“Kindle Companion”;然后在“Source URL”中输入RSS地址,如“”;最后,点击【添加来源】按钮,在“订阅列表中的新闻”中添加一个RSS订阅。在一个订阅列表中可以抓取多个RSS订阅,因此您可以重复输入多个RSS订阅名称和来源网址并添加多次。
  
  添加RSS提要地址后。点击右下角的【保存】按钮保存并返回“添加自定义动态消息”界面。如需修改,可在左侧列表中选择一项,然后点击【编辑此配方】按钮进行修改。如果要修改它,请单击[删除此配方]按钮将其删除。如果没有问题,可以点击【关闭】按钮返回Calibre主界面。
  三、获取和推送
  设置好 Feed 后,您就可以抓取新闻了。同样,在Calibre主界面上方的功能图标中找到“抓取新闻”,点击,弹出“定期新闻下载”对话框。在左侧列表中找到“自定义”类别,点击展开,可以找到刚刚添加的订阅列表。选择好之后,点击界面下方的【立即下载】按钮,Calibre就会开始爬取RSS内容。
  
  抓取成功后,Calibre 会生成一本期刊格式的电子书,并自动存入图书馆。如果您设置了电子邮件推送,Calibre 还会自动将生成的电子书推送到云端,以便自动同步到您的 Kindle。
  
  当然,除了这种手动爬取方式,你还可以通过“定时下载”来定时爬取,比如每周、每月或者每隔指定天数爬取RSS内容,但前提是你要保持电脑开机,让您的计算机保持在线状态。
  另外需要注意的是,网站的一些RSS只输出摘要,所以Calibre只能抓取摘要内容;如果您订阅的 RSS 被屏蔽并且您的网络没有使用代理,则 Failed to crawl 成功。
  Kindle Companion之前写过一篇文章文章——在Google Developer Console上使用KindleEar搭建RSS推送服务器。安装成功后,您可以添加自己喜欢的RSS feed,KindleEar会自动抓取最新的文章,并以期刊的形式定期推送到您的Kindle。那么除此之外,还有其他方法可以抓取 RSS 提要吗?当然有!Calibre 本身有一个 RSS 捕获功能模块,KindleEar 就是基于这个模块编写的。Calibre虽然有命令行操作方式,但对普通用户不是很友好,所以本文仅以界面操作方式为例。
  一、准备提要
  RSS订阅地址多种多样,没有一定的规则,获取RSS地址的方法也不同。一般提供RSS订阅的网站都会提供一个RSS图标,点击即可获取该网站的RSS订阅地址。如果页面上没有这个图标,可以查看网页的源码,找到类似“href=""/&gt;这样的一行,就是RSS地址。另外,一些浏览器如火狐、Opera等会自动获取网站 RSS订阅地址,并在地址栏标出RSS小图标,也可以轻松获取本站RSS地址。
  二、添加提要
  准备好 RSS 提要后,您可以在 Calibre 中添加它们。打开Calibre,在Calibre主界面顶部的功能图标中找到“抓取新闻”,点击右侧的向下箭头,在弹出的菜单中点击“添加自定义新闻源”。
  
  在弹出的对话框中,点击【新建配方】按钮,切换到“添加自定义新闻源”对话框。在“订阅列表标题”中输入一个名称,例如“我的订阅”(此名称是一个类别名称,将收录一组 RSS 提要地址)。
  “最老的文章”可以设置抓取文章的及时性。默认情况下,Calibre 只会在过去 7 天内抓取 文章。如果你想抢更多,你可以自定义更改天数。“每个源的最大 文章 秒数”设置要抓取的最大 文章 秒数。不过需要注意的是,这两个设置受限于网站 RSS的输出方式。比如有些网站的RSS只输出有限个最新的文章,所以无论在Calibre中如何设置都受这个限制,可能无法获取到指定的文章 的数量;
  接下来,我们需要在“将新闻添加到订阅”中添加我们想要保留的 RSS 地址。同样在“Source Name”中输入RSS订阅的名称,如“Kindle Companion”;然后在“Source URL”中输入RSS地址,如“”;最后,点击【添加来源】按钮,在“订阅列表中的新闻”中添加一个RSS订阅。在一个订阅列表中可以抓取多个RSS订阅,因此您可以重复输入多个RSS订阅名称和来源网址并添加多次。
  
  添加RSS提要地址后。点击右下角的【保存】按钮保存并返回“添加自定义动态消息”界面。如需修改,可在左侧列表中选择一项,然后点击【编辑此配方】按钮进行修改。如果要修改它,请单击[删除此配方]按钮将其删除。如果没有问题,可以点击【关闭】按钮返回Calibre主界面。
  三、获取和推送
  设置好 Feed 后,您就可以抓取新闻了。同样,在Calibre主界面上方的功能图标中找到“抓取新闻”,点击,弹出“定期新闻下载”对话框。在左侧列表中找到“自定义”类别,点击展开,可以找到刚刚添加的订阅列表。选择好之后,点击界面下方的【立即下载】按钮,Calibre就会开始爬取RSS内容。
  
  抓取成功后,Calibre 会生成一本期刊格式的电子书,并自动存入图书馆。如果您设置了电子邮件推送,Calibre 还会自动将生成的电子书推送到云端,以便自动同步到您的 Kindle。
  
  当然,除了这种手动爬取方式,你还可以通过“定时下载”来定时爬取,比如每周、每月或者每隔指定天数爬取RSS内容,但前提是你要保持电脑开机,让您的计算机保持在线状态。
  另外需要注意的是,网站的一些RSS只输出摘要,所以Calibre只能抓取摘要内容;如果您订阅的 RSS 被屏蔽并且您的网络没有使用代理,则 Failed to crawl 成功。

抓取网页生成电子书(微信朋友圈效果[外链图片转存失败(img-Q117HJ9K-25) )

网站优化优采云 发表了文章 • 0 个评论 • 63 次浏览 • 2022-02-01 13:11 • 来自相关话题

  抓取网页生成电子书(微信朋友圈效果[外链图片转存失败(img-Q117HJ9K-25)
)
  介绍
  朋友圈留着你的数据,留着美好的回忆,记录着我们的每一点成长。从某种意义上说,发朋友圈就是记录生活,感受生活,见证每个人每一步的成长。
  如此珍贵的记忆,何不保存呢?只需一杯咖啡时间,即可一键打印朋友圈。可以是纸质书也可以是电子书,可以长期保存,比拍照好,有时间足迹记忆。
  现在,您可以选择打印电子书或纸质书。如果印刷纸质书,可以找第三方机构购买;如果你打印一本电子书,我们可以自己生成,这样可以节省很多钱。
  部分截图
  在开始编写代码思路之前,我们先来看看最终生成的效果。
  电子书效果
  [外链图片传输失败(img-TH9tBgCt-24)(%E4%B8%80%E9%94%AE%E7%94%9F%E6%88%90%E4%B8%AA% E4 %BA%BA%E5%BE%AE%E4%BF%A1%E6%9C%8B%E5%8F%8B%E5%9C%88%E6%95%B0%E6%8D%AE%E7% 94 %B5%E5%AD%90%E4%B9%A6/图像/页面1.png)]
  [外链图片传输失败(img-Q117HJ9K-25)(%E4%B8%80%E9%94%AE%E7%94%9F%E6%88%90%E4%B8%AA% E4 %BA%BA%E5%BE%AE%E4%BF%A1%E6%9C%8B%E5%8F%8B%E5%9C%88%E6%95%B0%E6%8D%AE%E7% 94 %B5%E5%AD%90%E4%B9%A6/图像/页面2.png)]
  纸书效果
  【外链图片传输失败(img-eyuaB4P-27)(%E4%B8%80%E9%94%AE%E7%94%9F%E6%88%90%E4%B8%AA% E4 %BA%BA%E5%BE%AE%E4%BF%A1%E6%9C%8B%E5%8F%8B%E5%9C%88%E6%95%B0%E6%8D%AE%E7% 94 %B5%E5%AD%90%E4%B9%A6/图像/页面3.jpeg)]
  获取微信书籍链接的代码思路
  看完效果图,开始进入代码编写部分。首先,由于朋友圈数据的隐私性较高,如果手动获取,需要使用root安卓手机解密或解密PC机备份的聊天记录数据库,很难大多数人。所以我们的想法是根据现有数据打印电子书。
  目前已经有第三方服务支持导出朋友圈数据,微信公众号【出版图书】提供了这样的服务。这种服务很有可能是基于安卓模拟器自动化的,我就不赘述了。
  先关注公众号,然后开始制作微信书籍。这个过程将你添加为编辑的朋友,然后你向他打开朋友圈。过一会采集,小编会给你发一个专属链接,这个链接里的内容就是你的Personal Moments。
  生成电子书
  有了这个链接,我们开始打印页面的内容。
  整个过程基于 selenium 自动化。如果你知道 selenium,那么这个过程其实很简单。
  首先,为了引导用户输入微信图书链接,我们采用在浏览器中弹出输入文本框的形式,让用户输入数据。
  首先在selenium中执行js代码,完成js代码中弹出输入文本框的功能。
  进入微信图书链接
  &#39;&#39;&#39;
遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
&#39;&#39;&#39;
# 以网页输入文本框形式提示用户输入url地址
def input_url():
# js脚本
random_id = [str(random.randint(0, 9)) for i in range(0,10)]
random_id = "".join(random_id)
random_id = &#39;id_input_target_url_&#39; + random_id
js = """
// 弹出文本输入框,输入微信书的完整链接地址
target_url = prompt("请输入微信书的完整链接地址","https://");
// 动态创建一个input元素
input_target_url = document.createElement("input");
// 为其设置id,以便在程序中能够获取到它的值
input_target_url.id = "id_input_target_url";
// 插入到当前网页中
document.getElementsByTagName("body")[0].appendChild(input_target_url);
// 设置不可见
document.getElementById("id_input_target_url").style.display = &#39;none&#39;;
// 设置value为target_url的值
document.getElementById("id_input_target_url").value = target_url
"""
js = js.replace(&#39;id_input_target_url&#39;, random_id)
# 执行以上js脚本
driver.execute_script(js)
  上述js代码的具体步骤为:弹出一个输入文本框,创建一个动态元素,随机命名元素的id,将动态元素插入到当前页面,这样就可以通过python 内容中的硒。
  接下来检测selenium中是否存在弹框,如果没有,获取弹框的内容,进行下一步,流程代码如下:
  &#39;&#39;&#39;
遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
&#39;&#39;&#39;
# 执行以上js脚本
driver.execute_script(js)
# 判断弹出框是否存在
while(True):
try:
# 检测是否存在弹出框
alert = driver.switch_to.alert
time.sleep(0.5)
except:
# 如果抛异常,说明当前页面不存在弹出框,即用户点击了取消或者确定
break
# 获取用户输入的链接地址
target_url = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.ID, random_id)))
value = target_url.get_attribute(&#39;value&#39;)
# 删除空格
value = value.strip()
  此时value的值就是弹出框返回的内容。(你可能会问,直接加value=微信书链接可以吗?其实&gt;*header确实是可以的,通过selenium隐藏这个元素的代码如下:
  # 隐藏导航栏,防止影响截图效果
js = &#39;document.querySelector("body > header").style.display="none";&#39;
driver.execute_script(js)
  我们也发现当前页面显示的数据只收录某月的朋友圈数据,而不是所有的朋友圈数据,那么如何显示所有的朋友圈数据呢?通过分析可以看出,当点击“下个月”按钮时,会显示一个新的元素,而原来的元素会被隐藏,隐藏的元素就是上个月的数据。所以我们只需要遍历到上个月,显示之前的所有元素,然后打印出来。那么,如何判断是上个月呢?我们也可以通过分析得知,当不是上个月时,“下个月”的类名是下个月,当是上个月时,“下个月”的类名是下个月禁用,所以我们可以检测它的类名,就知道是不是在上个月了。
  &#39;&#39;&#39;
遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
&#39;&#39;&#39;
# 判断当下一月控件的class name 是否为next-month disable,如果是,则说明翻到最后一月了
page_source = driver.page_source
# 每一个element代表每一页,将每一页中style的display属性改成block,即可见状态
for index, element in enumerate(element_left_list):
# ..在xpath中表示上一级的元素,也就是父元素
parent_element = element.find_element_by_xpath(&#39;..&#39;)
# 获取这个父元素的完整id
parent_element_id = parent_element.get_attribute(&#39;id&#39;)
# 将该父元素更改为可见状态
js = &#39;document.getElementById("{}").style.display="block";&#39;.format(parent_element_id)
driver.execute_script(js)
  但是,这种方式会出现问题。即使我们打印成功,我们也不难保证页面上的所有元素都加载完毕,所以有些元素可能打印后显示不出来,导致不太好看。因此,需要判断加载何时结束。
  【外链图片传输失败(img-gi8vJWty-31)(%E4%B8%80%E9%94%AE%E7%94%9F%E6%88%90%E4%B8%AA% E4 %BA%BA%E5%BE%AE%E4%BF%A1%E6%9C%8B%E5%8F%8B%E5%9C%88%E6%95%B0%E6%8D%AE%E7% 94 %B5%E5%AD%90%E4%B9%A6/图像/页面5.png)]
  通过分析我们知道,网页元素未加载时,会出现“加载中”的提示,而网页元素加载时,该元素是隐藏的。因此,我们可以通过判断元素是否隐藏来知道当前页面元素是否被加载。这部分代码如下:
  # 等待当前页面所有数据加载完毕,正常情况下数据加载完毕后,这个‘加载中’元素会隐藏起来
while (True):
loading_status = WebDriverWait(driver, 20).until(
EC.presence_of_element_located((By.CSS_SELECTOR, &#39;div.j-save-popup.save-popup&#39;)))
if (loading_status.is_displayed() == False):
break
  但是我们也发现,在等待页面元素及时加载后,还是有一些图片没有显示出来。
  【外链图片传输失败(img-aj7nf5ck-34)(%E4%B8%80%E9%94%AE%E7%94%9F%E6%88%90%E4%B8%AA% E4 %BA%BA%E5%BE%AE%E4%BF%A1%E6%9C%8B%E5%8F%8B%E5%9C%88%E6%95%B0%E6%8D%AE%E7% 94 %B5%E5%AD%90%E4%B9%A6/图像/页面6.png)]
  这很令人困惑,为什么?通过分析我们还了解到,当这些图片处于加载状态时,类名是lazy-img。从字面意思上,我们大概可以猜到是延迟加载的意思,也就是用户在那里滑动页面,直到加载完毕。,以节省服务器压力。
  所以我们可以通过一个名为lazy-img的类滑动到每个元素来加载它。所以?一个合适的方法是通过js定位元素,直到所有类名为lazy-img的元素都不存在。
  while(True):
try:
lazy_img = driver.find_elements_by_css_selector(&#39;img.lazy-img&#39;)
js = &#39;document.getElementsByClassName("lazy-img")[0].scrollIntoView();&#39;
driver.execute_script(js)
time.sleep(3)
except:
# 找不到控件img.lazy-img,所以退出循环
break
  其中document.getElementsByClassName("lazy-img")[0]是指document.getElementsByClassName("lazy-img")的第一个元素,scrollIntoView()是指滚动到该元素的位置
  打印电子书
  通过以上步骤,我们成功隐藏了一些可能影响外观的元素,同时也显示了所有需要的元素。接下来,是时候打印零件了。浏览器打印功能可以直接通过js代码调用,而且我们之前已经设置为自动打印pdf格式,所以会自动打印为pdf。但它打印到哪里?这里需要设置浏览器的默认存储位置,保存位置为当前目录。此步骤的代码如下:
  # 默认下载、打印保存路径
&#39;savefile.default_directory&#39;: os.getcwd()
# 调用chrome打印功能
driver.execute_script(&#39;window.print();&#39;)
  打印后设置退出浏览器 driver.quit()
  经测试,电子书为超清版,大小约为16MB,质量还不错。
  如何运行
  # 跳转到当前目录
cd 目录名
# 先卸载依赖库
pip uninstall -y -r requirement.txt
# 再重新安装依赖库
pip install -r requirement.txt
# 开始运行
python main.py 查看全部

  抓取网页生成电子书(微信朋友圈效果[外链图片转存失败(img-Q117HJ9K-25)
)
  介绍
  朋友圈留着你的数据,留着美好的回忆,记录着我们的每一点成长。从某种意义上说,发朋友圈就是记录生活,感受生活,见证每个人每一步的成长。
  如此珍贵的记忆,何不保存呢?只需一杯咖啡时间,即可一键打印朋友圈。可以是纸质书也可以是电子书,可以长期保存,比拍照好,有时间足迹记忆。
  现在,您可以选择打印电子书或纸质书。如果印刷纸质书,可以找第三方机构购买;如果你打印一本电子书,我们可以自己生成,这样可以节省很多钱。
  部分截图
  在开始编写代码思路之前,我们先来看看最终生成的效果。
  电子书效果
  [外链图片传输失败(img-TH9tBgCt-24)(%E4%B8%80%E9%94%AE%E7%94%9F%E6%88%90%E4%B8%AA% E4 %BA%BA%E5%BE%AE%E4%BF%A1%E6%9C%8B%E5%8F%8B%E5%9C%88%E6%95%B0%E6%8D%AE%E7% 94 %B5%E5%AD%90%E4%B9%A6/图像/页面1.png)]
  [外链图片传输失败(img-Q117HJ9K-25)(%E4%B8%80%E9%94%AE%E7%94%9F%E6%88%90%E4%B8%AA% E4 %BA%BA%E5%BE%AE%E4%BF%A1%E6%9C%8B%E5%8F%8B%E5%9C%88%E6%95%B0%E6%8D%AE%E7% 94 %B5%E5%AD%90%E4%B9%A6/图像/页面2.png)]
  纸书效果
  【外链图片传输失败(img-eyuaB4P-27)(%E4%B8%80%E9%94%AE%E7%94%9F%E6%88%90%E4%B8%AA% E4 %BA%BA%E5%BE%AE%E4%BF%A1%E6%9C%8B%E5%8F%8B%E5%9C%88%E6%95%B0%E6%8D%AE%E7% 94 %B5%E5%AD%90%E4%B9%A6/图像/页面3.jpeg)]
  获取微信书籍链接的代码思路
  看完效果图,开始进入代码编写部分。首先,由于朋友圈数据的隐私性较高,如果手动获取,需要使用root安卓手机解密或解密PC机备份的聊天记录数据库,很难大多数人。所以我们的想法是根据现有数据打印电子书。
  目前已经有第三方服务支持导出朋友圈数据,微信公众号【出版图书】提供了这样的服务。这种服务很有可能是基于安卓模拟器自动化的,我就不赘述了。
  先关注公众号,然后开始制作微信书籍。这个过程将你添加为编辑的朋友,然后你向他打开朋友圈。过一会采集,小编会给你发一个专属链接,这个链接里的内容就是你的Personal Moments。
  生成电子书
  有了这个链接,我们开始打印页面的内容。
  整个过程基于 selenium 自动化。如果你知道 selenium,那么这个过程其实很简单。
  首先,为了引导用户输入微信图书链接,我们采用在浏览器中弹出输入文本框的形式,让用户输入数据。
  首先在selenium中执行js代码,完成js代码中弹出输入文本框的功能。
  进入微信图书链接
  &#39;&#39;&#39;
遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
&#39;&#39;&#39;
# 以网页输入文本框形式提示用户输入url地址
def input_url():
# js脚本
random_id = [str(random.randint(0, 9)) for i in range(0,10)]
random_id = "".join(random_id)
random_id = &#39;id_input_target_url_&#39; + random_id
js = """
// 弹出文本输入框,输入微信书的完整链接地址
target_url = prompt("请输入微信书的完整链接地址","https://";);
// 动态创建一个input元素
input_target_url = document.createElement("input");
// 为其设置id,以便在程序中能够获取到它的值
input_target_url.id = "id_input_target_url";
// 插入到当前网页中
document.getElementsByTagName("body")[0].appendChild(input_target_url);
// 设置不可见
document.getElementById("id_input_target_url").style.display = &#39;none&#39;;
// 设置value为target_url的值
document.getElementById("id_input_target_url").value = target_url
"""
js = js.replace(&#39;id_input_target_url&#39;, random_id)
# 执行以上js脚本
driver.execute_script(js)
  上述js代码的具体步骤为:弹出一个输入文本框,创建一个动态元素,随机命名元素的id,将动态元素插入到当前页面,这样就可以通过python 内容中的硒。
  接下来检测selenium中是否存在弹框,如果没有,获取弹框的内容,进行下一步,流程代码如下:
  &#39;&#39;&#39;
遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
&#39;&#39;&#39;
# 执行以上js脚本
driver.execute_script(js)
# 判断弹出框是否存在
while(True):
try:
# 检测是否存在弹出框
alert = driver.switch_to.alert
time.sleep(0.5)
except:
# 如果抛异常,说明当前页面不存在弹出框,即用户点击了取消或者确定
break
# 获取用户输入的链接地址
target_url = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.ID, random_id)))
value = target_url.get_attribute(&#39;value&#39;)
# 删除空格
value = value.strip()
  此时value的值就是弹出框返回的内容。(你可能会问,直接加value=微信书链接可以吗?其实&gt;*header确实是可以的,通过selenium隐藏这个元素的代码如下:
  # 隐藏导航栏,防止影响截图效果
js = &#39;document.querySelector("body > header").style.display="none";&#39;
driver.execute_script(js)
  我们也发现当前页面显示的数据只收录某月的朋友圈数据,而不是所有的朋友圈数据,那么如何显示所有的朋友圈数据呢?通过分析可以看出,当点击“下个月”按钮时,会显示一个新的元素,而原来的元素会被隐藏,隐藏的元素就是上个月的数据。所以我们只需要遍历到上个月,显示之前的所有元素,然后打印出来。那么,如何判断是上个月呢?我们也可以通过分析得知,当不是上个月时,“下个月”的类名是下个月,当是上个月时,“下个月”的类名是下个月禁用,所以我们可以检测它的类名,就知道是不是在上个月了。
  &#39;&#39;&#39;
遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
&#39;&#39;&#39;
# 判断当下一月控件的class name 是否为next-month disable,如果是,则说明翻到最后一月了
page_source = driver.page_source
# 每一个element代表每一页,将每一页中style的display属性改成block,即可见状态
for index, element in enumerate(element_left_list):
# ..在xpath中表示上一级的元素,也就是父元素
parent_element = element.find_element_by_xpath(&#39;..&#39;)
# 获取这个父元素的完整id
parent_element_id = parent_element.get_attribute(&#39;id&#39;)
# 将该父元素更改为可见状态
js = &#39;document.getElementById("{}").style.display="block";&#39;.format(parent_element_id)
driver.execute_script(js)
  但是,这种方式会出现问题。即使我们打印成功,我们也不难保证页面上的所有元素都加载完毕,所以有些元素可能打印后显示不出来,导致不太好看。因此,需要判断加载何时结束。
  【外链图片传输失败(img-gi8vJWty-31)(%E4%B8%80%E9%94%AE%E7%94%9F%E6%88%90%E4%B8%AA% E4 %BA%BA%E5%BE%AE%E4%BF%A1%E6%9C%8B%E5%8F%8B%E5%9C%88%E6%95%B0%E6%8D%AE%E7% 94 %B5%E5%AD%90%E4%B9%A6/图像/页面5.png)]
  通过分析我们知道,网页元素未加载时,会出现“加载中”的提示,而网页元素加载时,该元素是隐藏的。因此,我们可以通过判断元素是否隐藏来知道当前页面元素是否被加载。这部分代码如下:
  # 等待当前页面所有数据加载完毕,正常情况下数据加载完毕后,这个‘加载中’元素会隐藏起来
while (True):
loading_status = WebDriverWait(driver, 20).until(
EC.presence_of_element_located((By.CSS_SELECTOR, &#39;div.j-save-popup.save-popup&#39;)))
if (loading_status.is_displayed() == False):
break
  但是我们也发现,在等待页面元素及时加载后,还是有一些图片没有显示出来。
  【外链图片传输失败(img-aj7nf5ck-34)(%E4%B8%80%E9%94%AE%E7%94%9F%E6%88%90%E4%B8%AA% E4 %BA%BA%E5%BE%AE%E4%BF%A1%E6%9C%8B%E5%8F%8B%E5%9C%88%E6%95%B0%E6%8D%AE%E7% 94 %B5%E5%AD%90%E4%B9%A6/图像/页面6.png)]
  这很令人困惑,为什么?通过分析我们还了解到,当这些图片处于加载状态时,类名是lazy-img。从字面意思上,我们大概可以猜到是延迟加载的意思,也就是用户在那里滑动页面,直到加载完毕。,以节省服务器压力。
  所以我们可以通过一个名为lazy-img的类滑动到每个元素来加载它。所以?一个合适的方法是通过js定位元素,直到所有类名为lazy-img的元素都不存在。
  while(True):
try:
lazy_img = driver.find_elements_by_css_selector(&#39;img.lazy-img&#39;)
js = &#39;document.getElementsByClassName("lazy-img")[0].scrollIntoView();&#39;
driver.execute_script(js)
time.sleep(3)
except:
# 找不到控件img.lazy-img,所以退出循环
break
  其中document.getElementsByClassName("lazy-img")[0]是指document.getElementsByClassName("lazy-img")的第一个元素,scrollIntoView()是指滚动到该元素的位置
  打印电子书
  通过以上步骤,我们成功隐藏了一些可能影响外观的元素,同时也显示了所有需要的元素。接下来,是时候打印零件了。浏览器打印功能可以直接通过js代码调用,而且我们之前已经设置为自动打印pdf格式,所以会自动打印为pdf。但它打印到哪里?这里需要设置浏览器的默认存储位置,保存位置为当前目录。此步骤的代码如下:
  # 默认下载、打印保存路径
&#39;savefile.default_directory&#39;: os.getcwd()
# 调用chrome打印功能
driver.execute_script(&#39;window.print();&#39;)
  打印后设置退出浏览器 driver.quit()
  经测试,电子书为超清版,大小约为16MB,质量还不错。
  如何运行
  # 跳转到当前目录
cd 目录名
# 先卸载依赖库
pip uninstall -y -r requirement.txt
# 再重新安装依赖库
pip install -r requirement.txt
# 开始运行
python main.py

抓取网页生成电子书(网文快捕软件特色介绍的应用)

网站优化优采云 发表了文章 • 0 个评论 • 91 次浏览 • 2022-01-30 23:12 • 来自相关话题

  抓取网页生成电子书(网文快捕软件特色介绍的应用)
  Nettext Quick Capture是一款功能实用的网页保存管理软件。本软件可以帮助用户轻松批量保存和管理网页内容,并帮助制作成电子书格式,方便用户获取和提取网页内容。该软件具有超强的稳定性。最大程度保障数据安全,满足用户各种网页内容获取和保存需求。
  
  软件功能
  1、超强稳定性:数据管理,最重要的是数据安全,可以提供稳定的程序和安全的数据存储方式。经过严格测试的程序具有高度的稳定性。同时,所有数据都存储在数据库中,这也提供了一种安全可靠的数据存储方式。
  2、丰富的导入导出功能:可以导入你的邮件、各种Office文档、PDF、源代码、图片等。同时,您还可以将数据导出为 HTML 文件制作电子书,无需 Cyber​​Article 即可使用。以后即使不再使用,也可以使用您的数据,不用担心数据丢失。
  3、便捷的数据共享:让您轻松共享数据。无论您是在公司还是在家里,您都可以同时使用局域网来管理您的数据。所有操作都自动保存到数据库中,无需任何同步工作。您也可以使用WebShare 组件,您可以将您的数据发布到浏览器上面。这样,即使其他人没有安装该软件,只要有浏览器,就可以查看数据。
  4、强大的开放性:公开数据的存储方式,提供丰富的二次开发接口。您可以使用脚本语言来扩展 Cyber​​Article 的功能,也可以使用高级语言编写各种插件以更好地满足您的需求。
  5、完全支持各种浏览器:支持IE、火狐、谷歌Chrome浏览器、苹果safari浏览器、Opera。各类主流浏览器一网打尽,各类网页一网打尽。
  6、PDF 支持:您可以导入 PDF 文件。导入的PDF文件可以轻松统一搜索。
  7、统一管理功能:将所有导入的文档统一转换为HTML文件,采用统一的管理、检索、编辑方式,让您不再关心格式。
  8、提供谷歌桌面搜索和IFilter插件,让你使用桌面搜索软件统一进行全文搜索。
  9、提供版本控制功能,可以保存每一个历史修改记录。
  软件功能
  保存页面
  1. 网页中的任何资源都可以在IE(包括IE核心浏览器)、火狐、谷歌浏览器、Safari和Opera等支持的浏览器中完整无瑕地保存,特别是还可以保存一些资源,例如 YouTube 上的视频。它已成为网页保存领域流行的优秀软件。
  2. 网页可以批量保存。
  3. 可以导入Office文档:doc、ppt、xls、rtf。
  4. 可以通过全文搜索导入 PDF 文件。
  5.可以导入源代码文件,支持颜色标注。
  5. 可以导入图片、flash等,也支持导入任意文件的附件。
  资源管理
  1. 以 HTML 格式保存所有资源,您可以在全文搜索、批处理、输出和电子书制作中以相同的方式管理它们。
  2.设置一个文章为IE采集,可以添加多个书签,轻松实现多级文档管理。
  3. 您还可以编辑书中的资源。
  4.Nettext Quick Capture可以实现你书中的大量操作,比如分类、标注颜色、批处理等。 查看全部

  抓取网页生成电子书(网文快捕软件特色介绍的应用)
  Nettext Quick Capture是一款功能实用的网页保存管理软件。本软件可以帮助用户轻松批量保存和管理网页内容,并帮助制作成电子书格式,方便用户获取和提取网页内容。该软件具有超强的稳定性。最大程度保障数据安全,满足用户各种网页内容获取和保存需求。
  
  软件功能
  1、超强稳定性:数据管理,最重要的是数据安全,可以提供稳定的程序和安全的数据存储方式。经过严格测试的程序具有高度的稳定性。同时,所有数据都存储在数据库中,这也提供了一种安全可靠的数据存储方式。
  2、丰富的导入导出功能:可以导入你的邮件、各种Office文档、PDF、源代码、图片等。同时,您还可以将数据导出为 HTML 文件制作电子书,无需 Cyber​​Article 即可使用。以后即使不再使用,也可以使用您的数据,不用担心数据丢失。
  3、便捷的数据共享:让您轻松共享数据。无论您是在公司还是在家里,您都可以同时使用局域网来管理您的数据。所有操作都自动保存到数据库中,无需任何同步工作。您也可以使用WebShare 组件,您可以将您的数据发布到浏览器上面。这样,即使其他人没有安装该软件,只要有浏览器,就可以查看数据。
  4、强大的开放性:公开数据的存储方式,提供丰富的二次开发接口。您可以使用脚本语言来扩展 Cyber​​Article 的功能,也可以使用高级语言编写各种插件以更好地满足您的需求。
  5、完全支持各种浏览器:支持IE、火狐、谷歌Chrome浏览器、苹果safari浏览器、Opera。各类主流浏览器一网打尽,各类网页一网打尽。
  6、PDF 支持:您可以导入 PDF 文件。导入的PDF文件可以轻松统一搜索。
  7、统一管理功能:将所有导入的文档统一转换为HTML文件,采用统一的管理、检索、编辑方式,让您不再关心格式。
  8、提供谷歌桌面搜索和IFilter插件,让你使用桌面搜索软件统一进行全文搜索。
  9、提供版本控制功能,可以保存每一个历史修改记录。
  软件功能
  保存页面
  1. 网页中的任何资源都可以在IE(包括IE核心浏览器)、火狐、谷歌浏览器、Safari和Opera等支持的浏览器中完整无瑕地保存,特别是还可以保存一些资源,例如 YouTube 上的视频。它已成为网页保存领域流行的优秀软件。
  2. 网页可以批量保存。
  3. 可以导入Office文档:doc、ppt、xls、rtf。
  4. 可以通过全文搜索导入 PDF 文件。
  5.可以导入源代码文件,支持颜色标注。
  5. 可以导入图片、flash等,也支持导入任意文件的附件。
  资源管理
  1. 以 HTML 格式保存所有资源,您可以在全文搜索、批处理、输出和电子书制作中以相同的方式管理它们。
  2.设置一个文章为IE采集,可以添加多个书签,轻松实现多级文档管理。
  3. 您还可以编辑书中的资源。
  4.Nettext Quick Capture可以实现你书中的大量操作,比如分类、标注颜色、批处理等。

抓取网页生成电子书(网络书籍抓取器是一款能帮助用户下载指定网页的某)

网站优化优采云 发表了文章 • 0 个评论 • 127 次浏览 • 2022-01-30 23:09 • 来自相关话题

  抓取网页生成电子书(网络书籍抓取器是一款能帮助用户下载指定网页的某)
  在线图书抓取器是一款可以帮助用户下载指定网页的某本书和某章的软件。通过在线图书抓取器,可以快速下载小说。同时软件支持断点续传功能,非常方便。可以下载使用。
  
  特征
  可以提取指定小说目录页面的章节信息并进行调整,然后按照章节顺序抓取小说内容,在最合适的时候进行合并。爬取过程可以随时中断,关闭程序后可以恢复上一个任务。
  软件功能
  1、章节调整:提取目录后,可以进行移动、删除、反转等调整操作。调整将直接影响调整后的章节顺序中的最终书籍和输出。
  2、自动重试:爬取过程中,可能由于网络因素导致爬取失败。本程序可能会自动重试直到成功,或者暂时中断爬取(中断后关闭程序不会影响进度),等网络好了再试。
  3、停止和恢复:可以随时停止捕捉过程,退出程序后不影响进度(章节信息会保存在记录中,程序结束后可以恢复捕捉下次运行。注意:需要先用停止键中断,然后退出程序,如果直接退出,将无法恢复)。
  4、一键抓取:又称“傻瓜模式”,基本可以实现全自动抓取合并功能,直接输出最终的文本文件。前面可能需要输入最基本的URL、save bit等信息(会有明显的操作提示),调整章节后也可以使用一键爬取,爬取和合并操作会自动完成。
  5、适用网站:已输入10个适用网站(选择后可快速打开网站找到想要的书),以及相应的代码也可以自动应用,其他小说网站也可以测试,如果一起使用,可以手动添加到设置文件中备份。
  6、轻松制作电子书:可以在设置文件中添加每章名称的前缀和后缀,为后期制作电子书的编目带来极大的方便。
  指示
  1、首先进入你要下载的小说的网页。
  2、输入书名,点击目录提取。
  3、设置保存路径,点击Start Grab开始下载。 查看全部

  抓取网页生成电子书(网络书籍抓取器是一款能帮助用户下载指定网页的某)
  在线图书抓取器是一款可以帮助用户下载指定网页的某本书和某章的软件。通过在线图书抓取器,可以快速下载小说。同时软件支持断点续传功能,非常方便。可以下载使用。
  
  特征
  可以提取指定小说目录页面的章节信息并进行调整,然后按照章节顺序抓取小说内容,在最合适的时候进行合并。爬取过程可以随时中断,关闭程序后可以恢复上一个任务。
  软件功能
  1、章节调整:提取目录后,可以进行移动、删除、反转等调整操作。调整将直接影响调整后的章节顺序中的最终书籍和输出。
  2、自动重试:爬取过程中,可能由于网络因素导致爬取失败。本程序可能会自动重试直到成功,或者暂时中断爬取(中断后关闭程序不会影响进度),等网络好了再试。
  3、停止和恢复:可以随时停止捕捉过程,退出程序后不影响进度(章节信息会保存在记录中,程序结束后可以恢复捕捉下次运行。注意:需要先用停止键中断,然后退出程序,如果直接退出,将无法恢复)。
  4、一键抓取:又称“傻瓜模式”,基本可以实现全自动抓取合并功能,直接输出最终的文本文件。前面可能需要输入最基本的URL、save bit等信息(会有明显的操作提示),调整章节后也可以使用一键爬取,爬取和合并操作会自动完成。
  5、适用网站:已输入10个适用网站(选择后可快速打开网站找到想要的书),以及相应的代码也可以自动应用,其他小说网站也可以测试,如果一起使用,可以手动添加到设置文件中备份。
  6、轻松制作电子书:可以在设置文件中添加每章名称的前缀和后缀,为后期制作电子书的编目带来极大的方便。
  指示
  1、首先进入你要下载的小说的网页。
  2、输入书名,点击目录提取。
  3、设置保存路径,点击Start Grab开始下载。

抓取网页生成电子书(需要编辑的word文档的模板全部做成HTML页面,需要导入的jar包)

网站优化优采云 发表了文章 • 0 个评论 • 85 次浏览 • 2022-01-28 03:06 • 来自相关话题

  抓取网页生成电子书(需要编辑的word文档的模板全部做成HTML页面,需要导入的jar包)
  本来应该用pageOffice在线编辑、保存、转成PDF、完成签名。因为公司预算不够,无法购买pageOffice组件,只能想其他办法。
  需要编辑的word文档的模板是固定的,数量不大,但是格式要求比较严格,所以我决定把所有的模板都做成HTML页面,用iText组件来转换将 HTML 转换为 PDF。
  需要导入的jar包:
  
  首先,需要将模板制作成类似如下的页面。水平线上的数据可以动态填充和编辑。 Freemarker可以用来填充数据。
  
  要使页面可编辑,您可以使用 Html 的 contenteditable="true"
  
  因为页面可以动态编辑,所以我们需要获取编辑页面的源代码
  var outerHTML = document.documentElement.outerHTML;
  这里需要注意的是页面中的所有标签都需要关闭。如果没有关闭,iText组件在转换过程中会报错。页面中的字体需要是Arial,因为iText的转换需要字体文件的支持。所以你还需要在项目中或者服务器上准备好字体文件
  
  身体{
  边距:20px;
  字体系列:SimSun;
  }
  以下是后台收到页面源代码后的处理
  @RequestMapping("acceptPage")
@ResponseBody
public Map acceptPage(HttpServletRequest request) throws Exception {
Map map=new HashMap();
String text = request.getParameter("text");
//使用jsoup来对html源码进行解析,能够校验格式的完整性,并生成一个新的Document
org.jsoup.nodes.Document parse = Jsoup.parse(text);
Elements meta = parse.getElementsByTag("meta");
String html = parse.html();
for (Element link : meta) {//手动为一些标签添加闭合
String s = link.outerHtml();
String s1=s.replace("/>",">");
html=html.replace(s,s1+"");
}
Elements link1 = parse.getElementsByTag("link");
for (Element link : link1) {
String s = link.outerHtml();
String s1=s.replace("/>",">");
html=html.replace(s,s1+"");
}
html=html.replaceAll("&nbsp;","");
try {
String outputFile="E:\\test.pdf";
OutputStream os = new FileOutputStream(outputFile);
//中文宋体文件路径
String fontPath=StringUtil.trimSufffix(fontUrl, File.separator)+File.separator+"simsun.ttc";
//String fontPath= "C:\\simsun.ttc";
ITextRenderer render = new ITextRenderer();
ITextFontResolver fontResolver = render.getFontResolver();
fontResolver.addFont(fontPath, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
render.setDocumentFromString(html);
render.layout();
render.createPDF(os);
os.close();
} catch (Exception e) {
e.printStackTrace();
map.put("state",1);
map.put("msg","文件转换失败!请联系管理员!");
return map;
}
}
  以下是对生成的PDF文件进行签名的操作,不再赘述
  
  这是最终生成的PDF,样式没问题,还实现了编辑保存功能。 查看全部

  抓取网页生成电子书(需要编辑的word文档的模板全部做成HTML页面,需要导入的jar包)
  本来应该用pageOffice在线编辑、保存、转成PDF、完成签名。因为公司预算不够,无法购买pageOffice组件,只能想其他办法。
  需要编辑的word文档的模板是固定的,数量不大,但是格式要求比较严格,所以我决定把所有的模板都做成HTML页面,用iText组件来转换将 HTML 转换为 PDF。
  需要导入的jar包:
  
  首先,需要将模板制作成类似如下的页面。水平线上的数据可以动态填充和编辑。 Freemarker可以用来填充数据。
  
  要使页面可编辑,您可以使用 Html 的 contenteditable="true"
  
  因为页面可以动态编辑,所以我们需要获取编辑页面的源代码
  var outerHTML = document.documentElement.outerHTML;
  这里需要注意的是页面中的所有标签都需要关闭。如果没有关闭,iText组件在转换过程中会报错。页面中的字体需要是Arial,因为iText的转换需要字体文件的支持。所以你还需要在项目中或者服务器上准备好字体文件
  
  身体{
  边距:20px;
  字体系列:SimSun;
  }
  以下是后台收到页面源代码后的处理
  @RequestMapping("acceptPage")
@ResponseBody
public Map acceptPage(HttpServletRequest request) throws Exception {
Map map=new HashMap();
String text = request.getParameter("text");
//使用jsoup来对html源码进行解析,能够校验格式的完整性,并生成一个新的Document
org.jsoup.nodes.Document parse = Jsoup.parse(text);
Elements meta = parse.getElementsByTag("meta");
String html = parse.html();
for (Element link : meta) {//手动为一些标签添加闭合
String s = link.outerHtml();
String s1=s.replace("/>",">");
html=html.replace(s,s1+"");
}
Elements link1 = parse.getElementsByTag("link");
for (Element link : link1) {
String s = link.outerHtml();
String s1=s.replace("/>",">");
html=html.replace(s,s1+"");
}
html=html.replaceAll("&nbsp;","");
try {
String outputFile="E:\\test.pdf";
OutputStream os = new FileOutputStream(outputFile);
//中文宋体文件路径
String fontPath=StringUtil.trimSufffix(fontUrl, File.separator)+File.separator+"simsun.ttc";
//String fontPath= "C:\\simsun.ttc";
ITextRenderer render = new ITextRenderer();
ITextFontResolver fontResolver = render.getFontResolver();
fontResolver.addFont(fontPath, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
render.setDocumentFromString(html);
render.layout();
render.createPDF(os);
os.close();
} catch (Exception e) {
e.printStackTrace();
map.put("state",1);
map.put("msg","文件转换失败!请联系管理员!");
return map;
}
}
  以下是对生成的PDF文件进行签名的操作,不再赘述
  
  这是最终生成的PDF,样式没问题,还实现了编辑保存功能。

抓取网页生成电子书(在线阅读网站URL的规律编程实现的关键(图) )

网站优化优采云 发表了文章 • 0 个评论 • 84 次浏览 • 2022-01-27 23:23 • 来自相关话题

  抓取网页生成电子书(在线阅读网站URL的规律编程实现的关键(图)
)
  @1.必知常识:
  许多网站提供在线阅读书籍,但不提供这些书籍的下载,有些页面受Javascript保护,甚至不允许复制。但是下载这些书真的不是太难,一个小程序就可以了。
  @2.注意在线阅读规则网站URL,这是编程的关键:
  要把网页一个一个刮下来放到txt里,首先要找到网页URL的规则。
  以本书为例《成长比成功更重要》——新浪阅读链接为:[]
  点击序列的部分,它的地址是[]
  点击它的第二部分,地址又是[]
  ……
  点击最后一段,地址是[]
  很容易验证它们的地址都是连续的数字,因此很容易编程自动生成链接地址,只需使用递增的数字生成地址即可。
  @3.下载页面的编程实现:
  Python中有一个urllib包,导入,有urllib.open('#39;),这个函数返回一个文件对象,只要用返回的文件对象调用read()方法,就会返回一个字符串
  @4.得到的页面根据html标签找到对应的文本内容:
  read() 得到的页面是一个字符串。使用该字符串的 find() 方法查找对应的文本内容从 nIdxBeg 开始到 nIdxEnd 结束的位置。您可以轻松地使用字符串切片 strContent[nIdxBeg:nIdxEnd] 在您想要的部分截取页面
  @5.将所有你想要的截取部分保存到一个文件中。
  @6. 最后写一个程序来读取之前写好的文件,使用string函数对html标签进行处理,然后将处理好的html标签的内容写入另一个“电子书成品”文件:
  先写一个字典(dict),将要替换的字符串写入到这个字典中,然后用一个for循环迭代使用str的replace()方法将字典中对应的每一项替换为字典。将记录的每个html标签替换为对应的字符串,写入“完成的文件”——另一个txt,就大功告成了。
  代码贴在这里供参考,变量值可以作为电子书从其他页面下载,稍作修改:
  -------------------------------------------------- -------------------------------------------------- --------------
  makeBook.py 下载页面并截取需要的部分(标题和文章内容,分别通过getTitle和getContent两个函数获取),并写入out.txt文件。
  -------------------------------------------------- -------------------------------------------------- --------------
  nBeg = 30970
nEnd = 31082
strPrefix = &#39;http://vip.book.sina.com.cn/bo ... 39%3B
strSurfix = &#39;.html&#39;
strTitleBeg = """"""
strTitleEnd = """"""
strContentBeg = """"""
strContentEnd = """"""
fout = file(&#39;out.txt&#39;, &#39;w&#39;)
import urllib
def makeUrl(i):
"""Make the url with a number"""
return strPrefix + str(i) + strSurfix
def getContent(strPage):
nIdxBeg = strPage.find(strContentBeg)
nIdxEnd = strPage.find(strContentEnd, nIdxBeg + len(strContentBeg))
if nIdxBeg == -1 or nIdxEnd == -1:
print &#39;Content Not Found!&#39;
return &#39;&#39;
elif nIdxBeg > nIdxEnd:
print &#39;Content begin index larger than end index.&#39;
return &#39;&#39;
else:
return strPage[nIdxBeg + len(strContentBeg): nIdxEnd]
def getTitle(strPage):
nIdxBeg = strPage.find(strTitleBeg)
nIdxEnd = strPage.find(strTitleEnd, nIdxBeg + len(strTitleBeg))
if nIdxBeg == -1 or nIdxEnd == -1:
print &#39;Title Not Found!&#39;
return &#39;&#39;
elif nIdxBeg > nIdxEnd:
print &#39;Title begin index larger than end index.&#39;
return &#39;&#39;
else:
return strPage[nIdxBeg + len(strTitleBeg): nIdxEnd]
def processPage(strPage):
fout.write(getTitle(strPage))
fout.write(&#39;\n\n&#39;)
fout.write(getContent(strPage))
fout.write(&#39;\n- - - - - - - - - - - - - - - - - - - - - - - - - - -\n\n&#39;)
def writeBook():
for i in range(nBeg, nEnd):
print &#39;Downloading file &#39; + str(i)
strUrl = makeUrl(i)
nRetry = 3
strPage = &#39;&#39;
while nRetry:
try:
strPage = urllib.urlopen(strUrl).read()
break
except:
nRetry -= 1
continue
if not nRetry:
print &#39;Failed downloading file &#39; + str(i)
fout.write(&#39;\n\n/#####&#39; + str(i) + &#39;#####\\\\\\n\n&#39;)
else:
processPage(strPage)
if __name__ == &#39;__main__&#39;:
writeBook()
fout.close()
  -------------------------------------------------- -------------------------------------------------- --------------
  formatTxt.py 处理前面生成的“out.txt”文件中的html标签,然后将格式化的内容写入“formated.txt”
  -------------------------------------------------- -------------------------------------------------- --------------
  matRep = {&#39;<p>&#39;:&#39;    &#39;, &#39;&#39;:&#39;\n\n&#39;}
def formatTxt(strContent):
    for i in matRep:
        strContent = strContent.replace(i, matRep[i])
    return strContent
if __name__ == &#39;__main__&#39;:
    strContent = file(&#39;out.txt&#39;, &#39;r&#39;).read()
    file(&#39;formated.txt&#39;, &#39;w&#39;).write(formatTxt(strContent))
</p> 查看全部

  抓取网页生成电子书(在线阅读网站URL的规律编程实现的关键(图)
)
  @1.必知常识:
  许多网站提供在线阅读书籍,但不提供这些书籍的下载,有些页面受Javascript保护,甚至不允许复制。但是下载这些书真的不是太难,一个小程序就可以了。
  @2.注意在线阅读规则网站URL,这是编程的关键:
  要把网页一个一个刮下来放到txt里,首先要找到网页URL的规则。
  以本书为例《成长比成功更重要》——新浪阅读链接为:[]
  点击序列的部分,它的地址是[]
  点击它的第二部分,地址又是[]
  ……
  点击最后一段,地址是[]
  很容易验证它们的地址都是连续的数字,因此很容易编程自动生成链接地址,只需使用递增的数字生成地址即可。
  @3.下载页面的编程实现:
  Python中有一个urllib包,导入,有urllib.open('#39;),这个函数返回一个文件对象,只要用返回的文件对象调用read()方法,就会返回一个字符串
  @4.得到的页面根据html标签找到对应的文本内容:
  read() 得到的页面是一个字符串。使用该字符串的 find() 方法查找对应的文本内容从 nIdxBeg 开始到 nIdxEnd 结束的位置。您可以轻松地使用字符串切片 strContent[nIdxBeg:nIdxEnd] 在您想要的部分截取页面
  @5.将所有你想要的截取部分保存到一个文件中。
  @6. 最后写一个程序来读取之前写好的文件,使用string函数对html标签进行处理,然后将处理好的html标签的内容写入另一个“电子书成品”文件:
  先写一个字典(dict),将要替换的字符串写入到这个字典中,然后用一个for循环迭代使用str的replace()方法将字典中对应的每一项替换为字典。将记录的每个html标签替换为对应的字符串,写入“完成的文件”——另一个txt,就大功告成了。
  代码贴在这里供参考,变量值可以作为电子书从其他页面下载,稍作修改:
  -------------------------------------------------- -------------------------------------------------- --------------
  makeBook.py 下载页面并截取需要的部分(标题和文章内容,分别通过getTitle和getContent两个函数获取),并写入out.txt文件。
  -------------------------------------------------- -------------------------------------------------- --------------
  nBeg = 30970
nEnd = 31082
strPrefix = &#39;http://vip.book.sina.com.cn/bo ... 39%3B
strSurfix = &#39;.html&#39;
strTitleBeg = """"""
strTitleEnd = """"""
strContentBeg = """"""
strContentEnd = """"""
fout = file(&#39;out.txt&#39;, &#39;w&#39;)
import urllib
def makeUrl(i):
"""Make the url with a number"""
return strPrefix + str(i) + strSurfix
def getContent(strPage):
nIdxBeg = strPage.find(strContentBeg)
nIdxEnd = strPage.find(strContentEnd, nIdxBeg + len(strContentBeg))
if nIdxBeg == -1 or nIdxEnd == -1:
print &#39;Content Not Found!&#39;
return &#39;&#39;
elif nIdxBeg > nIdxEnd:
print &#39;Content begin index larger than end index.&#39;
return &#39;&#39;
else:
return strPage[nIdxBeg + len(strContentBeg): nIdxEnd]
def getTitle(strPage):
nIdxBeg = strPage.find(strTitleBeg)
nIdxEnd = strPage.find(strTitleEnd, nIdxBeg + len(strTitleBeg))
if nIdxBeg == -1 or nIdxEnd == -1:
print &#39;Title Not Found!&#39;
return &#39;&#39;
elif nIdxBeg > nIdxEnd:
print &#39;Title begin index larger than end index.&#39;
return &#39;&#39;
else:
return strPage[nIdxBeg + len(strTitleBeg): nIdxEnd]
def processPage(strPage):
fout.write(getTitle(strPage))
fout.write(&#39;\n\n&#39;)
fout.write(getContent(strPage))
fout.write(&#39;\n- - - - - - - - - - - - - - - - - - - - - - - - - - -\n\n&#39;)
def writeBook():
for i in range(nBeg, nEnd):
print &#39;Downloading file &#39; + str(i)
strUrl = makeUrl(i)
nRetry = 3
strPage = &#39;&#39;
while nRetry:
try:
strPage = urllib.urlopen(strUrl).read()
break
except:
nRetry -= 1
continue
if not nRetry:
print &#39;Failed downloading file &#39; + str(i)
fout.write(&#39;\n\n/#####&#39; + str(i) + &#39;#####\\\\\\n\n&#39;)
else:
processPage(strPage)
if __name__ == &#39;__main__&#39;:
writeBook()
fout.close()
  -------------------------------------------------- -------------------------------------------------- --------------
  formatTxt.py 处理前面生成的“out.txt”文件中的html标签,然后将格式化的内容写入“formated.txt”
  -------------------------------------------------- -------------------------------------------------- --------------
  matRep = {&#39;<p>&#39;:&#39;    &#39;, &#39;&#39;:&#39;\n\n&#39;}
def formatTxt(strContent):
    for i in matRep:
        strContent = strContent.replace(i, matRep[i])
    return strContent
if __name__ == &#39;__main__&#39;:
    strContent = file(&#39;out.txt&#39;, &#39;r&#39;).read()
    file(&#39;formated.txt&#39;, &#39;w&#39;).write(formatTxt(strContent))
</p>

抓取网页生成电子书(几个适合新入门学习Python爬虫的网页,总有一款适合你!)

网站优化优采云 发表了文章 • 0 个评论 • 100 次浏览 • 2022-02-11 17:29 • 来自相关话题

  抓取网页生成电子书(几个适合新入门学习Python爬虫的网页,总有一款适合你!)
  推荐几个适合初学者学习Python爬虫的网页。总有一款适合你!
  
  废话不多说,直接上干货吧!
  打开今日头条首页,搜索小姐姐,或者其他你感兴趣的内容,然后点击图库
  
  动态加载的json数据出来,没有反爬。注意,如果不想抓取内容中的图片,只能抓取缩略图,也就是本页显示的图片。它在 json 数据的 image_list 中。注意,将 url 中的列表更改为 origin,这是大局!代码显示如下
  
  图片地址全部出!
  全书网:直接源码匹配相关内容
  直接搜索全书,打开首页,找到一本小说,比如《盗墓笔记》,点击跳转网页,点击开始阅读,所有章节出现,小说内容,网页内容进入章节后出现代码。如下:
  
  
  80本电子书:匹配地址直接下载压缩文件
  80 与上面的全书网类似,但它本身提供了下载功能,可以直接构造下载文件、页面截图和带有小说ID和名称的代码:
  
  
  
  其他类似网站
  类似的网站还有:美子图、美拓、笔趣阁、九九等,连百度图片也可以通过抓包获取数据!
  以上代码都是手写的,没有排版,有兴趣的可以自己打,或者比如小说网站,可以先抓取大类,然后把小说全部拿进去每一类,最后把所有的小说都抓出来,小说的内容,这就是全站爬虫!!!
  
  如果你还有其他合适的网站,希望你可以在评论区分享!一起交流吧! 查看全部

  抓取网页生成电子书(几个适合新入门学习Python爬虫的网页,总有一款适合你!)
  推荐几个适合初学者学习Python爬虫的网页。总有一款适合你!
  
  废话不多说,直接上干货吧!
  打开今日头条首页,搜索小姐姐,或者其他你感兴趣的内容,然后点击图库
  
  动态加载的json数据出来,没有反爬。注意,如果不想抓取内容中的图片,只能抓取缩略图,也就是本页显示的图片。它在 json 数据的 image_list 中。注意,将 url 中的列表更改为 origin,这是大局!代码显示如下
  
  图片地址全部出!
  全书网:直接源码匹配相关内容
  直接搜索全书,打开首页,找到一本小说,比如《盗墓笔记》,点击跳转网页,点击开始阅读,所有章节出现,小说内容,网页内容进入章节后出现代码。如下:
  
  
  80本电子书:匹配地址直接下载压缩文件
  80 与上面的全书网类似,但它本身提供了下载功能,可以直接构造下载文件、页面截图和带有小说ID和名称的代码:
  
  
  
  其他类似网站
  类似的网站还有:美子图、美拓、笔趣阁、九九等,连百度图片也可以通过抓包获取数据!
  以上代码都是手写的,没有排版,有兴趣的可以自己打,或者比如小说网站,可以先抓取大类,然后把小说全部拿进去每一类,最后把所有的小说都抓出来,小说的内容,这就是全站爬虫!!!
  
  如果你还有其他合适的网站,希望你可以在评论区分享!一起交流吧!

抓取网页生成电子书(为什么80%的码农都做不了架构师?(图))

网站优化优采云 发表了文章 • 0 个评论 • 61 次浏览 • 2022-02-11 02:12 • 来自相关话题

  抓取网页生成电子书(为什么80%的码农都做不了架构师?(图))
  为什么 80% 的程序员不能成为架构师? >>>
  
  ####Calibre 制作电子书
  Calibre支持用Python语言编写脚本,爬取网页内容生成电子书,默认为mobi格式
  在爬取新闻下拉菜单中选择添加自定义新闻源New Recipe---切换到高级模式,默认提供代码模板,您只需添加自定义网页源即可编写Recipe文件代码抓取新闻,选择自定义来源,下载即可
  #!/usr/bin/env python
# vim:fileencoding=utf-8
from __future__ import unicode_literals, division, absolute_import, print_function
from calibre.web.feeds.news import BasicNewsRecipe
class liaoxuefeng_python(BasicNewsRecipe):
&#39;&#39;&#39;自定义的Recipe都继承自Calibre提供的基类BasicNewsRecipe,必须实现parse_index()方法
&#39;&#39;&#39;
#电子书名称
title = &#39;廖雪峰Python教程3&#39;
description = &#39;python教程&#39;
max_articles_per_feed = 200
# 设置每隔1s下载一个章节,默认值为0,当网络不好时,可以把这个值调大点
delay = 1
url_prefix = &#39;http://www.liaoxuefeng.com&#39;
no_stylesheets = True
#抓取每一个页面中保留的tag
keep_only_tags = [{ &#39;class&#39;: &#39;x-content&#39; }]
#页面中删除的Tag
remove_tags=[{&#39;class&#39;:&#39;x-wiki-info&#39;}]
#指定Tag之后的元素都被删除
remove_tags_after=[{&#39;class&#39;:&#39;x-wiki-content&#39;}]

def get_title(self, link):
return link.contents[0].strip()

def parse_index(self):
#index_to_soup()由BasicNewsRecipe实现,使用Beautifulsoup抓取一个网址,并获得这个网页内容的soup对象
soup = self.index_to_soup(&#39;http://www.liaoxuefeng.com/wik ... %2339;)
# 左侧导航栏
div = soup.find(&#39;div&#39;, { &#39;class&#39;: &#39;x-sidebar-left-content&#39; })
# 找到每一个章节的标题和对应的URL,Calibre会下载每一个URL的html,使用上面的类属性进行解析
articles = []
for link in div.findAll(&#39;a&#39;):
til = self.get_title(link)
url = self.url_prefix + link[&#39;href&#39;]
a = { &#39;title&#39;: til, &#39;url&#39;: url }

articles.append(a)
#返回一个列表,这个列表中是多个元组,每个元组是书的一卷(&#39;廖雪峰python教程&#39;, articles),每一卷中又有多个章节articles
tutorial = [(&#39;廖雪峰python教程&#39;, articles)]

return tutorial
  参考:使用calibre和python制作电子书---Python和Git教程
  转载于: 查看全部

  抓取网页生成电子书(为什么80%的码农都做不了架构师?(图))
  为什么 80% 的程序员不能成为架构师? >>>
  
  ####Calibre 制作电子书
  Calibre支持用Python语言编写脚本,爬取网页内容生成电子书,默认为mobi格式
  在爬取新闻下拉菜单中选择添加自定义新闻源New Recipe---切换到高级模式,默认提供代码模板,您只需添加自定义网页源即可编写Recipe文件代码抓取新闻,选择自定义来源,下载即可
  #!/usr/bin/env python
# vim:fileencoding=utf-8
from __future__ import unicode_literals, division, absolute_import, print_function
from calibre.web.feeds.news import BasicNewsRecipe
class liaoxuefeng_python(BasicNewsRecipe):
&#39;&#39;&#39;自定义的Recipe都继承自Calibre提供的基类BasicNewsRecipe,必须实现parse_index()方法
&#39;&#39;&#39;
#电子书名称
title = &#39;廖雪峰Python教程3&#39;
description = &#39;python教程&#39;
max_articles_per_feed = 200
# 设置每隔1s下载一个章节,默认值为0,当网络不好时,可以把这个值调大点
delay = 1
url_prefix = &#39;http://www.liaoxuefeng.com&#39;
no_stylesheets = True
#抓取每一个页面中保留的tag
keep_only_tags = [{ &#39;class&#39;: &#39;x-content&#39; }]
#页面中删除的Tag
remove_tags=[{&#39;class&#39;:&#39;x-wiki-info&#39;}]
#指定Tag之后的元素都被删除
remove_tags_after=[{&#39;class&#39;:&#39;x-wiki-content&#39;}]

def get_title(self, link):
return link.contents[0].strip()

def parse_index(self):
#index_to_soup()由BasicNewsRecipe实现,使用Beautifulsoup抓取一个网址,并获得这个网页内容的soup对象
soup = self.index_to_soup(&#39;http://www.liaoxuefeng.com/wik ... %2339;)
# 左侧导航栏
div = soup.find(&#39;div&#39;, { &#39;class&#39;: &#39;x-sidebar-left-content&#39; })
# 找到每一个章节的标题和对应的URL,Calibre会下载每一个URL的html,使用上面的类属性进行解析
articles = []
for link in div.findAll(&#39;a&#39;):
til = self.get_title(link)
url = self.url_prefix + link[&#39;href&#39;]
a = { &#39;title&#39;: til, &#39;url&#39;: url }

articles.append(a)
#返回一个列表,这个列表中是多个元组,每个元组是书的一卷(&#39;廖雪峰python教程&#39;, articles),每一卷中又有多个章节articles
tutorial = [(&#39;廖雪峰python教程&#39;, articles)]

return tutorial
  参考:使用calibre和python制作电子书---Python和Git教程
  转载于:

抓取网页生成电子书(廖雪峰的Python教程爬下来做成PDF电子书方便大家离线阅读 )

网站优化优采云 发表了文章 • 0 个评论 • 102 次浏览 • 2022-02-10 16:13 • 来自相关话题

  抓取网页生成电子书(廖雪峰的Python教程爬下来做成PDF电子书方便大家离线阅读
)
  看来写爬虫并不比使用 Python 更合适。Python社区提供的爬虫工具琳琅满目,你可以分分钟写一个爬虫,里面有各种可以直接使用的库。今天,我正在考虑写一个爬虫。,爬取廖雪峰的Python教程,制作成PDF电子书,供大家离线阅读。
  在开始写爬虫之前,我们先分析一下网站1的页面结构。页面左侧是教程目录的大纲,每个URL对应右侧一个文章,右上角是文章的标题,中间是正文部分文章的,body的内容是我们关注的重点,我们要爬取的数据是所有网页的body部分,底部是用户的评论区,评论区对我们来说很重要它没有用,所以可以忽略。
  
  工具准备
  搞清楚网站的基本结构后,就可以开始准备爬虫所依赖的工具包了。request和beautifulsoup是爬虫的两大神器,reuqests用于网络请求,beautifulsoup用于操作html数据。有了这两个穿梭机,工作敏捷,我们不需要像scrapy这样的爬虫框架,有点像小程序杀鸡。另外,既然html文件转换成pdf,就必须有相应的库支持,wkhtmltopdf是一个很好的工具,可以用于多平台html到pdf的转换,pdfkit是wkhtmltopdf的Python包。先安装以下依赖,再安装wkhtmltopdf
  pip install requests
pip install beautifulsoup
pip install pdfkit
  安装 wkhtmltopdf
  Windows平台,直接从wkhtmltopdf 2官网下载稳定版进行安装。安装完成后,将程序的执行路径添加到系统环境的$PATH变量中。否则,如果pdfkit找不到wkhtmltopdf,就会出现“No wkhtmltopdf executable found”的错误。Ubuntu和CentOS可以直接从命令行安装
  $ sudo apt-get install wkhtmltopdf # ubuntu
$ sudo yum intsall wkhtmltopdf # centos
  爬虫实现
  一切准备就绪后,就可以开始编码了,不过最好在写代码之前整理一下思路。该程序的目的是将所有URL对应的html正文部分保存在本地,然后使用pdfkit将这些文件转换成pdf文件。让我们拆分任务。首先将一个URL对应的html body保存到本地,然后找到所有的URL,进行同样的操作。
  使用Chrome浏览器找到页面body部分的标签,按F12找到文字对应的div标签:
  , div 是页面的正文内容。在本地使用请求加载整个页面后,您可以使用 beautifulsoup 操作 HTML dom 元素以提取正文内容。
  
  具体实现代码如下:使用soup.find_all函数找到body标签,然后将body部分的内容保存到a.html文件中。
  def parse_url_to_html(url):
response = requests.get(url)
soup = BeautifulSoup(response.content, "html5lib")
body = soup.find_all(class_="x-wiki-content")[0]
html = str(body)
with open("a.html", 'wb') as f:
f.write(html)
  第二步是解析页面左侧的所有URL。同样的方法,找到左侧的菜单选项卡
  
  具体代码实现逻辑:因为页面上有uk-nav uk-nav-side的两个类属性,真正的目录列表是第二个。获取所有的url,第一步也写了url转html的功能。
  def get_url_list():
"""
获取所有URL目录列表
"""
response = requests.get("http://www.liaoxuefeng.com/wik ... 6quot;)
soup = BeautifulSoup(response.content, "html5lib")
menu_tag = soup.find_all(class_="uk-nav uk-nav-side")[1]
urls = []
for li in menu_tag.find_all("li"):
url = "http://www.liaoxuefeng.com" + li.a.get('href')
urls.append(url)
return urls
  最后一步是将html转换为pdf文件。转换成pdf文件很简单,因为pdfkit封装了所有的逻辑,只需要调用函数pdfkit.from_file
  def save_pdf(htmls):
"""
把所有html文件转换成pdf文件
"""
options = {
'page-size': 'Letter',
'encoding': "UTF-8",
'custom-header': [
('Accept-Encoding', 'gzip')
]
}
pdfkit.from_file(htmls, file_name, options=options)
  执行save_pdf函数,生成电子书pdf文件,效果图为:
  
  总结
  总代码量不到 50 行,但是,等等,上面给出的代码省略了一些细节,比如如何获取 文章 的标题,body 内容的 img 标签使用相对路径,如果如果要在pdf中正常显示图片,需要将相对路径改为绝对路径,并删除保存的html临时文件。这些细节都在github上。
  完整代码可以在 github 上下载。该代码适用于Windows平台的个人测试。欢迎 fork 下载并改进它。GitHub地址3,无法访问GitHub的同学可以使用码云4,关注公众号“程序员微站”并回复可以免费下载阅读《廖雪峰Python教程》电子书PDF文件“PDF”。
  本文首发于公众号“程序员的微站”(id:VTtalk),分享Python干货的温暖内容
  博客地址:
   查看全部

  抓取网页生成电子书(廖雪峰的Python教程爬下来做成PDF电子书方便大家离线阅读
)
  看来写爬虫并不比使用 Python 更合适。Python社区提供的爬虫工具琳琅满目,你可以分分钟写一个爬虫,里面有各种可以直接使用的库。今天,我正在考虑写一个爬虫。,爬取廖雪峰的Python教程,制作成PDF电子书,供大家离线阅读。
  在开始写爬虫之前,我们先分析一下网站1的页面结构。页面左侧是教程目录的大纲,每个URL对应右侧一个文章,右上角是文章的标题,中间是正文部分文章的,body的内容是我们关注的重点,我们要爬取的数据是所有网页的body部分,底部是用户的评论区,评论区对我们来说很重要它没有用,所以可以忽略。
  
  工具准备
  搞清楚网站的基本结构后,就可以开始准备爬虫所依赖的工具包了。request和beautifulsoup是爬虫的两大神器,reuqests用于网络请求,beautifulsoup用于操作html数据。有了这两个穿梭机,工作敏捷,我们不需要像scrapy这样的爬虫框架,有点像小程序杀鸡。另外,既然html文件转换成pdf,就必须有相应的库支持,wkhtmltopdf是一个很好的工具,可以用于多平台html到pdf的转换,pdfkit是wkhtmltopdf的Python包。先安装以下依赖,再安装wkhtmltopdf
  pip install requests
pip install beautifulsoup
pip install pdfkit
  安装 wkhtmltopdf
  Windows平台,直接从wkhtmltopdf 2官网下载稳定版进行安装。安装完成后,将程序的执行路径添加到系统环境的$PATH变量中。否则,如果pdfkit找不到wkhtmltopdf,就会出现“No wkhtmltopdf executable found”的错误。Ubuntu和CentOS可以直接从命令行安装
  $ sudo apt-get install wkhtmltopdf # ubuntu
$ sudo yum intsall wkhtmltopdf # centos
  爬虫实现
  一切准备就绪后,就可以开始编码了,不过最好在写代码之前整理一下思路。该程序的目的是将所有URL对应的html正文部分保存在本地,然后使用pdfkit将这些文件转换成pdf文件。让我们拆分任务。首先将一个URL对应的html body保存到本地,然后找到所有的URL,进行同样的操作。
  使用Chrome浏览器找到页面body部分的标签,按F12找到文字对应的div标签:
  , div 是页面的正文内容。在本地使用请求加载整个页面后,您可以使用 beautifulsoup 操作 HTML dom 元素以提取正文内容。
  
  具体实现代码如下:使用soup.find_all函数找到body标签,然后将body部分的内容保存到a.html文件中。
  def parse_url_to_html(url):
response = requests.get(url)
soup = BeautifulSoup(response.content, "html5lib")
body = soup.find_all(class_="x-wiki-content")[0]
html = str(body)
with open("a.html", 'wb') as f:
f.write(html)
  第二步是解析页面左侧的所有URL。同样的方法,找到左侧的菜单选项卡
  
  具体代码实现逻辑:因为页面上有uk-nav uk-nav-side的两个类属性,真正的目录列表是第二个。获取所有的url,第一步也写了url转html的功能。
  def get_url_list():
"""
获取所有URL目录列表
"""
response = requests.get("http://www.liaoxuefeng.com/wik ... 6quot;)
soup = BeautifulSoup(response.content, "html5lib")
menu_tag = soup.find_all(class_="uk-nav uk-nav-side")[1]
urls = []
for li in menu_tag.find_all("li"):
url = "http://www.liaoxuefeng.com" + li.a.get('href')
urls.append(url)
return urls
  最后一步是将html转换为pdf文件。转换成pdf文件很简单,因为pdfkit封装了所有的逻辑,只需要调用函数pdfkit.from_file
  def save_pdf(htmls):
"""
把所有html文件转换成pdf文件
"""
options = {
'page-size': 'Letter',
'encoding': "UTF-8",
'custom-header': [
('Accept-Encoding', 'gzip')
]
}
pdfkit.from_file(htmls, file_name, options=options)
  执行save_pdf函数,生成电子书pdf文件,效果图为:
  
  总结
  总代码量不到 50 行,但是,等等,上面给出的代码省略了一些细节,比如如何获取 文章 的标题,body 内容的 img 标签使用相对路径,如果如果要在pdf中正常显示图片,需要将相对路径改为绝对路径,并删除保存的html临时文件。这些细节都在github上。
  完整代码可以在 github 上下载。该代码适用于Windows平台的个人测试。欢迎 fork 下载并改进它。GitHub地址3,无法访问GitHub的同学可以使用码云4,关注公众号“程序员微站”并回复可以免费下载阅读《廖雪峰Python教程》电子书PDF文件“PDF”。
  本文首发于公众号“程序员的微站”(id:VTtalk),分享Python干货的温暖内容
  博客地址:
  

抓取网页生成电子书(行行网电子书多线程爬取-撸代码代码非常简单-写在前面 )

网站优化优采云 发表了文章 • 0 个评论 • 86 次浏览 • 2022-02-09 10:07 • 来自相关话题

  抓取网页生成电子书(行行网电子书多线程爬取-撸代码代码非常简单-写在前面
)
  星星网电子书多线程爬取——写在前面
  最近想找几本电子书看,翻了翻,然后找到了一个叫周渡的网站,网站很好,简单清爽,有书很多,而且都是在百度上打开的,网盘可以直接下载,更新速度也还行,就爬了上去。这篇文章可以文章学习,这么好的分享网站,尽量不要爬,会影响别人访问速度。需要数据的可以在我的博客下评论,我会发给你,QQ,邮箱什么的。
  
  
  这个网站页面的逻辑很简单。我翻阅了图书详情页面,它看起来是这样的。我们只需要循环生成这些页面的链接,然后就可以爬取了。为了速度,我使用多线程。, 你可以试试看。如果想爬取后面的数据,就在本博客下方发表评论,不要乱搞别人的服务器。
  11393.html11.html。…
  星星网电子书多线程爬取-代码
  代码非常简单。以我们之前的教程做铺垫,用很少的代码就可以实现完整的功能。最后将采集的内容写入csv文件,(什么是csv,百度知道)这段代码是IO密集型操作,我们使用aiohttp模块来编写。
  步骤1
  连接 URL 并启动线程。
  
  上面的代码可以同步开启N个多线程,但是这样很容易导致其他人的服务器瘫痪。因此,我们必须限制并发数。对于以下代码,请尝试将其放在指定位置。
  
  第2步
  为了处理捕获的 Web 源代码并提取我们想要的元素,我添加了一个使用 lxml 提取数据的方法。
  
  第 3 步
  数据格式化后,将其保存为 csv 文件,然后收工!
  
  星星网电子书多线程爬取——运行代码并查看结果
  
   查看全部

  抓取网页生成电子书(行行网电子书多线程爬取-撸代码代码非常简单-写在前面
)
  星星网电子书多线程爬取——写在前面
  最近想找几本电子书看,翻了翻,然后找到了一个叫周渡的网站,网站很好,简单清爽,有书很多,而且都是在百度上打开的,网盘可以直接下载,更新速度也还行,就爬了上去。这篇文章可以文章学习,这么好的分享网站,尽量不要爬,会影响别人访问速度。需要数据的可以在我的博客下评论,我会发给你,QQ,邮箱什么的。
  
  
  这个网站页面的逻辑很简单。我翻阅了图书详情页面,它看起来是这样的。我们只需要循环生成这些页面的链接,然后就可以爬取了。为了速度,我使用多线程。, 你可以试试看。如果想爬取后面的数据,就在本博客下方发表评论,不要乱搞别人的服务器。
  11393.html11.html。…
  星星网电子书多线程爬取-代码
  代码非常简单。以我们之前的教程做铺垫,用很少的代码就可以实现完整的功能。最后将采集的内容写入csv文件,(什么是csv,百度知道)这段代码是IO密集型操作,我们使用aiohttp模块来编写。
  步骤1
  连接 URL 并启动线程。
  
  上面的代码可以同步开启N个多线程,但是这样很容易导致其他人的服务器瘫痪。因此,我们必须限制并发数。对于以下代码,请尝试将其放在指定位置。
  
  第2步
  为了处理捕获的 Web 源代码并提取我们想要的元素,我添加了一个使用 lxml 提取数据的方法。
  
  第 3 步
  数据格式化后,将其保存为 csv 文件,然后收工!
  
  星星网电子书多线程爬取——运行代码并查看结果
  
  

抓取网页生成电子书(国家数据国家统计数据库全新改版,提供了哪些服务? )

网站优化优采云 发表了文章 • 0 个评论 • 56 次浏览 • 2022-02-09 09:25 • 来自相关话题

  抓取网页生成电子书(国家数据国家统计数据库全新改版,提供了哪些服务?
)
  给大家推荐一些有趣又好用的网站。
  如在线古籍图书馆、全国数据网站、地球大数据共享服务平台、在线街道设计共享平台-Streetmix、在线问卷调查工具-Golden data、开源地图下载-OpenStreetMap、腾讯位置大数据、快速访问Site SU模型-CAD Mapper、上海1949年与2019年对比-历史航拍图、在线词云生成工具-微词云等。
  
  标签系统
  
  规划资源和工具相册页面
  电子书搜索引擎 - Kumo Search
  聚魔搜书是一个电子书搜索引擎,使用这个搜索引擎你可以找到各种格式的电子书,包括mobi、epub、pdf、azw3等。
  网址:
  
  (点击图片进入网站)
  网上古籍图书馆 - 书柜
  Shuge() 是一个免费开放的在线古籍图书馆。致力于开放分享、介绍、推荐珍贵古籍、善本,鼓励文化艺术作品数字化归档。分享内容仅限于公共版权领域的书籍(参考标准伯尔尼公约);最大限度地还原图书的质量和内容;这个计划让大家可以自由自在地享受那些来之不易的书籍。让大家感受人类文明的进步。
  BookGrid出版的书籍以PDF格式为主,带有高清彩色图片。大多数书籍的单页宽度超过1400像素,双页宽度超过2400像素。宋元时期出版书籍,明清珍本至现代版。
  网址:
  
  (点击图片进入网站)
  国家数据
  新版国家统计数据库提供以下服务:
  网址:
  
  (点击图片进入网站)
  地球大数据共享服务平台
  中科院发布的“地球大数据科学工程”A类战略性先导科技项目——地球大数据共享服务平台2018年度成果。
  地球大数据共享服务平台是一个整合多领域海量数据,服务于数据驱动的科学发现和决策支持的科学平台。该平台以共享的方式为全球用户提供具有全球唯一标识的系统化、多样化、动态化、连续化、标准化的地球大数据。目前共享数据总量约5PB,包括地球观测数据1.8PB、生物生态数据2.6PB、大气海洋数据0.4PB、基础地理数据和地面观测数据0.2PB;地层和古生物数据库有49万条数据记录,360万种中国生物物种目录,42万条微生物资源库,10亿组学数据目前在线。现在,用户可以在线检索 40% 的数据。随着硬件条件的不断提升,平台数据将陆续上线,每年更新3PB的数据量。
  数据共享服务系统网址:
  
  (点击图片进入网站)
  在线问卷调查工具 - Gold Data
  这是一款在线表单工具,直接在浏览器中搜索即可找到,可以大大提高我们日常工作的效率。相信做新媒体运营的小伙伴一定会遇到一些活动报名、问卷调查、反馈等问题。让我们谈谈最常见的事件注册案例之一。
  网址:
  
  (点击图片进入网站)
  在线街道设计分享平台-Streetmix
  Streetmix 是一个免费的在线街道设计分享平台,提供基本街道设计元素和拖放功能作为基本街道设计模板,允许用户选择道路宽度并添加或删除所有街道元素,从轻轨到公路标志,并提供了多项调整功能来满足用户的需求,其扁平化的风格也会让人爱不释手。
  
  (点击图片进入网站)
  日地图
  国家地理信息公共服务平台“天图”(以下简称“天图”)是国家基础地理信息中心建设的网络化地理信息共享和服务门户。信息部门以及相关政府部门、企事业单位、社会团体、公共地理信息公共服务资源,为各类用户提供权威、规范、统一的在线地理信息综合服务。
  网址:
  
  (点击图片进入网站)
  开源地图下载 - OpenStreetMap
  开源地图——openstreetmap,简称OSM。它收录的图层包括公路、铁路、水系、水域、建筑物、边界、建筑物和其他图层。我们不仅可以免费下载城市数据,还可以下载全球数据。
  OSM提供四种主题地图,分别对应标准地图、自行车地图、交通地图和人道主义地图,您可以根据需要选择相应的主题地图。
  OSM主要提供四种下载方式:Simple、Overpass API、OSM Planet和Geofabrik下载。
  
  (点击图片进入网站)
  腾讯位置大数据
  腾讯位置大数据官网包括区域人气、位置流量、人口迁移、市政应急与决策、商铺建设、个人出行、位置大数据应用等。
  网址:
  
  (点击图片进入网站)
  百度地图眼
  百度地图以海量时空大数据为基础,结合人工智能技术,为不同行业提供从宏观到微观的人、地、物的人口挖掘、客群分析、旅游研究、位置评估等研究。已深入应用于城市规划、人口统计、政府、零售餐饮、广告、文化旅游、高校智库、公安应急等行业。
  网址:
  
  (点击图片进入网站)
  快速获取站点SU模型-CAD Mapper
  这个网站可以在线生成站点模型,可下载的格式包括CAD、SU、RHINO。
  
  (点击图片进入网站)
  1949年与2019年的上海对比——历史航拍
  网站可以看到1949年到2019年、1979年到2019年的上海航拍图对比。
  网址:
  
  (点击图片进入网站)
  在线多媒体转换工具 - CloudConvert
  CloudConvert 是另一个强大的在线多媒体转换工具。
  支持215种文件的转换,音频、视频、文档、电子书、压缩包、图片、PPT、网页等。反正就这么多,你自己查吧。
  只需选择本地文件(或指定网盘),然后选择要转换的文件,即可转换。效率君实际测试了一下,速度很快。
  它还有一个非常黑科技的功能。您可以选择一个网盘来指定一个文件夹。添加新文件时,它可以自动转换。没有黑科技,真正解放了生产力。(但它似乎只适用于付费用户)
  它还有一个 Chrome 插件和一个 iOS 应用程序。
  网址:
  
  (点击图片进入网站)
  在线词云生成器 - 微词云
  Mini Tag Cloud 是一个非常实用的应用程序。简单的在线词云生成工具,无论你是设计师、操作员、学生还是数据分析师,都可以轻松制作出吸睛的词云图。
  网址:
  
  (点击图片进入网站)
  网页介绍:登录,在首页查看相册内容
  或点击网址直接进入网页相册页面
   查看全部

  抓取网页生成电子书(国家数据国家统计数据库全新改版,提供了哪些服务?
)
  给大家推荐一些有趣又好用的网站。
  如在线古籍图书馆、全国数据网站、地球大数据共享服务平台、在线街道设计共享平台-Streetmix、在线问卷调查工具-Golden data、开源地图下载-OpenStreetMap、腾讯位置大数据、快速访问Site SU模型-CAD Mapper、上海1949年与2019年对比-历史航拍图、在线词云生成工具-微词云等。
  
  标签系统
  
  规划资源和工具相册页面
  电子书搜索引擎 - Kumo Search
  聚魔搜书是一个电子书搜索引擎,使用这个搜索引擎你可以找到各种格式的电子书,包括mobi、epub、pdf、azw3等。
  网址:
  
  (点击图片进入网站)
  网上古籍图书馆 - 书柜
  Shuge() 是一个免费开放的在线古籍图书馆。致力于开放分享、介绍、推荐珍贵古籍、善本,鼓励文化艺术作品数字化归档。分享内容仅限于公共版权领域的书籍(参考标准伯尔尼公约);最大限度地还原图书的质量和内容;这个计划让大家可以自由自在地享受那些来之不易的书籍。让大家感受人类文明的进步。
  BookGrid出版的书籍以PDF格式为主,带有高清彩色图片。大多数书籍的单页宽度超过1400像素,双页宽度超过2400像素。宋元时期出版书籍,明清珍本至现代版。
  网址:
  
  (点击图片进入网站)
  国家数据
  新版国家统计数据库提供以下服务:
  网址:
  
  (点击图片进入网站)
  地球大数据共享服务平台
  中科院发布的“地球大数据科学工程”A类战略性先导科技项目——地球大数据共享服务平台2018年度成果。
  地球大数据共享服务平台是一个整合多领域海量数据,服务于数据驱动的科学发现和决策支持的科学平台。该平台以共享的方式为全球用户提供具有全球唯一标识的系统化、多样化、动态化、连续化、标准化的地球大数据。目前共享数据总量约5PB,包括地球观测数据1.8PB、生物生态数据2.6PB、大气海洋数据0.4PB、基础地理数据和地面观测数据0.2PB;地层和古生物数据库有49万条数据记录,360万种中国生物物种目录,42万条微生物资源库,10亿组学数据目前在线。现在,用户可以在线检索 40% 的数据。随着硬件条件的不断提升,平台数据将陆续上线,每年更新3PB的数据量。
  数据共享服务系统网址:
  
  (点击图片进入网站)
  在线问卷调查工具 - Gold Data
  这是一款在线表单工具,直接在浏览器中搜索即可找到,可以大大提高我们日常工作的效率。相信做新媒体运营的小伙伴一定会遇到一些活动报名、问卷调查、反馈等问题。让我们谈谈最常见的事件注册案例之一。
  网址:
  
  (点击图片进入网站)
  在线街道设计分享平台-Streetmix
  Streetmix 是一个免费的在线街道设计分享平台,提供基本街道设计元素和拖放功能作为基本街道设计模板,允许用户选择道路宽度并添加或删除所有街道元素,从轻轨到公路标志,并提供了多项调整功能来满足用户的需求,其扁平化的风格也会让人爱不释手。
  
  (点击图片进入网站)
  日地图
  国家地理信息公共服务平台“天图”(以下简称“天图”)是国家基础地理信息中心建设的网络化地理信息共享和服务门户。信息部门以及相关政府部门、企事业单位、社会团体、公共地理信息公共服务资源,为各类用户提供权威、规范、统一的在线地理信息综合服务。
  网址:
  
  (点击图片进入网站)
  开源地图下载 - OpenStreetMap
  开源地图——openstreetmap,简称OSM。它收录的图层包括公路、铁路、水系、水域、建筑物、边界、建筑物和其他图层。我们不仅可以免费下载城市数据,还可以下载全球数据。
  OSM提供四种主题地图,分别对应标准地图、自行车地图、交通地图和人道主义地图,您可以根据需要选择相应的主题地图。
  OSM主要提供四种下载方式:Simple、Overpass API、OSM Planet和Geofabrik下载。
  
  (点击图片进入网站)
  腾讯位置大数据
  腾讯位置大数据官网包括区域人气、位置流量、人口迁移、市政应急与决策、商铺建设、个人出行、位置大数据应用等。
  网址:
  
  (点击图片进入网站)
  百度地图眼
  百度地图以海量时空大数据为基础,结合人工智能技术,为不同行业提供从宏观到微观的人、地、物的人口挖掘、客群分析、旅游研究、位置评估等研究。已深入应用于城市规划、人口统计、政府、零售餐饮、广告、文化旅游、高校智库、公安应急等行业。
  网址:
  
  (点击图片进入网站)
  快速获取站点SU模型-CAD Mapper
  这个网站可以在线生成站点模型,可下载的格式包括CAD、SU、RHINO。
  
  (点击图片进入网站)
  1949年与2019年的上海对比——历史航拍
  网站可以看到1949年到2019年、1979年到2019年的上海航拍图对比。
  网址:
  
  (点击图片进入网站)
  在线多媒体转换工具 - CloudConvert
  CloudConvert 是另一个强大的在线多媒体转换工具。
  支持215种文件的转换,音频、视频、文档、电子书、压缩包、图片、PPT、网页等。反正就这么多,你自己查吧。
  只需选择本地文件(或指定网盘),然后选择要转换的文件,即可转换。效率君实际测试了一下,速度很快。
  它还有一个非常黑科技的功能。您可以选择一个网盘来指定一个文件夹。添加新文件时,它可以自动转换。没有黑科技,真正解放了生产力。(但它似乎只适用于付费用户)
  它还有一个 Chrome 插件和一个 iOS 应用程序。
  网址:
  
  (点击图片进入网站)
  在线词云生成器 - 微词云
  Mini Tag Cloud 是一个非常实用的应用程序。简单的在线词云生成工具,无论你是设计师、操作员、学生还是数据分析师,都可以轻松制作出吸睛的词云图。
  网址:
  
  (点击图片进入网站)
  网页介绍:登录,在首页查看相册内容
  或点击网址直接进入网页相册页面
  

抓取网页生成电子书(行行网电子书多线程爬取-撸代码代码非常简单(图) )

网站优化优采云 发表了文章 • 0 个评论 • 55 次浏览 • 2022-02-09 09:23 • 来自相关话题

  抓取网页生成电子书(行行网电子书多线程爬取-撸代码代码非常简单(图)
)
  最近想找几本电子书看,翻了翻,然后找到了一个叫周渡的网站,网站很好,简单清爽,有书很多,而且都是在百度上打开的,网盘可以直接下载,更新速度也还行,就爬了上去。这篇文章可以文章学习,这么好的分享网站,尽量不要爬,会影响别人访问速度。需要数据的可以在我的博客下评论,我会发给你,QQ,邮箱什么的。
  
  
  这个网站页面的逻辑很简单。我翻阅了图书详情页面,它看起来是这样的。我们只需要循环生成这些页面的链接,然后就可以爬取了。为了速度,我使用多线程。, 你可以试试看。如果想爬取后面的数据,就在本博客下方发表评论,不要乱搞别人的服务器。
  http://www.ireadweek.com/index ... .html
http://www.ireadweek.com/index ... .html
....
  星星网电子书多线程爬取-代码
  代码非常简单。以我们之前的教程做铺垫,用很少的代码就可以实现完整的功能。最后将采集的内容写入csv文件,(什么是csv,百度知道)这段代码是IO密集型操作,我们使用aiohttp模块来编写。
  步骤1
  连接 URL 并启动线程。
  import requests
# 导入协程模块
import asyncio
import aiohttp
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36",
"Host": "www.ireadweek.com",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8"}
async def get_content(url):
print("正在操作:{}".format(url))
# 创建一个session 去获取数据
async with aiohttp.ClientSession() as session:
async with session.get(url,headers=headers,timeout=3) as res:
if res.status == 200:
source = await res.text() # 等待获取文本
print(source)
if __name__ == &#39;__main__&#39;:
url_format = "http://www.ireadweek.com/index.php/bookInfo/{}.html"
full_urllist = [url_format.format(i) for i in range(1,11394)] # 11394
loop = asyncio.get_event_loop()
tasks = [get_content(url) for url in full_urllist]
results = loop.run_until_complete(asyncio.wait(tasks))
  上面的代码可以同步开启N个多线程,但是这样很容易导致其他人的服务器瘫痪。因此,我们必须限制并发数。对于以下代码,请尝试将其放在指定位置。
  第2步
  为了处理捕获的 Web 源代码并提取我们想要的元素,我添加了一个使用 lxml 提取数据的方法。
  def async_content(tree):
title = tree.xpath("//div[@class=&#39;hanghang-za-title&#39;]")[0].text
# 如果页面没有信息,直接返回即可
if title == &#39;&#39;:
return
else:
try:
description = tree.xpath("//div[@class=&#39;hanghang-shu-content-font&#39;]")
author = description[0].xpath("p[1]/text()")[0].replace("作者:","") if description[0].xpath("p[1]/text()")[0] is not None else None
cate = description[0].xpath("p[2]/text()")[0].replace("分类:","") if description[0].xpath("p[2]/text()")[0] is not None else None
douban = description[0].xpath("p[3]/text()")[0].replace("豆瓣评分:","") if description[0].xpath("p[3]/text()")[0] is not None else None
# 这部分内容不明确,不做记录
#des = description[0].xpath("p[5]/text()")[0] if description[0].xpath("p[5]/text()")[0] is not None else None
download = tree.xpath("//a[@class=&#39;downloads&#39;]")
except Exception as e:
print(title)
return
ls = [
title,author,cate,douban,download[0].get(&#39;href&#39;)
]
return ls
  第 3 步
  数据格式化后,将其保存为 csv 文件,然后收工!
   print(data)
with open(&#39;hang.csv&#39;, &#39;a+&#39;, encoding=&#39;utf-8&#39;) as fw:
writer = csv.writer(fw)
writer.writerow(data)
print("插入成功!")
Python资源分享qun 784758214 ,内有安装包,PDF,学习视频,这里是Python学习者的聚集地,零基础,进阶,都欢迎
  星星网电子书多线程爬取——运行代码并查看结果
   查看全部

  抓取网页生成电子书(行行网电子书多线程爬取-撸代码代码非常简单(图)
)
  最近想找几本电子书看,翻了翻,然后找到了一个叫周渡的网站,网站很好,简单清爽,有书很多,而且都是在百度上打开的,网盘可以直接下载,更新速度也还行,就爬了上去。这篇文章可以文章学习,这么好的分享网站,尽量不要爬,会影响别人访问速度。需要数据的可以在我的博客下评论,我会发给你,QQ,邮箱什么的。
  
  
  这个网站页面的逻辑很简单。我翻阅了图书详情页面,它看起来是这样的。我们只需要循环生成这些页面的链接,然后就可以爬取了。为了速度,我使用多线程。, 你可以试试看。如果想爬取后面的数据,就在本博客下方发表评论,不要乱搞别人的服务器。
  http://www.ireadweek.com/index ... .html
http://www.ireadweek.com/index ... .html
....
  星星网电子书多线程爬取-代码
  代码非常简单。以我们之前的教程做铺垫,用很少的代码就可以实现完整的功能。最后将采集的内容写入csv文件,(什么是csv,百度知道)这段代码是IO密集型操作,我们使用aiohttp模块来编写。
  步骤1
  连接 URL 并启动线程。
  import requests
# 导入协程模块
import asyncio
import aiohttp
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36",
"Host": "www.ireadweek.com",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8"}
async def get_content(url):
print("正在操作:{}".format(url))
# 创建一个session 去获取数据
async with aiohttp.ClientSession() as session:
async with session.get(url,headers=headers,timeout=3) as res:
if res.status == 200:
source = await res.text() # 等待获取文本
print(source)
if __name__ == &#39;__main__&#39;:
url_format = "http://www.ireadweek.com/index.php/bookInfo/{}.html"
full_urllist = [url_format.format(i) for i in range(1,11394)] # 11394
loop = asyncio.get_event_loop()
tasks = [get_content(url) for url in full_urllist]
results = loop.run_until_complete(asyncio.wait(tasks))
  上面的代码可以同步开启N个多线程,但是这样很容易导致其他人的服务器瘫痪。因此,我们必须限制并发数。对于以下代码,请尝试将其放在指定位置。
  第2步
  为了处理捕获的 Web 源代码并提取我们想要的元素,我添加了一个使用 lxml 提取数据的方法。
  def async_content(tree):
title = tree.xpath("//div[@class=&#39;hanghang-za-title&#39;]")[0].text
# 如果页面没有信息,直接返回即可
if title == &#39;&#39;:
return
else:
try:
description = tree.xpath("//div[@class=&#39;hanghang-shu-content-font&#39;]")
author = description[0].xpath("p[1]/text()")[0].replace("作者:","") if description[0].xpath("p[1]/text()")[0] is not None else None
cate = description[0].xpath("p[2]/text()")[0].replace("分类:","") if description[0].xpath("p[2]/text()")[0] is not None else None
douban = description[0].xpath("p[3]/text()")[0].replace("豆瓣评分:","") if description[0].xpath("p[3]/text()")[0] is not None else None
# 这部分内容不明确,不做记录
#des = description[0].xpath("p[5]/text()")[0] if description[0].xpath("p[5]/text()")[0] is not None else None
download = tree.xpath("//a[@class=&#39;downloads&#39;]")
except Exception as e:
print(title)
return
ls = [
title,author,cate,douban,download[0].get(&#39;href&#39;)
]
return ls
  第 3 步
  数据格式化后,将其保存为 csv 文件,然后收工!
   print(data)
with open(&#39;hang.csv&#39;, &#39;a+&#39;, encoding=&#39;utf-8&#39;) as fw:
writer = csv.writer(fw)
writer.writerow(data)
print("插入成功!")
Python资源分享qun 784758214 ,内有安装包,PDF,学习视频,这里是Python学习者的聚集地,零基础,进阶,都欢迎
  星星网电子书多线程爬取——运行代码并查看结果
  

抓取网页生成电子书(《网络书籍抓取器》软件特色特色介绍-上海怡健医学 )

网站优化优采云 发表了文章 • 0 个评论 • 87 次浏览 • 2022-02-07 03:04 • 来自相关话题

  抓取网页生成电子书(《网络书籍抓取器》软件特色特色介绍-上海怡健医学
)
  网络图书抓取器主要用于抓取网络小说生成文本文件。它可以提取指定小说目录页面的章节信息并进行调整,然后按照章节顺序抓取小说内容,然后将它们合并在一起。爬取过程可以随时中断,关闭程序后可以恢复上一个任务。
  
  网络图书抓取软件的特点
  1、章节调整:提取目录后,可以进行移动、删除、反转等调整操作。调整将直接影响调整后的章节顺序中的最终书籍和输出。
  2、自动重试:爬取过程中,可能由于网络因素导致爬取失败。这个程序可能会自动重试直到成功,或者暂时中断爬取(中断后关闭程序不会影响进度),等网络好了再试。
  3、停止和恢复:捕捉过程可以随时停止,退出程序后不影响进度(章节信息会保存在记录中,程序结束后可以恢复捕捉下次运行。注意:需要先用停止键中断,然后退出程序,如果直接退出,将无法恢复)。
  4、一键抓取:又称“傻瓜模式”,基本可以实现全自动抓取合并功能,直接输出最终的文本文件。前面可能需要输入最基本的URL、save bit等信息(会有明显的操作提示),调整章节后也可以使用一键爬取,爬取和合并操作会自动完成。
  5、适用网站:已输入10个适用网站(选择后可快速打开网站找到想要的书),以及相应的代码也可以自动应用,其他小说网站也可以测试,如果一起使用,可以手动添加到设置文件中备份。
  6、轻松制作电子书:可以在设置文件中添加每章名称的前缀和后缀,为后期制作电子书的编目带来极大的方便。
   查看全部

  抓取网页生成电子书(《网络书籍抓取器》软件特色特色介绍-上海怡健医学
)
  网络图书抓取器主要用于抓取网络小说生成文本文件。它可以提取指定小说目录页面的章节信息并进行调整,然后按照章节顺序抓取小说内容,然后将它们合并在一起。爬取过程可以随时中断,关闭程序后可以恢复上一个任务。
  
  网络图书抓取软件的特点
  1、章节调整:提取目录后,可以进行移动、删除、反转等调整操作。调整将直接影响调整后的章节顺序中的最终书籍和输出。
  2、自动重试:爬取过程中,可能由于网络因素导致爬取失败。这个程序可能会自动重试直到成功,或者暂时中断爬取(中断后关闭程序不会影响进度),等网络好了再试。
  3、停止和恢复:捕捉过程可以随时停止,退出程序后不影响进度(章节信息会保存在记录中,程序结束后可以恢复捕捉下次运行。注意:需要先用停止键中断,然后退出程序,如果直接退出,将无法恢复)。
  4、一键抓取:又称“傻瓜模式”,基本可以实现全自动抓取合并功能,直接输出最终的文本文件。前面可能需要输入最基本的URL、save bit等信息(会有明显的操作提示),调整章节后也可以使用一键爬取,爬取和合并操作会自动完成。
  5、适用网站:已输入10个适用网站(选择后可快速打开网站找到想要的书),以及相应的代码也可以自动应用,其他小说网站也可以测试,如果一起使用,可以手动添加到设置文件中备份。
  6、轻松制作电子书:可以在设置文件中添加每章名称的前缀和后缀,为后期制作电子书的编目带来极大的方便。
  

抓取网页生成电子书(《修真小主播》使用Scrapy抓取电子书爬虫思路怎么抓取数据 )

网站优化优采云 发表了文章 • 0 个评论 • 102 次浏览 • 2022-02-05 17:04 • 来自相关话题

  抓取网页生成电子书(《修真小主播》使用Scrapy抓取电子书爬虫思路怎么抓取数据
)
  使用 Scrapy 抓取电子书
  爬行动物的想法
  如何抓取数据,首先我们需要看看从哪里获取数据,打开“小耕主播”的页面,如下:
  
  有一个目录选项卡,单击此选项卡可以查看目录。使用浏览器的元素查看工具,我们可以找到每章的目录和相关信息。根据这些信息,我们可以爬取到特定页面:
  
  获取章节地址
  现在我们打开 xzxzb.py 文件,也就是我们刚刚创建的爬虫:
  # -*- coding: utf-8 -*-
import scrapy
&#39;&#39;&#39;
更多Python学习资料以及源码教程资料,可以在群1136201545免费获取
&#39;&#39;&#39;
class XzxzbSpider(scrapy.Spider):
name = &#39;xzxzb&#39;
allowed_domains = [&#39;qidian.com&#39;]
start_urls = [&#39;http://qidian.com/&#39;]
def parse(self, response):
pass
  start_urls 是目录地址,爬虫会自动爬取这个地址,然后在后面的解析中处理结果。现在让我们编写处理目录数据的代码,首先爬取小说首页获取目录列表:
   def parse(self, response):
pages = response.xpath(&#39;//div[@id="j-catalogWrap"]//ul[@class="cf"]/li&#39;)
for page in pages:
url = page.xpath(&#39;./child::a/attribute::href&#39;).extract()
print url
pass
  在网页中获取 DOM 数据有两种方式,一种是使用 CSS 选择器,另一种是使用 XML 的 xPath 查询。
  这里我们使用xPath,相关知识请自行学习,看上面代码,首先我们通过ID获取目录框,获取类cf获取目录列表:
  pages = response.xpath(&#39;//div[@id="j-catalogWrap"]//ul[@class="cf"]/li&#39;)
  接下来遍历子节点,查询li标签中a子节点的href属性,最后打印出来:
  for page in pages:
url = page.xpath(&#39;./child::a/attribute::href&#39;).extract()
print url
  这样,可以说爬取章节路径的小爬虫已经写好了。使用以下命令运行xzxzb爬虫查看结果:
  scrapy crawl xzxzb
  这时候我们的程序可能会出现如下错误:
  …
ImportError: No module named win32api

  只需运行以下语句:
  pip install pypiwin32
  屏幕输出如下:
  > ...
> [u&#39;//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/wrrduN6auIlOBDFlr9quQA2&#39;]
[u&#39;//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/Jh-J5usgyW62uJcMpdsVgA2&#39;]
[u&#39;//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/5YXHdBvg1ImaGfXRMrUjdw2&#39;]
[u&#39;//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/fw5EBeKat-76ItTi_ILQ7A2&#39;]
[u&#39;//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/KsFh5VutI6PwrjbX3WA1AA2&#39;]
[u&#39;//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/-mpKJ01gPp1p4rPq4Fd4KQ2&#39;]
[u&#39;//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/MlZSeYOQxSPM5j8_3RRvhw2&#39;]
[u&#39;//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/5TXZqGvLi-3M5j8_3RRvhw2&#39;]
[u&#39;//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/sysD-JPiugv4p8iEw--PPw2&#39;]
[u&#39;//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/xGckZ01j64-aGfXRMrUjdw2&#39;]
[u&#39;//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/72lHOJcgmedOBDFlr9quQA2&#39;]
[u&#39;//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/cZkHZEYnPl22uJcMpdsVgA2&#39;]
[u&#39;//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/vkNh45O3JsRMs5iq0oQwLQ2&#39;]
[u&#39;//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/ge4m8RjJyPH6ItTi_ILQ7A2&#39;]
[u&#39;//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/Y33PuxrKT4dp4rPq4Fd4KQ2&#39;]
[u&#39;//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/MDQznkrkiyXwrjbX3WA1AA2&#39;]
[u&#39;//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/A2r-YTzWCYj6ItTi_ILQ7A2&#39;]
[u&#39;//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/Ng9CuONRKei2uJcMpdsVgA2&#39;]
[u&#39;//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/Q_AxWAge14pMs5iq0oQwLQ2&#39;]
[u&#39;//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/ZJshvAu8TVVp4rPq4Fd4KQ2&#39;]
[u&#39;//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/hYD2P4c5UB2aGfXRMrUjdw2&#39;]
[u&#39;//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/muxiWf_jpqTgn4SMoDUcDQ2&#39;]
[u&#39;//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/OQQ5jbADJjVp4rPq4Fd4KQ2&#39;]
> ...
  爬章节路径的小爬虫写了,但是我们的目的不仅如此,我们会使用这些地址来爬取内容:
  章节页面分析
  接下来我们分析章节页面,我们要从中获取标题和内容。
  如果说用于章节信息爬取的parser方法,那么我们可以写一个爬取每个章节内容的方法,比如:parser_chapter,先看章节页面的具体情况:
  
  可以看到,章节的全部内容在类名main-text-wrap的div标签中,标题是类名j_chapterName的h3标签,具体内容是类名的div标签读取内容 j_readContent。
  尝试打印出来:
  # -*- coding: utf-8 -*-
import scrapy
class XzxzbSpider(scrapy.Spider):
name = &#39;xzxzb&#39;
allowed_domains = [&#39;qidian.com&#39;]
start_urls = [&#39;https://book.qidian.com/info/1010780117/&#39;]
def parse(self, response):
pages = response.xpath(&#39;//div[@id="j-catalogWrap"]//ul[@class="cf"]/li&#39;)
for page in pages:
url = page.xpath(&#39;./child::a/attribute::href&#39;).extract_first()
# yield scrapy.Request(&#39;https:&#39; + url, callback=self.parse_chapter)
yield response.follow(url, callback=self.parse_chapter)
pass
def parse_chapter(self, response):
title = response.xpath(&#39;//div[@class="main-text-wrap"]//h3[@class="j_chapterName"]/text()&#39;).extract_first().strip()
content = response.xpath(&#39;//div[@class="main-text-wrap"]//div[@class="read-content j_readContent"]&#39;).extract_first().strip()
print title
# print content
pass
  上一步我们得到了一个章节地址,这是从输出内容的相对路径,所以我们使用了yield response.follow(url, callback=self.parse_chapter),第二个参数是一个回调函数来处理章节页面,爬取到章节页面后,我们解析页面并将标题保存到文件中。
  next_page = response.urljoin(url)
yield scrapy.Request(next_page, callback=self.parse_chapter)
  与使用 response.follow 不同,scrapy.Request 需要通过相对路径来构造绝对路径。Response.follow 可以直接使用相对路径,所以不需要调用 urljoin 方法。
  注意response.follow直接返回一个Request实例,可以直接通过yield返回。
  获取数据后,将其存储。由于我们想要一个 html 页面,我们可以按标题存储它。代码如下:
   def parse_chapter(self, response):
title = response.xpath(&#39;//div[@class="main-text-wrap"]//h3[@class="j_chapterName"]/text()&#39;).extract_first().strip()
content = response.xpath(&#39;//div[@class="main-text-wrap"]//div[@class="read-content j_readContent"]&#39;).extract_first().strip()
# print title
# print content
filename = &#39;./down/%s.html&#39; % (title)
with open(filename, &#39;wb&#39;) as f:
f.write(content.encode(&#39;utf-8&#39;))
pass
  到目前为止,我们已经成功捕获到我们的数据,但是它不能直接使用,需要进行排序和优化。
  数据管理
  首先,我们爬取的章节页面的排序不是很好,手动排列太费时间精力;另外,章节内容收录很多多余的东西,阅读体验不好,需要优化内容的排版和可读性。
  我们先对章节进行排序,因为目录中的章节列表是按顺序排列的,所以只需在下载页面名称中加上序号即可。
  但是保存网页的代码是一个回调函数,只有在处理目录时才能确定顺序。回调函数怎么知道顺序?因此,我们需要告诉回调函数它处理章节的序号,并且我们需要向回调函数传递参数。修改后的代码如下:
  &#39;&#39;&#39;
更多Python学习资料以及源码教程资料,可以在群1136201545免费获取
&#39;&#39;&#39;
def parse(self, response):
pages = response.xpath(&#39;//div[@id="j-catalogWrap"]//ul[@class="cf"]/li&#39;)
for page in pages:
url = page.xpath(&#39;./child::a/attribute::href&#39;).extract_first()
idx = page.xpath(&#39;./attribute::data-rid&#39;).extract_first()
# yield scrapy.Request(&#39;https:&#39; + url, callback=self.parse_chapter)
req = response.follow(url, callback=self.parse_chapter)
req.meta[&#39;idx&#39;] = idx
yield req
pass
def parse_chapter(self, response):
idx = response.meta[&#39;idx&#39;]
title = response.xpath(&#39;//div[@class="main-text-wrap"]//h3[@class="j_chapterName"]/text()&#39;).extract_first().strip()
content = response.xpath(&#39;//div[@class="main-text-wrap"]//div[@class="read-content j_readContent"]&#39;).extract_first().strip()
# print title
# print content
filename = &#39;./down/%s_%s.html&#39; % (idx, title)
cnt = &#39;%s %s&#39; % (title, content)
with open(filename, &#39;wb&#39;) as f:
f.write(cnt.encode(&#39;utf-8&#39;))
pass
  使用 Sigil 创建电子书
  加载html文件
  要制作 ePub 电子书,我们首先通过 Sigil 将抓取的文件加载到程序中,然后在“添加文件”对话框中选择所有文件:
  
  制作目录
  当文件中存在 HTML h 标签时,单击 Generate Directory 按钮自动生成目录。我们在之前的数据捕获中自动添加了 h1 标签:
  
  做一个封面
  
  封面本质上是HTML,可以编辑或者从页面爬取,所以我留给你自己实现。
   查看全部

  抓取网页生成电子书(《修真小主播》使用Scrapy抓取电子书爬虫思路怎么抓取数据
)
  使用 Scrapy 抓取电子书
  爬行动物的想法
  如何抓取数据,首先我们需要看看从哪里获取数据,打开“小耕主播”的页面,如下:
  
  有一个目录选项卡,单击此选项卡可以查看目录。使用浏览器的元素查看工具,我们可以找到每章的目录和相关信息。根据这些信息,我们可以爬取到特定页面:
  
  获取章节地址
  现在我们打开 xzxzb.py 文件,也就是我们刚刚创建的爬虫:
  # -*- coding: utf-8 -*-
import scrapy
&#39;&#39;&#39;
更多Python学习资料以及源码教程资料,可以在群1136201545免费获取
&#39;&#39;&#39;
class XzxzbSpider(scrapy.Spider):
name = &#39;xzxzb&#39;
allowed_domains = [&#39;qidian.com&#39;]
start_urls = [&#39;http://qidian.com/&#39;]
def parse(self, response):
pass
  start_urls 是目录地址,爬虫会自动爬取这个地址,然后在后面的解析中处理结果。现在让我们编写处理目录数据的代码,首先爬取小说首页获取目录列表:
   def parse(self, response):
pages = response.xpath(&#39;//div[@id="j-catalogWrap"]//ul[@class="cf"]/li&#39;)
for page in pages:
url = page.xpath(&#39;./child::a/attribute::href&#39;).extract()
print url
pass
  在网页中获取 DOM 数据有两种方式,一种是使用 CSS 选择器,另一种是使用 XML 的 xPath 查询。
  这里我们使用xPath,相关知识请自行学习,看上面代码,首先我们通过ID获取目录框,获取类cf获取目录列表:
  pages = response.xpath(&#39;//div[@id="j-catalogWrap"]//ul[@class="cf"]/li&#39;)
  接下来遍历子节点,查询li标签中a子节点的href属性,最后打印出来:
  for page in pages:
url = page.xpath(&#39;./child::a/attribute::href&#39;).extract()
print url
  这样,可以说爬取章节路径的小爬虫已经写好了。使用以下命令运行xzxzb爬虫查看结果:
  scrapy crawl xzxzb
  这时候我们的程序可能会出现如下错误:
  …
ImportError: No module named win32api

  只需运行以下语句:
  pip install pypiwin32
  屏幕输出如下:
  > ...
> [u&#39;//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/wrrduN6auIlOBDFlr9quQA2&#39;]
[u&#39;//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/Jh-J5usgyW62uJcMpdsVgA2&#39;]
[u&#39;//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/5YXHdBvg1ImaGfXRMrUjdw2&#39;]
[u&#39;//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/fw5EBeKat-76ItTi_ILQ7A2&#39;]
[u&#39;//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/KsFh5VutI6PwrjbX3WA1AA2&#39;]
[u&#39;//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/-mpKJ01gPp1p4rPq4Fd4KQ2&#39;]
[u&#39;//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/MlZSeYOQxSPM5j8_3RRvhw2&#39;]
[u&#39;//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/5TXZqGvLi-3M5j8_3RRvhw2&#39;]
[u&#39;//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/sysD-JPiugv4p8iEw--PPw2&#39;]
[u&#39;//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/xGckZ01j64-aGfXRMrUjdw2&#39;]
[u&#39;//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/72lHOJcgmedOBDFlr9quQA2&#39;]
[u&#39;//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/cZkHZEYnPl22uJcMpdsVgA2&#39;]
[u&#39;//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/vkNh45O3JsRMs5iq0oQwLQ2&#39;]
[u&#39;//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/ge4m8RjJyPH6ItTi_ILQ7A2&#39;]
[u&#39;//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/Y33PuxrKT4dp4rPq4Fd4KQ2&#39;]
[u&#39;//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/MDQznkrkiyXwrjbX3WA1AA2&#39;]
[u&#39;//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/A2r-YTzWCYj6ItTi_ILQ7A2&#39;]
[u&#39;//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/Ng9CuONRKei2uJcMpdsVgA2&#39;]
[u&#39;//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/Q_AxWAge14pMs5iq0oQwLQ2&#39;]
[u&#39;//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/ZJshvAu8TVVp4rPq4Fd4KQ2&#39;]
[u&#39;//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/hYD2P4c5UB2aGfXRMrUjdw2&#39;]
[u&#39;//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/muxiWf_jpqTgn4SMoDUcDQ2&#39;]
[u&#39;//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/OQQ5jbADJjVp4rPq4Fd4KQ2&#39;]
> ...
  爬章节路径的小爬虫写了,但是我们的目的不仅如此,我们会使用这些地址来爬取内容:
  章节页面分析
  接下来我们分析章节页面,我们要从中获取标题和内容。
  如果说用于章节信息爬取的parser方法,那么我们可以写一个爬取每个章节内容的方法,比如:parser_chapter,先看章节页面的具体情况:
  
  可以看到,章节的全部内容在类名main-text-wrap的div标签中,标题是类名j_chapterName的h3标签,具体内容是类名的div标签读取内容 j_readContent。
  尝试打印出来:
  # -*- coding: utf-8 -*-
import scrapy
class XzxzbSpider(scrapy.Spider):
name = &#39;xzxzb&#39;
allowed_domains = [&#39;qidian.com&#39;]
start_urls = [&#39;https://book.qidian.com/info/1010780117/&#39;]
def parse(self, response):
pages = response.xpath(&#39;//div[@id="j-catalogWrap"]//ul[@class="cf"]/li&#39;)
for page in pages:
url = page.xpath(&#39;./child::a/attribute::href&#39;).extract_first()
# yield scrapy.Request(&#39;https:&#39; + url, callback=self.parse_chapter)
yield response.follow(url, callback=self.parse_chapter)
pass
def parse_chapter(self, response):
title = response.xpath(&#39;//div[@class="main-text-wrap"]//h3[@class="j_chapterName"]/text()&#39;).extract_first().strip()
content = response.xpath(&#39;//div[@class="main-text-wrap"]//div[@class="read-content j_readContent"]&#39;).extract_first().strip()
print title
# print content
pass
  上一步我们得到了一个章节地址,这是从输出内容的相对路径,所以我们使用了yield response.follow(url, callback=self.parse_chapter),第二个参数是一个回调函数来处理章节页面,爬取到章节页面后,我们解析页面并将标题保存到文件中。
  next_page = response.urljoin(url)
yield scrapy.Request(next_page, callback=self.parse_chapter)
  与使用 response.follow 不同,scrapy.Request 需要通过相对路径来构造绝对路径。Response.follow 可以直接使用相对路径,所以不需要调用 urljoin 方法。
  注意response.follow直接返回一个Request实例,可以直接通过yield返回。
  获取数据后,将其存储。由于我们想要一个 html 页面,我们可以按标题存储它。代码如下:
   def parse_chapter(self, response):
title = response.xpath(&#39;//div[@class="main-text-wrap"]//h3[@class="j_chapterName"]/text()&#39;).extract_first().strip()
content = response.xpath(&#39;//div[@class="main-text-wrap"]//div[@class="read-content j_readContent"]&#39;).extract_first().strip()
# print title
# print content
filename = &#39;./down/%s.html&#39; % (title)
with open(filename, &#39;wb&#39;) as f:
f.write(content.encode(&#39;utf-8&#39;))
pass
  到目前为止,我们已经成功捕获到我们的数据,但是它不能直接使用,需要进行排序和优化。
  数据管理
  首先,我们爬取的章节页面的排序不是很好,手动排列太费时间精力;另外,章节内容收录很多多余的东西,阅读体验不好,需要优化内容的排版和可读性。
  我们先对章节进行排序,因为目录中的章节列表是按顺序排列的,所以只需在下载页面名称中加上序号即可。
  但是保存网页的代码是一个回调函数,只有在处理目录时才能确定顺序。回调函数怎么知道顺序?因此,我们需要告诉回调函数它处理章节的序号,并且我们需要向回调函数传递参数。修改后的代码如下:
  &#39;&#39;&#39;
更多Python学习资料以及源码教程资料,可以在群1136201545免费获取
&#39;&#39;&#39;
def parse(self, response):
pages = response.xpath(&#39;//div[@id="j-catalogWrap"]//ul[@class="cf"]/li&#39;)
for page in pages:
url = page.xpath(&#39;./child::a/attribute::href&#39;).extract_first()
idx = page.xpath(&#39;./attribute::data-rid&#39;).extract_first()
# yield scrapy.Request(&#39;https:&#39; + url, callback=self.parse_chapter)
req = response.follow(url, callback=self.parse_chapter)
req.meta[&#39;idx&#39;] = idx
yield req
pass
def parse_chapter(self, response):
idx = response.meta[&#39;idx&#39;]
title = response.xpath(&#39;//div[@class="main-text-wrap"]//h3[@class="j_chapterName"]/text()&#39;).extract_first().strip()
content = response.xpath(&#39;//div[@class="main-text-wrap"]//div[@class="read-content j_readContent"]&#39;).extract_first().strip()
# print title
# print content
filename = &#39;./down/%s_%s.html&#39; % (idx, title)
cnt = &#39;%s %s&#39; % (title, content)
with open(filename, &#39;wb&#39;) as f:
f.write(cnt.encode(&#39;utf-8&#39;))
pass
  使用 Sigil 创建电子书
  加载html文件
  要制作 ePub 电子书,我们首先通过 Sigil 将抓取的文件加载到程序中,然后在“添加文件”对话框中选择所有文件:
  
  制作目录
  当文件中存在 HTML h 标签时,单击 Generate Directory 按钮自动生成目录。我们在之前的数据捕获中自动添加了 h1 标签:
  
  做一个封面
  
  封面本质上是HTML,可以编辑或者从页面爬取,所以我留给你自己实现。
  

抓取网页生成电子书(Requests-html快速指南发送一个GET请求:html的方便!)

网站优化优采云 发表了文章 • 0 个评论 • 62 次浏览 • 2022-02-05 17:04 • 来自相关话题

  抓取网页生成电子书(Requests-html快速指南发送一个GET请求:html的方便!)
  安装
  安装很简单,只需执行:
  
pip install requests-html
  而已。
  分析页面结构
  通过在浏览器中查看元素,可以发现这本电子书网站是用WordPress搭建的,首页列表元素非常简洁利落。
  所以我们可以通过查找 .entry-title &gt; a 得到所有图书详情页的链接,然后我们到详情页找到下载链接,如下图
  可以发现.download-links &gt; a中的链接就是该书的下载链接。回到列表页面,可以发现站点有700多个页面,所以我们可以循环列表获取所有的下载链接。
  Requests-html 快速指南
  发送 GET 请求:
  
from requests_html import HTMLSession
session = HTMLSession()

r = session.get('https://python.org/')
  Requests-html 的方便之处在于它解析 html 就像使用 jQuery 一样容易,例如:
  
# 获取页面的所有链接可以这样写:
r.html.links
# 会返回 {'//docs.python.org/3/tutorial/', '/about/apps/'}

# 获取页面的所有的绝对链接:
r.html.absolute_links
# 会返回 {'https://github.com/python/pythondotorg/issues', 'https://docs.python.org/3/tutorial/'}

# 通过 CSS 选择器选择元素:
about = r.find('.about', first=True)
# 参数 first 表示只获取找到的第一元素
about.text # 获取 .about 下的所有文本
about.attrs # 获取 .about 下所有属性像 id, src, href 等等
about.html # 获取 .about 的 HTML
about.find('a') # 获取 .about 下的所有 a 标签
  构建代码
  
from requests_html import HTMLSession
import requests
import time
import json
import random
import sys

'''
想要学习Python?Python学习交流群:984632579满足你的需求,资料都已经上传群文件,可以自行下载!
'''

session = HTMLSession()
list_url = 'http://www.allitebooks.com/page/'

USER_AGENTS = [
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.20 (KHTML, like Gecko) Chrome/19.0.1036.7 Safari/535.20",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.71 Safari/537.1 LBBROWSER",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.84 Safari/535.11 LBBROWSER",
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E)",
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SV1; QQDownload 732; .NET4.0C; .NET4.0E; 360SE)",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E)",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1",
"Mozilla/5.0 (iPad; U; CPU OS 4_2_1 like Mac OS X; zh-cn) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5",
"Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:2.0b13pre) Gecko/20110307 Firefox/4.0b13pre",
"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:16.0) Gecko/20100101 Firefox/16.0",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11",
"Mozilla/5.0 (X11; U; Linux x86_64; zh-CN; rv:1.9.2.10) Gecko/20100922 Ubuntu/10.10 (maverick) Firefox/3.6.10"
]

# 获取当前列表页所有图书链接
def get_list(url):
response = session.get(url)
all_link = response.html.find('.entry-title a') # 获取页面所有图书详情链接
for link in all_link:
getBookUrl(link.attrs['href'])

# 获取图书下载链接
def getBookUrl(url):
response = session.get(url)
l = response.html.find('.download-links a', first=True)
if l is not None: # 运行后发现有的个别页面没有下载链接,这里加个判断
link = l.attrs['href'];
download(link)

#下载图书
def download(url):
# 随机浏览器 User-Agent
headers={ "User-Agent":random.choice(USER_AGENTS) }
# 获取文件名
filename = url.split('/')[-1]
# 如果 url 里包含 .pdf
if ".pdf" in url:
file = 'book/'+filename # 文件路径写死了,运行时当前目录必须有名 book 的文件夹
with open(file, 'wb') as f:
print("正在下载 %s" % filename)
response = requests.get(url, stream=True, headers=headers)

# 获取文件大小
total_length = response.headers.get('content-length')
# 如果文件大小不存在,则直接写入返回的文本
if total_length is None:
f.write(response.content)
else:
# 下载进度条
dl = 0
total_length = int(total_length) # 文件大小
for data in response.iter_content(chunk_size=4096): # 每次响应获取 4096 字节
dl += len(data)
f.write(data)
done = int(50 * dl / total_length)
sys.stdout.write("\r[%s%s]" % ('=' * done, ' ' * (50-done)) ) # 打印进度条
sys.stdout.flush()

print(filename + '下载完成!')

if __name__ == '__main__':
#从这运行,应为知道列表总数,所以偷个懒直接开始循环
for x in range(1,756):
print('当前页面: '+ str(x))
get_list(list_url+str(x))
  运行结果:
  以上就是我用Python抓到的7000多本电子书的详细讲解和整合。我希望它对你有帮助。如有任何问题,请给我留言,小编会及时回复您。还要感谢大家对脚本之家网站的支持! 查看全部

  抓取网页生成电子书(Requests-html快速指南发送一个GET请求:html的方便!)
  安装
  安装很简单,只需执行:
  
pip install requests-html
  而已。
  分析页面结构
  通过在浏览器中查看元素,可以发现这本电子书网站是用WordPress搭建的,首页列表元素非常简洁利落。
  所以我们可以通过查找 .entry-title &gt; a 得到所有图书详情页的链接,然后我们到详情页找到下载链接,如下图
  可以发现.download-links &gt; a中的链接就是该书的下载链接。回到列表页面,可以发现站点有700多个页面,所以我们可以循环列表获取所有的下载链接。
  Requests-html 快速指南
  发送 GET 请求:
  
from requests_html import HTMLSession
session = HTMLSession()

r = session.get('https://python.org/')
  Requests-html 的方便之处在于它解析 html 就像使用 jQuery 一样容易,例如:
  
# 获取页面的所有链接可以这样写:
r.html.links
# 会返回 {'//docs.python.org/3/tutorial/', '/about/apps/'}

# 获取页面的所有的绝对链接:
r.html.absolute_links
# 会返回 {'https://github.com/python/pythondotorg/issues', 'https://docs.python.org/3/tutorial/'}

# 通过 CSS 选择器选择元素:
about = r.find('.about', first=True)
# 参数 first 表示只获取找到的第一元素
about.text # 获取 .about 下的所有文本
about.attrs # 获取 .about 下所有属性像 id, src, href 等等
about.html # 获取 .about 的 HTML
about.find('a') # 获取 .about 下的所有 a 标签
  构建代码
  
from requests_html import HTMLSession
import requests
import time
import json
import random
import sys

'''
想要学习Python?Python学习交流群:984632579满足你的需求,资料都已经上传群文件,可以自行下载!
'''

session = HTMLSession()
list_url = 'http://www.allitebooks.com/page/'

USER_AGENTS = [
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.20 (KHTML, like Gecko) Chrome/19.0.1036.7 Safari/535.20",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.71 Safari/537.1 LBBROWSER",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.84 Safari/535.11 LBBROWSER",
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E)",
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SV1; QQDownload 732; .NET4.0C; .NET4.0E; 360SE)",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; QQDownload 732; .NET4.0C; .NET4.0E)",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1",
"Mozilla/5.0 (iPad; U; CPU OS 4_2_1 like Mac OS X; zh-cn) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8C148 Safari/6533.18.5",
"Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:2.0b13pre) Gecko/20110307 Firefox/4.0b13pre",
"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:16.0) Gecko/20100101 Firefox/16.0",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11",
"Mozilla/5.0 (X11; U; Linux x86_64; zh-CN; rv:1.9.2.10) Gecko/20100922 Ubuntu/10.10 (maverick) Firefox/3.6.10"
]

# 获取当前列表页所有图书链接
def get_list(url):
response = session.get(url)
all_link = response.html.find('.entry-title a') # 获取页面所有图书详情链接
for link in all_link:
getBookUrl(link.attrs['href'])

# 获取图书下载链接
def getBookUrl(url):
response = session.get(url)
l = response.html.find('.download-links a', first=True)
if l is not None: # 运行后发现有的个别页面没有下载链接,这里加个判断
link = l.attrs['href'];
download(link)

#下载图书
def download(url):
# 随机浏览器 User-Agent
headers={ "User-Agent":random.choice(USER_AGENTS) }
# 获取文件名
filename = url.split('/')[-1]
# 如果 url 里包含 .pdf
if ".pdf" in url:
file = 'book/'+filename # 文件路径写死了,运行时当前目录必须有名 book 的文件夹
with open(file, 'wb') as f:
print("正在下载 %s" % filename)
response = requests.get(url, stream=True, headers=headers)

# 获取文件大小
total_length = response.headers.get('content-length')
# 如果文件大小不存在,则直接写入返回的文本
if total_length is None:
f.write(response.content)
else:
# 下载进度条
dl = 0
total_length = int(total_length) # 文件大小
for data in response.iter_content(chunk_size=4096): # 每次响应获取 4096 字节
dl += len(data)
f.write(data)
done = int(50 * dl / total_length)
sys.stdout.write("\r[%s%s]" % ('=' * done, ' ' * (50-done)) ) # 打印进度条
sys.stdout.flush()

print(filename + '下载完成!')

if __name__ == '__main__':
#从这运行,应为知道列表总数,所以偷个懒直接开始循环
for x in range(1,756):
print('当前页面: '+ str(x))
get_list(list_url+str(x))
  运行结果:
  以上就是我用Python抓到的7000多本电子书的详细讲解和整合。我希望它对你有帮助。如有任何问题,请给我留言,小编会及时回复您。还要感谢大家对脚本之家网站的支持!

抓取网页生成电子书(主流电子书格式大家最为熟知的电子书熟知格式(图))

网站优化优采云 发表了文章 • 0 个评论 • 75 次浏览 • 2022-02-05 17:03 • 来自相关话题

  抓取网页生成电子书(主流电子书格式大家最为熟知的电子书熟知格式(图))
  编者注(@Minja):在编写文章时,经常需要引用和回溯。对各种存档和剪辑工具的不满,让我萌生了自己制作电子书的念头。正好@Spencerwoo在这方面有扎实的折腾能力,于是摆脱了他,研究了一套简单易行的方法,写成文章分享给大家。
  虽然网络世界有很多有价值的文章,但并不是每一次阅读体验都令人满意。如果你想拥有出色的文章阅读体验,至少要确保我们正在阅读文章:
  很多时候,我们依靠浏览器的阅读方式,或者Pocket和RSS客户端来阅读。但是,阅读模式后期无法整理,而且大部分阅读服务的全文搜索功能都需要付费,网上的文章可能一天都找不到。或许,将 文章 保存为本地电子书是一种更方便的回顾选择。
  如果我们在网上看到一个网页形式的电子书,想直接把整个网页保存到本地(俗称“剪辑”),那简直是麻烦大了。现有的网页剪辑工具不仅会携带无用的、影响体验的广告和其他冗余区域,还会丢失重要和有价值的内容。不仅如此,几乎没有工具可以轻松抓取图片并自定义保存到本地的文章样式。那么,让我向您介绍一组免费制作个性化电子书的方法。
  本文主要使用开源工具 Pandoc。对于需要MOBI或PDF格式电子书的读者,文章后半部分也有简单的转换方法。
  ePub 电子书的突破
  目前主流的电子书格式有很多,但本文主要推荐ePub,它比较开放统一,可以很方便的转换成其他格式。
  
  主流电子书格式
  最广为人知的电子书格式可能是纯文本TXT格式,但TXT之所以被称为“纯文本”,是因为它不支持章节、图片、封面和超链接。为了让电子书有格式、有图片、有内容,目前常见的电子书通常有PDF、ePub、MOBI三种格式。在:
  我们文章文章的主要目的是利用接下来要介绍的工具,制作一个内嵌图片、目录、外观清晰美观的电子书。相对而言,ePub 更加灵活,有完整的目录和自定义布局,也很容易转换成其他两种格式。本文从它开始。
  
  制作的电子书效果
  […] 查看全部

  抓取网页生成电子书(主流电子书格式大家最为熟知的电子书熟知格式(图))
  编者注(@Minja):在编写文章时,经常需要引用和回溯。对各种存档和剪辑工具的不满,让我萌生了自己制作电子书的念头。正好@Spencerwoo在这方面有扎实的折腾能力,于是摆脱了他,研究了一套简单易行的方法,写成文章分享给大家。
  虽然网络世界有很多有价值的文章,但并不是每一次阅读体验都令人满意。如果你想拥有出色的文章阅读体验,至少要确保我们正在阅读文章:
  很多时候,我们依靠浏览器的阅读方式,或者Pocket和RSS客户端来阅读。但是,阅读模式后期无法整理,而且大部分阅读服务的全文搜索功能都需要付费,网上的文章可能一天都找不到。或许,将 文章 保存为本地电子书是一种更方便的回顾选择。
  如果我们在网上看到一个网页形式的电子书,想直接把整个网页保存到本地(俗称“剪辑”),那简直是麻烦大了。现有的网页剪辑工具不仅会携带无用的、影响体验的广告和其他冗余区域,还会丢失重要和有价值的内容。不仅如此,几乎没有工具可以轻松抓取图片并自定义保存到本地的文章样式。那么,让我向您介绍一组免费制作个性化电子书的方法。
  本文主要使用开源工具 Pandoc。对于需要MOBI或PDF格式电子书的读者,文章后半部分也有简单的转换方法。
  ePub 电子书的突破
  目前主流的电子书格式有很多,但本文主要推荐ePub,它比较开放统一,可以很方便的转换成其他格式。
  
  主流电子书格式
  最广为人知的电子书格式可能是纯文本TXT格式,但TXT之所以被称为“纯文本”,是因为它不支持章节、图片、封面和超链接。为了让电子书有格式、有图片、有内容,目前常见的电子书通常有PDF、ePub、MOBI三种格式。在:
  我们文章文章的主要目的是利用接下来要介绍的工具,制作一个内嵌图片、目录、外观清晰美观的电子书。相对而言,ePub 更加灵活,有完整的目录和自定义布局,也很容易转换成其他两种格式。本文从它开始。
  
  制作的电子书效果
  […]

抓取网页生成电子书(网络书籍抓取器是一款帮助用户下载指定网页的某)

网站优化优采云 发表了文章 • 0 个评论 • 163 次浏览 • 2022-02-05 03:22 • 来自相关话题

  抓取网页生成电子书(网络书籍抓取器是一款帮助用户下载指定网页的某)
  在线图书抓取器是一款可以帮助用户下载指定网页的某本书和某章的软件。通过在线图书抓取器,可以快速下载小说。同时软件支持断点续传功能,非常方便。可以下载使用。
  
  网络图书采集器功能介绍
  可以提取指定小说目录页面的章节信息并进行调整,然后按照章节顺序抓取小说内容,在最合适的时候进行合并。爬取过程可以随时中断,关闭程序后可以恢复上一个任务。
  网络图书抓取软件的特点
  1、章节调整:提取目录后,可以进行移动、删除、反转等调整操作。调整将直接影响调整后的章节顺序中的最终书籍和输出。
  2、自动重试:爬取过程中,可能由于网络因素导致爬取失败。这个程序可能会自动重试直到成功,或者暂时中断爬取(中断后关闭程序不会影响进度),等网络好了再试。
  3、停止和恢复:可以随时停止捕捉过程,退出程序后不影响进度(章节信息会保存在记录中,程序结束后可以恢复捕捉下次运行。注意:需要先用停止键中断,然后退出程序,如果直接退出,将无法恢复)。
  4、一键抓取:又称“傻瓜模式”,基本可以实现全自动抓取合并功能,直接输出最终的文本文件。前面可能需要输入最基本的URL、save bit等信息(会有明显的操作提示),调整章节后也可以使用一键爬取,爬取和合并操作会自动完成。
  5、适用网站:已输入10个适用网站(选择后可快速打开网站找到想要的书),以及相应的代码也可以自动应用,其他小说网站也可以测试,如果一起使用,可以手动添加到设置文件中备份。
  6、轻松制作电子书:可以在设置文件中添加每章名称的前缀和后缀,为后期制作电子书的编目带来极大的方便。
  如何使用在线图书抓取器
  一、首先进入你要下载的小说的网页。
  二、输入书名,点击目录提取。
  
  三、设置保存路径,点击Start Grab开始下载。 查看全部

  抓取网页生成电子书(网络书籍抓取器是一款帮助用户下载指定网页的某)
  在线图书抓取器是一款可以帮助用户下载指定网页的某本书和某章的软件。通过在线图书抓取器,可以快速下载小说。同时软件支持断点续传功能,非常方便。可以下载使用。
  
  网络图书采集器功能介绍
  可以提取指定小说目录页面的章节信息并进行调整,然后按照章节顺序抓取小说内容,在最合适的时候进行合并。爬取过程可以随时中断,关闭程序后可以恢复上一个任务。
  网络图书抓取软件的特点
  1、章节调整:提取目录后,可以进行移动、删除、反转等调整操作。调整将直接影响调整后的章节顺序中的最终书籍和输出。
  2、自动重试:爬取过程中,可能由于网络因素导致爬取失败。这个程序可能会自动重试直到成功,或者暂时中断爬取(中断后关闭程序不会影响进度),等网络好了再试。
  3、停止和恢复:可以随时停止捕捉过程,退出程序后不影响进度(章节信息会保存在记录中,程序结束后可以恢复捕捉下次运行。注意:需要先用停止键中断,然后退出程序,如果直接退出,将无法恢复)。
  4、一键抓取:又称“傻瓜模式”,基本可以实现全自动抓取合并功能,直接输出最终的文本文件。前面可能需要输入最基本的URL、save bit等信息(会有明显的操作提示),调整章节后也可以使用一键爬取,爬取和合并操作会自动完成。
  5、适用网站:已输入10个适用网站(选择后可快速打开网站找到想要的书),以及相应的代码也可以自动应用,其他小说网站也可以测试,如果一起使用,可以手动添加到设置文件中备份。
  6、轻松制作电子书:可以在设置文件中添加每章名称的前缀和后缀,为后期制作电子书的编目带来极大的方便。
  如何使用在线图书抓取器
  一、首先进入你要下载的小说的网页。
  二、输入书名,点击目录提取。
  
  三、设置保存路径,点击Start Grab开始下载。

抓取网页生成电子书(基于Node.js开发的开源工具,GitBook版)

网站优化优采云 发表了文章 • 0 个评论 • 84 次浏览 • 2022-02-04 07:14 • 来自相关话题

  抓取网页生成电子书(基于Node.js开发的开源工具,GitBook版)
  GitBook 是一个基于 Node.js 开发的开源工具。它可以通过命令行创建电子书项目,然后使用MarkDown编写电子书内容,然后生成PDF、ePub、mobi格式的电子书,或者生成静态站点。
  此外,您还可以使用 Git 命令来管理电子书版本。如果你是 GitHub 的重度用户,你也可以将你的 GitBook 账号和你的 GitHub 账号绑定,这样无论两边修改什么,都可以相互同步。
  一、安装 Node.js
  由于 GitBook 是基于 Node.js 开发的,所以它依赖于 Node.js 环境。如果您的系统没有安装Node.js,请根据您使用的系统点击下方链接下载对应版本。如果已经安装,请跳过此步骤。
  Node.js 下载页面:
  Node.js的Windows版和Mac版都是常规安装包,下一步即可安装。Luunix版本可以参考官方文档通过yum、apt-get等工具安装,也可以通过源码包安装,如下图:
  $ wget https://nodejs.org/dist/v5.4.1/node-v5.4.1.tar.gz
$ tar zxvf node-v5.4.1.tar.gz
$ cd node-v5.4.1
$ ./configure
$ make
$ make install
  二、安装 GitBook
  打开命令提示符(在 Mac 上打开终端)并输入以下命令安装 GitBook:
  $ npm install gitbook-cli -g
  由于网络原因,安装时间可能会较长,请耐心等待安装完成。安装完成后,可以输入以下命令,通过查看GitBook的版本来判断是否安装成功:
  $ gitbook -V
  三、创建一个电子书项目
  新建目录,进入目录,用gitbook命令初始化电子书项目。例如,现在让我们创建一个名为“MyFirstBook”的空白电子书项目,如下所示:
  $ mkdir MyFirstBook
$ cd MyFirstBook
$ gitbook init
  四、编辑电子书内容
  初始化目录中会出现“README.md(电子书介绍文件)”和“SUMMARY.md(导航目录文件)”两个基本文件。此外,您还可以手动创建其他“Glossary.md(书末词汇)”、“book.json(电子书配置文件)”。可以根据自己的喜好为电子书的文本内容新建一个.md文件,比如“chapter01.md”,然后使用MarkDown编写具体的文本内容。这些文件将在下面详细描述。
  1、README.md
  这个文件是一个简单的电子书介绍,你可以对你制作的电子书做一个简单的描述:
  # 简介
这是我的第一本使用 GitBook 制作的电子书。
  2、SUMMARY.md
  这是电子书的导航目录文件。每当添加章节文件时,都需要在该文件中添加一条记录。对于 Kindle 书籍,该文件呈现的目录结构是开头的目录内容和“转到”目录导航。
  # Summary
* [简介](README.md)
* [第一章](section1/README.md)
* [第二章](section2/README.md)
  如果需要“小节”,可以使用Tab缩进(最多支持三级标题),如下:
  # Summary
* [第一章](section1/README.md)
* [第一节](section1/example1.md)
* [第二节](section1/example2.md)
* [第二章](section2/README.md)
* [第一节](section2/example1.md)
  3、词汇表.md
  电子书内容中需要解释的术语可以在本文档中定义。词汇表将放在电子书的末尾。其格式如下:
  # 电子书
电子书是指将文字、图片、声音、影像等讯息内容数字化的出版物和植入或下载数字化文字、图片、声音、影像等讯息内容的集存储和显示终端于一体的手持阅读器。
# Kindle
Amazon Kindle 是由 Amazon 设计和销售的电子书阅读器(以及软件平台)。用户可以通过无线网络使用 Amazon Kindle 购买、下载和阅读电子书、报纸、杂志、博客及其他电子媒体。
  4、book.json
  “book.json”是电子书的配置文件,可以看作是电子书的“原创数据”,如书名、描述、isbn、语言、方向、风格等。点此查看更多信息。其基本结构如下:
  {
"title": "我的第一本電子書",
"description": "用 GitBook 制作的第一本電子書!",
"isbn": "978-3-16-148410-0",
"language": "zh-tw",
"direction": "ltr"
}
  5、普通章节.md文件
  普通章节 .md 文件可以使用您喜欢的文本编辑器编写。MarkDown的编写,可以点击这里查看相关示例。每次编写 .md 文件时,不要忘记在“SUMMARY.md”文件中添加一条记录。
  6、电子书封面图片
  GitBook 帮助文档建议封面图片大小为 1800*2360 像素,并遵循以下建议:
  图片格式为jpg格式。将图片重命名为“cover.jpg”,放入电子书项目文件夹。
  五、预览电子书内容
  电子书内容编写完成后,可以使用浏览器进行预览。首先输入以下命令,从 .md 文件生成 HTML 文档:
  $ gitbook build
  构建完成后,eBook项目目录中会出现一个名为“_book”的文件夹。进入文件夹,直接用浏览器打开“index.html”,或者先输入以下命令:
  $ gitbook serve
  然后在浏览器中输入“:4000”预览电子书的内容,按Ctrl+C结束预览。
  六、生成电子书文件
  确认电子书没有问题后,输入以下命令即可生成mobi电子书:
  $ gitbook mobi ./ ./MyFirstBook.mobi
  如果出现以下错误信息,则说明您尚未安装 Calibre。由于 GitBook 依赖 Calibre 的 ebook-convert 生成 mobi 格式的电子书,请先下载并安装 Calibre。
  Error: Need to install ebook-convert from Calibre
  Calibre安装后,对于Mac OS X系统,需要先设置软链接:
  $ ln -s /Applications/calibre.app/Contents/MacOS/ebook-convert /usr/local/bin
  再次运行转换命令,生成 mobi 格式的电子书。
  七、将项目托管到
  以上所有步骤均在本地执行。如果需要实现电子书的版本管理,或者将电子书发布到网络,也可以通过 Git 命令在 Git 上托管本地项目。
  1、注册一个账号
  首先去注册一个帐户并创建一个新项目。在“设置”页面获取“Git URL(Git链接)”,链接如下:
  https://git.gitbook.com/kindlefere/myfirstbook.git
  2、安装 Git 软件
  在开始以下步骤之前,请确保您的系统上安装了 Git。一般Mac和Lunix都自带Git功能,可以在终端运行git --version查看Git版本。Windows一般不自带Git功能,请先点击这里下载安装。
  安装适用于 Windows 的 Git 时,您将看到两个选项:“仅从 Git Bash 使用 Git”和“从 Windows 命令提示符使用 Git”。前者是指在程序自带的单独终端中使用Git。后者意味着你可以通过系统自带的“命令提示符”来使用 Git 命令。大家可以根据自己的喜好来选择,我个人推荐使用后者。
  3、上传现有的电子书项目
  在本地新建一个文件夹,通过Git命令在本地抓取新创建的远程项目,如下图:
  $ mkdir MyFirstBook-Git
$ cd MyFirstBook-Git
$ git init
$ git pull https://git.gitbook.com/kindlefere/myfirstbook.git
  然后将本地项目“MyFirstBook”的所有内容复制到新创建的文件夹中,如上面的“MyFirstBook-Git”。然后使用Git命令将本地项目上传到远程,如下:
  $ git add -A
$ git commit -m "提交说明"
$ git remote add gitbook https://git.gitbook.com/kindlefere/myfirstbook.git
$ git push -u gitbook master
  在此期间,您需要输入您的 GitBook 注册邮箱和密码。以后修改内容后,只需要输入如下Git命令即可:
  $ git add [修改的文件]
$ git commit -m "提交说明"
$ git push -u gitbook master
  八、将项目链接到 GitHub 帐户
  如果你喜欢使用 GitHub 来管理你的项目。您还可以将您的 GitBook 帐户链接到您的 GitHub 帐户,以便您的更改可以相互同步。
  1、链接 GitBook 和 GitHub 帐户
  关联设置也很简单,首先进入GitBook的“账户设置”页面,在“Profile(个人数据)”选项卡中找到“GitHub”选项卡,点击【Connect to GitHub】按钮转至GitHub的“Authorize” “申请”页面,点击【授权申请】按钮完成关联。
  2、将 GitBook 项目导入 GitHub
  关联完成后,您可以设置同步的电子书项目。以电子书项目“MyFirstBook”为例,首先需要将项目导入GitHub。转到电子书项目的设置页面并切换到“GitHub”选项卡。在“GitHub Repository”中,点击[Export to GitHub]按钮,按照向导中的步骤将项目导入GitHub。
  3、设置 GitBook 和 GitHub 同步
  导出成功后,回到GitBook项目设置页面的“GitHub”选项卡,在“GitHub Repository”的输入框中填写GitHub Repository名称,如“GitHub username/myfirstbook”,点击【保存]按钮保存。
  保存后,当前页面会出现一个名为“集成”的选项卡。点击里面的【添加 webhook】按钮,让 GitBook 可以接收来自 Github 的内容更新。这会将 GitBook 上的项目与 GitHub 上的相应项目链接起来。
  之后就可以使用 GitHub 来管理电子书项目,GitBook 上电子书内容的修改也会自动同步到 GitHub。 查看全部

  抓取网页生成电子书(基于Node.js开发的开源工具,GitBook版)
  GitBook 是一个基于 Node.js 开发的开源工具。它可以通过命令行创建电子书项目,然后使用MarkDown编写电子书内容,然后生成PDF、ePub、mobi格式的电子书,或者生成静态站点。
  此外,您还可以使用 Git 命令来管理电子书版本。如果你是 GitHub 的重度用户,你也可以将你的 GitBook 账号和你的 GitHub 账号绑定,这样无论两边修改什么,都可以相互同步。
  一、安装 Node.js
  由于 GitBook 是基于 Node.js 开发的,所以它依赖于 Node.js 环境。如果您的系统没有安装Node.js,请根据您使用的系统点击下方链接下载对应版本。如果已经安装,请跳过此步骤。
  Node.js 下载页面:
  Node.js的Windows版和Mac版都是常规安装包,下一步即可安装。Luunix版本可以参考官方文档通过yum、apt-get等工具安装,也可以通过源码包安装,如下图:
  $ wget https://nodejs.org/dist/v5.4.1/node-v5.4.1.tar.gz
$ tar zxvf node-v5.4.1.tar.gz
$ cd node-v5.4.1
$ ./configure
$ make
$ make install
  二、安装 GitBook
  打开命令提示符(在 Mac 上打开终端)并输入以下命令安装 GitBook:
  $ npm install gitbook-cli -g
  由于网络原因,安装时间可能会较长,请耐心等待安装完成。安装完成后,可以输入以下命令,通过查看GitBook的版本来判断是否安装成功:
  $ gitbook -V
  三、创建一个电子书项目
  新建目录,进入目录,用gitbook命令初始化电子书项目。例如,现在让我们创建一个名为“MyFirstBook”的空白电子书项目,如下所示:
  $ mkdir MyFirstBook
$ cd MyFirstBook
$ gitbook init
  四、编辑电子书内容
  初始化目录中会出现“README.md(电子书介绍文件)”和“SUMMARY.md(导航目录文件)”两个基本文件。此外,您还可以手动创建其他“Glossary.md(书末词汇)”、“book.json(电子书配置文件)”。可以根据自己的喜好为电子书的文本内容新建一个.md文件,比如“chapter01.md”,然后使用MarkDown编写具体的文本内容。这些文件将在下面详细描述。
  1、README.md
  这个文件是一个简单的电子书介绍,你可以对你制作的电子书做一个简单的描述:
  # 简介
这是我的第一本使用 GitBook 制作的电子书。
  2、SUMMARY.md
  这是电子书的导航目录文件。每当添加章节文件时,都需要在该文件中添加一条记录。对于 Kindle 书籍,该文件呈现的目录结构是开头的目录内容和“转到”目录导航。
  # Summary
* [简介](README.md)
* [第一章](section1/README.md)
* [第二章](section2/README.md)
  如果需要“小节”,可以使用Tab缩进(最多支持三级标题),如下:
  # Summary
* [第一章](section1/README.md)
* [第一节](section1/example1.md)
* [第二节](section1/example2.md)
* [第二章](section2/README.md)
* [第一节](section2/example1.md)
  3、词汇表.md
  电子书内容中需要解释的术语可以在本文档中定义。词汇表将放在电子书的末尾。其格式如下:
  # 电子书
电子书是指将文字、图片、声音、影像等讯息内容数字化的出版物和植入或下载数字化文字、图片、声音、影像等讯息内容的集存储和显示终端于一体的手持阅读器。
# Kindle
Amazon Kindle 是由 Amazon 设计和销售的电子书阅读器(以及软件平台)。用户可以通过无线网络使用 Amazon Kindle 购买、下载和阅读电子书、报纸、杂志、博客及其他电子媒体。
  4、book.json
  “book.json”是电子书的配置文件,可以看作是电子书的“原创数据”,如书名、描述、isbn、语言、方向、风格等。点此查看更多信息。其基本结构如下:
  {
"title": "我的第一本電子書",
"description": "用 GitBook 制作的第一本電子書!",
"isbn": "978-3-16-148410-0",
"language": "zh-tw",
"direction": "ltr"
}
  5、普通章节.md文件
  普通章节 .md 文件可以使用您喜欢的文本编辑器编写。MarkDown的编写,可以点击这里查看相关示例。每次编写 .md 文件时,不要忘记在“SUMMARY.md”文件中添加一条记录。
  6、电子书封面图片
  GitBook 帮助文档建议封面图片大小为 1800*2360 像素,并遵循以下建议:
  图片格式为jpg格式。将图片重命名为“cover.jpg”,放入电子书项目文件夹。
  五、预览电子书内容
  电子书内容编写完成后,可以使用浏览器进行预览。首先输入以下命令,从 .md 文件生成 HTML 文档:
  $ gitbook build
  构建完成后,eBook项目目录中会出现一个名为“_book”的文件夹。进入文件夹,直接用浏览器打开“index.html”,或者先输入以下命令:
  $ gitbook serve
  然后在浏览器中输入“:4000”预览电子书的内容,按Ctrl+C结束预览。
  六、生成电子书文件
  确认电子书没有问题后,输入以下命令即可生成mobi电子书:
  $ gitbook mobi ./ ./MyFirstBook.mobi
  如果出现以下错误信息,则说明您尚未安装 Calibre。由于 GitBook 依赖 Calibre 的 ebook-convert 生成 mobi 格式的电子书,请先下载并安装 Calibre。
  Error: Need to install ebook-convert from Calibre
  Calibre安装后,对于Mac OS X系统,需要先设置软链接:
  $ ln -s /Applications/calibre.app/Contents/MacOS/ebook-convert /usr/local/bin
  再次运行转换命令,生成 mobi 格式的电子书。
  七、将项目托管到
  以上所有步骤均在本地执行。如果需要实现电子书的版本管理,或者将电子书发布到网络,也可以通过 Git 命令在 Git 上托管本地项目。
  1、注册一个账号
  首先去注册一个帐户并创建一个新项目。在“设置”页面获取“Git URL(Git链接)”,链接如下:
  https://git.gitbook.com/kindlefere/myfirstbook.git
  2、安装 Git 软件
  在开始以下步骤之前,请确保您的系统上安装了 Git。一般Mac和Lunix都自带Git功能,可以在终端运行git --version查看Git版本。Windows一般不自带Git功能,请先点击这里下载安装。
  安装适用于 Windows 的 Git 时,您将看到两个选项:“仅从 Git Bash 使用 Git”和“从 Windows 命令提示符使用 Git”。前者是指在程序自带的单独终端中使用Git。后者意味着你可以通过系统自带的“命令提示符”来使用 Git 命令。大家可以根据自己的喜好来选择,我个人推荐使用后者。
  3、上传现有的电子书项目
  在本地新建一个文件夹,通过Git命令在本地抓取新创建的远程项目,如下图:
  $ mkdir MyFirstBook-Git
$ cd MyFirstBook-Git
$ git init
$ git pull https://git.gitbook.com/kindlefere/myfirstbook.git
  然后将本地项目“MyFirstBook”的所有内容复制到新创建的文件夹中,如上面的“MyFirstBook-Git”。然后使用Git命令将本地项目上传到远程,如下:
  $ git add -A
$ git commit -m "提交说明"
$ git remote add gitbook https://git.gitbook.com/kindlefere/myfirstbook.git
$ git push -u gitbook master
  在此期间,您需要输入您的 GitBook 注册邮箱和密码。以后修改内容后,只需要输入如下Git命令即可:
  $ git add [修改的文件]
$ git commit -m "提交说明"
$ git push -u gitbook master
  八、将项目链接到 GitHub 帐户
  如果你喜欢使用 GitHub 来管理你的项目。您还可以将您的 GitBook 帐户链接到您的 GitHub 帐户,以便您的更改可以相互同步。
  1、链接 GitBook 和 GitHub 帐户
  关联设置也很简单,首先进入GitBook的“账户设置”页面,在“Profile(个人数据)”选项卡中找到“GitHub”选项卡,点击【Connect to GitHub】按钮转至GitHub的“Authorize” “申请”页面,点击【授权申请】按钮完成关联。
  2、将 GitBook 项目导入 GitHub
  关联完成后,您可以设置同步的电子书项目。以电子书项目“MyFirstBook”为例,首先需要将项目导入GitHub。转到电子书项目的设置页面并切换到“GitHub”选项卡。在“GitHub Repository”中,点击[Export to GitHub]按钮,按照向导中的步骤将项目导入GitHub。
  3、设置 GitBook 和 GitHub 同步
  导出成功后,回到GitBook项目设置页面的“GitHub”选项卡,在“GitHub Repository”的输入框中填写GitHub Repository名称,如“GitHub username/myfirstbook”,点击【保存]按钮保存。
  保存后,当前页面会出现一个名为“集成”的选项卡。点击里面的【添加 webhook】按钮,让 GitBook 可以接收来自 Github 的内容更新。这会将 GitBook 上的项目与 GitHub 上的相应项目链接起来。
  之后就可以使用 GitHub 来管理电子书项目,GitBook 上电子书内容的修改也会自动同步到 GitHub。

抓取网页生成电子书(用urllib来爬取网页生成电子书的方法有哪些)

网站优化优采云 发表了文章 • 0 个评论 • 62 次浏览 • 2022-02-04 07:06 • 来自相关话题

  抓取网页生成电子书(用urllib来爬取网页生成电子书的方法有哪些)
  抓取网页生成电子书,我目前想到的方法有,爬虫爬取图片,然后根据图片文件名转换,将出版社获取并保存数据库。甚至可以爬取网站服务器的页面等等。另外,图片比较多的话,可以使用gimp、photoshop等软件。比如这个。
  建议安装一个可以爬取网页的搜索引擎,比如urllib.request。
  你可以用国外软件bookscombiy[]
  用urllib来爬,chrome有插件taobaoui可以选取网页里每个链接的信息,获取电子书名和作者,
  通过scrapy抓取网页,然后利用javascript,然后利用数据库等,
<p>我的方法:建一个反爬虫系统,找到客户端的地址,发给爬虫。爬虫爬这个页面,发给网站,再发回去。客户端地址就是所爬过页面。具体代码: 查看全部

  抓取网页生成电子书(用urllib来爬取网页生成电子书的方法有哪些)
  抓取网页生成电子书,我目前想到的方法有,爬虫爬取图片,然后根据图片文件名转换,将出版社获取并保存数据库。甚至可以爬取网站服务器的页面等等。另外,图片比较多的话,可以使用gimp、photoshop等软件。比如这个。
  建议安装一个可以爬取网页的搜索引擎,比如urllib.request。
  你可以用国外软件bookscombiy[]
  用urllib来爬,chrome有插件taobaoui可以选取网页里每个链接的信息,获取电子书名和作者,
  通过scrapy抓取网页,然后利用javascript,然后利用数据库等,
<p>我的方法:建一个反爬虫系统,找到客户端的地址,发给爬虫。爬虫爬这个页面,发给网站,再发回去。客户端地址就是所爬过页面。具体代码:

抓取网页生成电子书(搜狗收录应该怎么做?搜狗SEO工程师收录方法,搜狗推送 )

网站优化优采云 发表了文章 • 0 个评论 • 66 次浏览 • 2022-02-03 22:18 • 来自相关话题

  抓取网页生成电子书(搜狗收录应该怎么做?搜狗SEO工程师收录方法,搜狗推送
)
  搜狗收录应该怎么做?下面我们来看看搜狗的SEO工程师搜狗收录的方法。做好搜狗网站收录,必须具备以下几个维度。否则,搜狗将很难收录你的域名。
  
  搜狗推
  一、 服务器稳定
  任何网站收录或者排名都需要稳定的服务器,好的服务器是SEO优化的基础,尤其是网站,服务器出错会导致搜狗搜索引擎无法捕捉没有 收录 排名。
  二、搜狗老域名
  老域名对于搜狗搜索引擎具有得天独厚的优势。搜狗搜索引擎对老域名的信任度很高(被称为有中国历史的老域名)。只要老域名没有错误,很容易收录首页或者内页,比新域名更稳定。所以懂搜狗搜索引擎的SEO人员会选择老域名,但是老搜狗域名也是有风险的。购买旧域名时,请仔细查看。如果旧域名已经被处罚,那么你就不应该购买这样的域名,因为如果你买了,就不会有更大的改善!
  三、 搜狗节目选择
  搜狗蜘蛛对网页的抓取是通过网页之间的链接实现的。在选择程序的时候,一定要选择内置的链接功能,网页之间有更多的推荐或链接。强大的联动功能让搜狗蜘蛛对网站的抓取更加全面。自动生成Sitemap地图可以更好的让搜狗了解你的网站结构和布局。搜狗更喜欢静态页面。选择课程时,尽量选择原创学位模板过高的静态网站课程。
  四、 网站内容
  网站未被搜狗列出收录,请提交新的网站链接到搜狗站长平台,搜狗搜索引擎更注重标题+描述。因此,在填写网站的内容时,标题+第一段尽量是原创或伪原创。
  五、搜狗投稿收录
  搜狗推送有用吗?绝对有用!毫无疑问!搜狗官方:(为了让搜狗蜘蛛更快发现你的网站,你也可以通过网站收录收录提交单页申请)
  搜狗官方有几种提交方式:
  
  搜狗投稿工具
  有2种类型的提交:
  1、 验证站点提交(每个站点每天 200 个项目)
  2、 未经验证的网站提交。(单个账号每日限制200个未验证站点)
  3、sitemap.xml提交(包括搜狗邀请系统,大部分人没有权限,只能选择验证推送或者非验证推送来改进收录)
  六、搜狗收录时间
  搜狗蜘蛛只与同一IP地址的服务器主机建立一个连接,爬取间隔速度控制在几秒内。一个网页在收录之后,最快也要几天才会更新。如果您不断地抓取您的 网站,请注意您的 网站 上的页面会在每次访问时生成新链接。
  
  搜狗收录
  以上小编搜狗网站的收录的效果。这就是今天的分享!看完这篇文章,如果你觉得不错,不妨采集起来,或者发给需要的朋友和同事!你的一举一动都会成为小编源源不断的动力!
   查看全部

  抓取网页生成电子书(搜狗收录应该怎么做?搜狗SEO工程师收录方法,搜狗推送
)
  搜狗收录应该怎么做?下面我们来看看搜狗的SEO工程师搜狗收录的方法。做好搜狗网站收录,必须具备以下几个维度。否则,搜狗将很难收录你的域名。
  
  搜狗推
  一、 服务器稳定
  任何网站收录或者排名都需要稳定的服务器,好的服务器是SEO优化的基础,尤其是网站,服务器出错会导致搜狗搜索引擎无法捕捉没有 收录 排名。
  二、搜狗老域名
  老域名对于搜狗搜索引擎具有得天独厚的优势。搜狗搜索引擎对老域名的信任度很高(被称为有中国历史的老域名)。只要老域名没有错误,很容易收录首页或者内页,比新域名更稳定。所以懂搜狗搜索引擎的SEO人员会选择老域名,但是老搜狗域名也是有风险的。购买旧域名时,请仔细查看。如果旧域名已经被处罚,那么你就不应该购买这样的域名,因为如果你买了,就不会有更大的改善!
  三、 搜狗节目选择
  搜狗蜘蛛对网页的抓取是通过网页之间的链接实现的。在选择程序的时候,一定要选择内置的链接功能,网页之间有更多的推荐或链接。强大的联动功能让搜狗蜘蛛对网站的抓取更加全面。自动生成Sitemap地图可以更好的让搜狗了解你的网站结构和布局。搜狗更喜欢静态页面。选择课程时,尽量选择原创学位模板过高的静态网站课程。
  四、 网站内容
  网站未被搜狗列出收录,请提交新的网站链接到搜狗站长平台,搜狗搜索引擎更注重标题+描述。因此,在填写网站的内容时,标题+第一段尽量是原创或伪原创
  五、搜狗投稿收录
  搜狗推送有用吗?绝对有用!毫无疑问!搜狗官方:(为了让搜狗蜘蛛更快发现你的网站,你也可以通过网站收录收录提交单页申请)
  搜狗官方有几种提交方式:
  
  搜狗投稿工具
  有2种类型的提交:
  1、 验证站点提交(每个站点每天 200 个项目)
  2、 未经验证的网站提交。(单个账号每日限制200个未验证站点)
  3、sitemap.xml提交(包括搜狗邀请系统,大部分人没有权限,只能选择验证推送或者非验证推送来改进收录)
  六、搜狗收录时间
  搜狗蜘蛛只与同一IP地址的服务器主机建立一个连接,爬取间隔速度控制在几秒内。一个网页在收录之后,最快也要几天才会更新。如果您不断地抓取您的 网站,请注意您的 网站 上的页面会在每次访问时生成新链接。
  
  搜狗收录
  以上小编搜狗网站的收录的效果。这就是今天的分享!看完这篇文章,如果你觉得不错,不妨采集起来,或者发给需要的朋友和同事!你的一举一动都会成为小编源源不断的动力!
  

抓取网页生成电子书(仅以界面操作方式-RSS功能模块)

网站优化优采云 发表了文章 • 0 个评论 • 91 次浏览 • 2022-02-01 13:15 • 来自相关话题

  抓取网页生成电子书(仅以界面操作方式-RSS功能模块)
  Kindle Companion之前写过一篇文章文章——在Google Developer Console上使用KindleEar搭建RSS推送服务器。安装成功后,您可以添加自己喜欢的RSS feed,KindleEar会自动抓取最新的文章,并以期刊的形式定期推送到您的Kindle。那么除此之外,还有其他方法可以抓取 RSS 提要吗?当然有!Calibre 本身有一个 RSS 捕获功能模块,KindleEar 就是基于这个模块编写的。Calibre虽然有命令行操作方式,但对普通用户不是很友好,所以本文仅以界面操作方式为例。
  一、准备提要
  RSS订阅地址多种多样,没有一定的规则,获取RSS地址的方法也不同。一般提供RSS订阅的网站都会提供一个RSS图标,点击即可获取该网站的RSS订阅地址。如果页面上没有这个图标,可以查看网页的源码,找到类似“href=""/&gt;这样的一行,就是RSS地址。另外,一些浏览器如火狐、Opera等会自动获取网站 RSS订阅地址,并在地址栏标出RSS小图标,也可以轻松获取本站RSS地址。
  二、添加提要
  准备好 RSS 提要后,您可以在 Calibre 中添加它们。打开Calibre,在Calibre主界面顶部的功能图标中找到“抓取新闻”,点击右侧的向下箭头,在弹出的菜单中点击“添加自定义新闻源”。
  
  在弹出的对话框中,点击【新建配方】按钮,切换到“添加自定义新闻源”对话框。在“订阅列表标题”中输入一个名称,例如“我的订阅”(此名称是一个类别名称,将收录一组 RSS 提要地址)。
  “最老的文章”可以设置抓取文章的及时性。默认情况下,Calibre 只会在过去 7 天内抓取 文章。如果你想抢更多,你可以自定义更改天数。“每个源的最大 文章 秒数”设置要抓取的最大 文章 秒数。不过需要注意的是,这两个设置受限于网站 RSS的输出方式。比如有些网站的RSS只输出有限个最新的文章,所以无论在Calibre中如何设置都受这个限制,可能无法获取到指定的文章 的数量;
  接下来,我们需要在“将新闻添加到订阅”中添加我们想要保留的 RSS 地址。同样在“Source Name”中输入RSS订阅的名称,如“Kindle Companion”;然后在“Source URL”中输入RSS地址,如“”;最后,点击【添加来源】按钮,在“订阅列表中的新闻”中添加一个RSS订阅。在一个订阅列表中可以抓取多个RSS订阅,因此您可以重复输入多个RSS订阅名称和来源网址并添加多次。
  
  添加RSS提要地址后。点击右下角的【保存】按钮保存并返回“添加自定义动态消息”界面。如需修改,可在左侧列表中选择一项,然后点击【编辑此配方】按钮进行修改。如果要修改它,请单击[删除此配方]按钮将其删除。如果没有问题,可以点击【关闭】按钮返回Calibre主界面。
  三、获取和推送
  设置好 Feed 后,您就可以抓取新闻了。同样,在Calibre主界面上方的功能图标中找到“抓取新闻”,点击,弹出“定期新闻下载”对话框。在左侧列表中找到“自定义”类别,点击展开,可以找到刚刚添加的订阅列表。选择好之后,点击界面下方的【立即下载】按钮,Calibre就会开始爬取RSS内容。
  
  抓取成功后,Calibre 会生成一本期刊格式的电子书,并自动存入图书馆。如果您设置了电子邮件推送,Calibre 还会自动将生成的电子书推送到云端,以便自动同步到您的 Kindle。
  
  当然,除了这种手动爬取方式,你还可以通过“定时下载”来定时爬取,比如每周、每月或者每隔指定天数爬取RSS内容,但前提是你要保持电脑开机,让您的计算机保持在线状态。
  另外需要注意的是,网站的一些RSS只输出摘要,所以Calibre只能抓取摘要内容;如果您订阅的 RSS 被屏蔽并且您的网络没有使用代理,则 Failed to crawl 成功。
  Kindle Companion之前写过一篇文章文章——在Google Developer Console上使用KindleEar搭建RSS推送服务器。安装成功后,您可以添加自己喜欢的RSS feed,KindleEar会自动抓取最新的文章,并以期刊的形式定期推送到您的Kindle。那么除此之外,还有其他方法可以抓取 RSS 提要吗?当然有!Calibre 本身有一个 RSS 捕获功能模块,KindleEar 就是基于这个模块编写的。Calibre虽然有命令行操作方式,但对普通用户不是很友好,所以本文仅以界面操作方式为例。
  一、准备提要
  RSS订阅地址多种多样,没有一定的规则,获取RSS地址的方法也不同。一般提供RSS订阅的网站都会提供一个RSS图标,点击即可获取该网站的RSS订阅地址。如果页面上没有这个图标,可以查看网页的源码,找到类似“href=""/&gt;这样的一行,就是RSS地址。另外,一些浏览器如火狐、Opera等会自动获取网站 RSS订阅地址,并在地址栏标出RSS小图标,也可以轻松获取本站RSS地址。
  二、添加提要
  准备好 RSS 提要后,您可以在 Calibre 中添加它们。打开Calibre,在Calibre主界面顶部的功能图标中找到“抓取新闻”,点击右侧的向下箭头,在弹出的菜单中点击“添加自定义新闻源”。
  
  在弹出的对话框中,点击【新建配方】按钮,切换到“添加自定义新闻源”对话框。在“订阅列表标题”中输入一个名称,例如“我的订阅”(此名称是一个类别名称,将收录一组 RSS 提要地址)。
  “最老的文章”可以设置抓取文章的及时性。默认情况下,Calibre 只会在过去 7 天内抓取 文章。如果你想抢更多,你可以自定义更改天数。“每个源的最大 文章 秒数”设置要抓取的最大 文章 秒数。不过需要注意的是,这两个设置受限于网站 RSS的输出方式。比如有些网站的RSS只输出有限个最新的文章,所以无论在Calibre中如何设置都受这个限制,可能无法获取到指定的文章 的数量;
  接下来,我们需要在“将新闻添加到订阅”中添加我们想要保留的 RSS 地址。同样在“Source Name”中输入RSS订阅的名称,如“Kindle Companion”;然后在“Source URL”中输入RSS地址,如“”;最后,点击【添加来源】按钮,在“订阅列表中的新闻”中添加一个RSS订阅。在一个订阅列表中可以抓取多个RSS订阅,因此您可以重复输入多个RSS订阅名称和来源网址并添加多次。
  
  添加RSS提要地址后。点击右下角的【保存】按钮保存并返回“添加自定义动态消息”界面。如需修改,可在左侧列表中选择一项,然后点击【编辑此配方】按钮进行修改。如果要修改它,请单击[删除此配方]按钮将其删除。如果没有问题,可以点击【关闭】按钮返回Calibre主界面。
  三、获取和推送
  设置好 Feed 后,您就可以抓取新闻了。同样,在Calibre主界面上方的功能图标中找到“抓取新闻”,点击,弹出“定期新闻下载”对话框。在左侧列表中找到“自定义”类别,点击展开,可以找到刚刚添加的订阅列表。选择好之后,点击界面下方的【立即下载】按钮,Calibre就会开始爬取RSS内容。
  
  抓取成功后,Calibre 会生成一本期刊格式的电子书,并自动存入图书馆。如果您设置了电子邮件推送,Calibre 还会自动将生成的电子书推送到云端,以便自动同步到您的 Kindle。
  
  当然,除了这种手动爬取方式,你还可以通过“定时下载”来定时爬取,比如每周、每月或者每隔指定天数爬取RSS内容,但前提是你要保持电脑开机,让您的计算机保持在线状态。
  另外需要注意的是,网站的一些RSS只输出摘要,所以Calibre只能抓取摘要内容;如果您订阅的 RSS 被屏蔽并且您的网络没有使用代理,则 Failed to crawl 成功。 查看全部

  抓取网页生成电子书(仅以界面操作方式-RSS功能模块)
  Kindle Companion之前写过一篇文章文章——在Google Developer Console上使用KindleEar搭建RSS推送服务器。安装成功后,您可以添加自己喜欢的RSS feed,KindleEar会自动抓取最新的文章,并以期刊的形式定期推送到您的Kindle。那么除此之外,还有其他方法可以抓取 RSS 提要吗?当然有!Calibre 本身有一个 RSS 捕获功能模块,KindleEar 就是基于这个模块编写的。Calibre虽然有命令行操作方式,但对普通用户不是很友好,所以本文仅以界面操作方式为例。
  一、准备提要
  RSS订阅地址多种多样,没有一定的规则,获取RSS地址的方法也不同。一般提供RSS订阅的网站都会提供一个RSS图标,点击即可获取该网站的RSS订阅地址。如果页面上没有这个图标,可以查看网页的源码,找到类似“href=""/&gt;这样的一行,就是RSS地址。另外,一些浏览器如火狐、Opera等会自动获取网站 RSS订阅地址,并在地址栏标出RSS小图标,也可以轻松获取本站RSS地址。
  二、添加提要
  准备好 RSS 提要后,您可以在 Calibre 中添加它们。打开Calibre,在Calibre主界面顶部的功能图标中找到“抓取新闻”,点击右侧的向下箭头,在弹出的菜单中点击“添加自定义新闻源”。
  
  在弹出的对话框中,点击【新建配方】按钮,切换到“添加自定义新闻源”对话框。在“订阅列表标题”中输入一个名称,例如“我的订阅”(此名称是一个类别名称,将收录一组 RSS 提要地址)。
  “最老的文章”可以设置抓取文章的及时性。默认情况下,Calibre 只会在过去 7 天内抓取 文章。如果你想抢更多,你可以自定义更改天数。“每个源的最大 文章 秒数”设置要抓取的最大 文章 秒数。不过需要注意的是,这两个设置受限于网站 RSS的输出方式。比如有些网站的RSS只输出有限个最新的文章,所以无论在Calibre中如何设置都受这个限制,可能无法获取到指定的文章 的数量;
  接下来,我们需要在“将新闻添加到订阅”中添加我们想要保留的 RSS 地址。同样在“Source Name”中输入RSS订阅的名称,如“Kindle Companion”;然后在“Source URL”中输入RSS地址,如“”;最后,点击【添加来源】按钮,在“订阅列表中的新闻”中添加一个RSS订阅。在一个订阅列表中可以抓取多个RSS订阅,因此您可以重复输入多个RSS订阅名称和来源网址并添加多次。
  
  添加RSS提要地址后。点击右下角的【保存】按钮保存并返回“添加自定义动态消息”界面。如需修改,可在左侧列表中选择一项,然后点击【编辑此配方】按钮进行修改。如果要修改它,请单击[删除此配方]按钮将其删除。如果没有问题,可以点击【关闭】按钮返回Calibre主界面。
  三、获取和推送
  设置好 Feed 后,您就可以抓取新闻了。同样,在Calibre主界面上方的功能图标中找到“抓取新闻”,点击,弹出“定期新闻下载”对话框。在左侧列表中找到“自定义”类别,点击展开,可以找到刚刚添加的订阅列表。选择好之后,点击界面下方的【立即下载】按钮,Calibre就会开始爬取RSS内容。
  
  抓取成功后,Calibre 会生成一本期刊格式的电子书,并自动存入图书馆。如果您设置了电子邮件推送,Calibre 还会自动将生成的电子书推送到云端,以便自动同步到您的 Kindle。
  
  当然,除了这种手动爬取方式,你还可以通过“定时下载”来定时爬取,比如每周、每月或者每隔指定天数爬取RSS内容,但前提是你要保持电脑开机,让您的计算机保持在线状态。
  另外需要注意的是,网站的一些RSS只输出摘要,所以Calibre只能抓取摘要内容;如果您订阅的 RSS 被屏蔽并且您的网络没有使用代理,则 Failed to crawl 成功。
  Kindle Companion之前写过一篇文章文章——在Google Developer Console上使用KindleEar搭建RSS推送服务器。安装成功后,您可以添加自己喜欢的RSS feed,KindleEar会自动抓取最新的文章,并以期刊的形式定期推送到您的Kindle。那么除此之外,还有其他方法可以抓取 RSS 提要吗?当然有!Calibre 本身有一个 RSS 捕获功能模块,KindleEar 就是基于这个模块编写的。Calibre虽然有命令行操作方式,但对普通用户不是很友好,所以本文仅以界面操作方式为例。
  一、准备提要
  RSS订阅地址多种多样,没有一定的规则,获取RSS地址的方法也不同。一般提供RSS订阅的网站都会提供一个RSS图标,点击即可获取该网站的RSS订阅地址。如果页面上没有这个图标,可以查看网页的源码,找到类似“href=""/&gt;这样的一行,就是RSS地址。另外,一些浏览器如火狐、Opera等会自动获取网站 RSS订阅地址,并在地址栏标出RSS小图标,也可以轻松获取本站RSS地址。
  二、添加提要
  准备好 RSS 提要后,您可以在 Calibre 中添加它们。打开Calibre,在Calibre主界面顶部的功能图标中找到“抓取新闻”,点击右侧的向下箭头,在弹出的菜单中点击“添加自定义新闻源”。
  
  在弹出的对话框中,点击【新建配方】按钮,切换到“添加自定义新闻源”对话框。在“订阅列表标题”中输入一个名称,例如“我的订阅”(此名称是一个类别名称,将收录一组 RSS 提要地址)。
  “最老的文章”可以设置抓取文章的及时性。默认情况下,Calibre 只会在过去 7 天内抓取 文章。如果你想抢更多,你可以自定义更改天数。“每个源的最大 文章 秒数”设置要抓取的最大 文章 秒数。不过需要注意的是,这两个设置受限于网站 RSS的输出方式。比如有些网站的RSS只输出有限个最新的文章,所以无论在Calibre中如何设置都受这个限制,可能无法获取到指定的文章 的数量;
  接下来,我们需要在“将新闻添加到订阅”中添加我们想要保留的 RSS 地址。同样在“Source Name”中输入RSS订阅的名称,如“Kindle Companion”;然后在“Source URL”中输入RSS地址,如“”;最后,点击【添加来源】按钮,在“订阅列表中的新闻”中添加一个RSS订阅。在一个订阅列表中可以抓取多个RSS订阅,因此您可以重复输入多个RSS订阅名称和来源网址并添加多次。
  
  添加RSS提要地址后。点击右下角的【保存】按钮保存并返回“添加自定义动态消息”界面。如需修改,可在左侧列表中选择一项,然后点击【编辑此配方】按钮进行修改。如果要修改它,请单击[删除此配方]按钮将其删除。如果没有问题,可以点击【关闭】按钮返回Calibre主界面。
  三、获取和推送
  设置好 Feed 后,您就可以抓取新闻了。同样,在Calibre主界面上方的功能图标中找到“抓取新闻”,点击,弹出“定期新闻下载”对话框。在左侧列表中找到“自定义”类别,点击展开,可以找到刚刚添加的订阅列表。选择好之后,点击界面下方的【立即下载】按钮,Calibre就会开始爬取RSS内容。
  
  抓取成功后,Calibre 会生成一本期刊格式的电子书,并自动存入图书馆。如果您设置了电子邮件推送,Calibre 还会自动将生成的电子书推送到云端,以便自动同步到您的 Kindle。
  
  当然,除了这种手动爬取方式,你还可以通过“定时下载”来定时爬取,比如每周、每月或者每隔指定天数爬取RSS内容,但前提是你要保持电脑开机,让您的计算机保持在线状态。
  另外需要注意的是,网站的一些RSS只输出摘要,所以Calibre只能抓取摘要内容;如果您订阅的 RSS 被屏蔽并且您的网络没有使用代理,则 Failed to crawl 成功。

抓取网页生成电子书(微信朋友圈效果[外链图片转存失败(img-Q117HJ9K-25) )

网站优化优采云 发表了文章 • 0 个评论 • 63 次浏览 • 2022-02-01 13:11 • 来自相关话题

  抓取网页生成电子书(微信朋友圈效果[外链图片转存失败(img-Q117HJ9K-25)
)
  介绍
  朋友圈留着你的数据,留着美好的回忆,记录着我们的每一点成长。从某种意义上说,发朋友圈就是记录生活,感受生活,见证每个人每一步的成长。
  如此珍贵的记忆,何不保存呢?只需一杯咖啡时间,即可一键打印朋友圈。可以是纸质书也可以是电子书,可以长期保存,比拍照好,有时间足迹记忆。
  现在,您可以选择打印电子书或纸质书。如果印刷纸质书,可以找第三方机构购买;如果你打印一本电子书,我们可以自己生成,这样可以节省很多钱。
  部分截图
  在开始编写代码思路之前,我们先来看看最终生成的效果。
  电子书效果
  [外链图片传输失败(img-TH9tBgCt-24)(%E4%B8%80%E9%94%AE%E7%94%9F%E6%88%90%E4%B8%AA% E4 %BA%BA%E5%BE%AE%E4%BF%A1%E6%9C%8B%E5%8F%8B%E5%9C%88%E6%95%B0%E6%8D%AE%E7% 94 %B5%E5%AD%90%E4%B9%A6/图像/页面1.png)]
  [外链图片传输失败(img-Q117HJ9K-25)(%E4%B8%80%E9%94%AE%E7%94%9F%E6%88%90%E4%B8%AA% E4 %BA%BA%E5%BE%AE%E4%BF%A1%E6%9C%8B%E5%8F%8B%E5%9C%88%E6%95%B0%E6%8D%AE%E7% 94 %B5%E5%AD%90%E4%B9%A6/图像/页面2.png)]
  纸书效果
  【外链图片传输失败(img-eyuaB4P-27)(%E4%B8%80%E9%94%AE%E7%94%9F%E6%88%90%E4%B8%AA% E4 %BA%BA%E5%BE%AE%E4%BF%A1%E6%9C%8B%E5%8F%8B%E5%9C%88%E6%95%B0%E6%8D%AE%E7% 94 %B5%E5%AD%90%E4%B9%A6/图像/页面3.jpeg)]
  获取微信书籍链接的代码思路
  看完效果图,开始进入代码编写部分。首先,由于朋友圈数据的隐私性较高,如果手动获取,需要使用root安卓手机解密或解密PC机备份的聊天记录数据库,很难大多数人。所以我们的想法是根据现有数据打印电子书。
  目前已经有第三方服务支持导出朋友圈数据,微信公众号【出版图书】提供了这样的服务。这种服务很有可能是基于安卓模拟器自动化的,我就不赘述了。
  先关注公众号,然后开始制作微信书籍。这个过程将你添加为编辑的朋友,然后你向他打开朋友圈。过一会采集,小编会给你发一个专属链接,这个链接里的内容就是你的Personal Moments。
  生成电子书
  有了这个链接,我们开始打印页面的内容。
  整个过程基于 selenium 自动化。如果你知道 selenium,那么这个过程其实很简单。
  首先,为了引导用户输入微信图书链接,我们采用在浏览器中弹出输入文本框的形式,让用户输入数据。
  首先在selenium中执行js代码,完成js代码中弹出输入文本框的功能。
  进入微信图书链接
  &#39;&#39;&#39;
遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
&#39;&#39;&#39;
# 以网页输入文本框形式提示用户输入url地址
def input_url():
# js脚本
random_id = [str(random.randint(0, 9)) for i in range(0,10)]
random_id = "".join(random_id)
random_id = &#39;id_input_target_url_&#39; + random_id
js = """
// 弹出文本输入框,输入微信书的完整链接地址
target_url = prompt("请输入微信书的完整链接地址","https://");
// 动态创建一个input元素
input_target_url = document.createElement("input");
// 为其设置id,以便在程序中能够获取到它的值
input_target_url.id = "id_input_target_url";
// 插入到当前网页中
document.getElementsByTagName("body")[0].appendChild(input_target_url);
// 设置不可见
document.getElementById("id_input_target_url").style.display = &#39;none&#39;;
// 设置value为target_url的值
document.getElementById("id_input_target_url").value = target_url
"""
js = js.replace(&#39;id_input_target_url&#39;, random_id)
# 执行以上js脚本
driver.execute_script(js)
  上述js代码的具体步骤为:弹出一个输入文本框,创建一个动态元素,随机命名元素的id,将动态元素插入到当前页面,这样就可以通过python 内容中的硒。
  接下来检测selenium中是否存在弹框,如果没有,获取弹框的内容,进行下一步,流程代码如下:
  &#39;&#39;&#39;
遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
&#39;&#39;&#39;
# 执行以上js脚本
driver.execute_script(js)
# 判断弹出框是否存在
while(True):
try:
# 检测是否存在弹出框
alert = driver.switch_to.alert
time.sleep(0.5)
except:
# 如果抛异常,说明当前页面不存在弹出框,即用户点击了取消或者确定
break
# 获取用户输入的链接地址
target_url = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.ID, random_id)))
value = target_url.get_attribute(&#39;value&#39;)
# 删除空格
value = value.strip()
  此时value的值就是弹出框返回的内容。(你可能会问,直接加value=微信书链接可以吗?其实&gt;*header确实是可以的,通过selenium隐藏这个元素的代码如下:
  # 隐藏导航栏,防止影响截图效果
js = &#39;document.querySelector("body > header").style.display="none";&#39;
driver.execute_script(js)
  我们也发现当前页面显示的数据只收录某月的朋友圈数据,而不是所有的朋友圈数据,那么如何显示所有的朋友圈数据呢?通过分析可以看出,当点击“下个月”按钮时,会显示一个新的元素,而原来的元素会被隐藏,隐藏的元素就是上个月的数据。所以我们只需要遍历到上个月,显示之前的所有元素,然后打印出来。那么,如何判断是上个月呢?我们也可以通过分析得知,当不是上个月时,“下个月”的类名是下个月,当是上个月时,“下个月”的类名是下个月禁用,所以我们可以检测它的类名,就知道是不是在上个月了。
  &#39;&#39;&#39;
遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
&#39;&#39;&#39;
# 判断当下一月控件的class name 是否为next-month disable,如果是,则说明翻到最后一月了
page_source = driver.page_source
# 每一个element代表每一页,将每一页中style的display属性改成block,即可见状态
for index, element in enumerate(element_left_list):
# ..在xpath中表示上一级的元素,也就是父元素
parent_element = element.find_element_by_xpath(&#39;..&#39;)
# 获取这个父元素的完整id
parent_element_id = parent_element.get_attribute(&#39;id&#39;)
# 将该父元素更改为可见状态
js = &#39;document.getElementById("{}").style.display="block";&#39;.format(parent_element_id)
driver.execute_script(js)
  但是,这种方式会出现问题。即使我们打印成功,我们也不难保证页面上的所有元素都加载完毕,所以有些元素可能打印后显示不出来,导致不太好看。因此,需要判断加载何时结束。
  【外链图片传输失败(img-gi8vJWty-31)(%E4%B8%80%E9%94%AE%E7%94%9F%E6%88%90%E4%B8%AA% E4 %BA%BA%E5%BE%AE%E4%BF%A1%E6%9C%8B%E5%8F%8B%E5%9C%88%E6%95%B0%E6%8D%AE%E7% 94 %B5%E5%AD%90%E4%B9%A6/图像/页面5.png)]
  通过分析我们知道,网页元素未加载时,会出现“加载中”的提示,而网页元素加载时,该元素是隐藏的。因此,我们可以通过判断元素是否隐藏来知道当前页面元素是否被加载。这部分代码如下:
  # 等待当前页面所有数据加载完毕,正常情况下数据加载完毕后,这个‘加载中’元素会隐藏起来
while (True):
loading_status = WebDriverWait(driver, 20).until(
EC.presence_of_element_located((By.CSS_SELECTOR, &#39;div.j-save-popup.save-popup&#39;)))
if (loading_status.is_displayed() == False):
break
  但是我们也发现,在等待页面元素及时加载后,还是有一些图片没有显示出来。
  【外链图片传输失败(img-aj7nf5ck-34)(%E4%B8%80%E9%94%AE%E7%94%9F%E6%88%90%E4%B8%AA% E4 %BA%BA%E5%BE%AE%E4%BF%A1%E6%9C%8B%E5%8F%8B%E5%9C%88%E6%95%B0%E6%8D%AE%E7% 94 %B5%E5%AD%90%E4%B9%A6/图像/页面6.png)]
  这很令人困惑,为什么?通过分析我们还了解到,当这些图片处于加载状态时,类名是lazy-img。从字面意思上,我们大概可以猜到是延迟加载的意思,也就是用户在那里滑动页面,直到加载完毕。,以节省服务器压力。
  所以我们可以通过一个名为lazy-img的类滑动到每个元素来加载它。所以?一个合适的方法是通过js定位元素,直到所有类名为lazy-img的元素都不存在。
  while(True):
try:
lazy_img = driver.find_elements_by_css_selector(&#39;img.lazy-img&#39;)
js = &#39;document.getElementsByClassName("lazy-img")[0].scrollIntoView();&#39;
driver.execute_script(js)
time.sleep(3)
except:
# 找不到控件img.lazy-img,所以退出循环
break
  其中document.getElementsByClassName("lazy-img")[0]是指document.getElementsByClassName("lazy-img")的第一个元素,scrollIntoView()是指滚动到该元素的位置
  打印电子书
  通过以上步骤,我们成功隐藏了一些可能影响外观的元素,同时也显示了所有需要的元素。接下来,是时候打印零件了。浏览器打印功能可以直接通过js代码调用,而且我们之前已经设置为自动打印pdf格式,所以会自动打印为pdf。但它打印到哪里?这里需要设置浏览器的默认存储位置,保存位置为当前目录。此步骤的代码如下:
  # 默认下载、打印保存路径
&#39;savefile.default_directory&#39;: os.getcwd()
# 调用chrome打印功能
driver.execute_script(&#39;window.print();&#39;)
  打印后设置退出浏览器 driver.quit()
  经测试,电子书为超清版,大小约为16MB,质量还不错。
  如何运行
  # 跳转到当前目录
cd 目录名
# 先卸载依赖库
pip uninstall -y -r requirement.txt
# 再重新安装依赖库
pip install -r requirement.txt
# 开始运行
python main.py 查看全部

  抓取网页生成电子书(微信朋友圈效果[外链图片转存失败(img-Q117HJ9K-25)
)
  介绍
  朋友圈留着你的数据,留着美好的回忆,记录着我们的每一点成长。从某种意义上说,发朋友圈就是记录生活,感受生活,见证每个人每一步的成长。
  如此珍贵的记忆,何不保存呢?只需一杯咖啡时间,即可一键打印朋友圈。可以是纸质书也可以是电子书,可以长期保存,比拍照好,有时间足迹记忆。
  现在,您可以选择打印电子书或纸质书。如果印刷纸质书,可以找第三方机构购买;如果你打印一本电子书,我们可以自己生成,这样可以节省很多钱。
  部分截图
  在开始编写代码思路之前,我们先来看看最终生成的效果。
  电子书效果
  [外链图片传输失败(img-TH9tBgCt-24)(%E4%B8%80%E9%94%AE%E7%94%9F%E6%88%90%E4%B8%AA% E4 %BA%BA%E5%BE%AE%E4%BF%A1%E6%9C%8B%E5%8F%8B%E5%9C%88%E6%95%B0%E6%8D%AE%E7% 94 %B5%E5%AD%90%E4%B9%A6/图像/页面1.png)]
  [外链图片传输失败(img-Q117HJ9K-25)(%E4%B8%80%E9%94%AE%E7%94%9F%E6%88%90%E4%B8%AA% E4 %BA%BA%E5%BE%AE%E4%BF%A1%E6%9C%8B%E5%8F%8B%E5%9C%88%E6%95%B0%E6%8D%AE%E7% 94 %B5%E5%AD%90%E4%B9%A6/图像/页面2.png)]
  纸书效果
  【外链图片传输失败(img-eyuaB4P-27)(%E4%B8%80%E9%94%AE%E7%94%9F%E6%88%90%E4%B8%AA% E4 %BA%BA%E5%BE%AE%E4%BF%A1%E6%9C%8B%E5%8F%8B%E5%9C%88%E6%95%B0%E6%8D%AE%E7% 94 %B5%E5%AD%90%E4%B9%A6/图像/页面3.jpeg)]
  获取微信书籍链接的代码思路
  看完效果图,开始进入代码编写部分。首先,由于朋友圈数据的隐私性较高,如果手动获取,需要使用root安卓手机解密或解密PC机备份的聊天记录数据库,很难大多数人。所以我们的想法是根据现有数据打印电子书。
  目前已经有第三方服务支持导出朋友圈数据,微信公众号【出版图书】提供了这样的服务。这种服务很有可能是基于安卓模拟器自动化的,我就不赘述了。
  先关注公众号,然后开始制作微信书籍。这个过程将你添加为编辑的朋友,然后你向他打开朋友圈。过一会采集,小编会给你发一个专属链接,这个链接里的内容就是你的Personal Moments。
  生成电子书
  有了这个链接,我们开始打印页面的内容。
  整个过程基于 selenium 自动化。如果你知道 selenium,那么这个过程其实很简单。
  首先,为了引导用户输入微信图书链接,我们采用在浏览器中弹出输入文本框的形式,让用户输入数据。
  首先在selenium中执行js代码,完成js代码中弹出输入文本框的功能。
  进入微信图书链接
  &#39;&#39;&#39;
遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
&#39;&#39;&#39;
# 以网页输入文本框形式提示用户输入url地址
def input_url():
# js脚本
random_id = [str(random.randint(0, 9)) for i in range(0,10)]
random_id = "".join(random_id)
random_id = &#39;id_input_target_url_&#39; + random_id
js = """
// 弹出文本输入框,输入微信书的完整链接地址
target_url = prompt("请输入微信书的完整链接地址","https://";);
// 动态创建一个input元素
input_target_url = document.createElement("input");
// 为其设置id,以便在程序中能够获取到它的值
input_target_url.id = "id_input_target_url";
// 插入到当前网页中
document.getElementsByTagName("body")[0].appendChild(input_target_url);
// 设置不可见
document.getElementById("id_input_target_url").style.display = &#39;none&#39;;
// 设置value为target_url的值
document.getElementById("id_input_target_url").value = target_url
"""
js = js.replace(&#39;id_input_target_url&#39;, random_id)
# 执行以上js脚本
driver.execute_script(js)
  上述js代码的具体步骤为:弹出一个输入文本框,创建一个动态元素,随机命名元素的id,将动态元素插入到当前页面,这样就可以通过python 内容中的硒。
  接下来检测selenium中是否存在弹框,如果没有,获取弹框的内容,进行下一步,流程代码如下:
  &#39;&#39;&#39;
遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
&#39;&#39;&#39;
# 执行以上js脚本
driver.execute_script(js)
# 判断弹出框是否存在
while(True):
try:
# 检测是否存在弹出框
alert = driver.switch_to.alert
time.sleep(0.5)
except:
# 如果抛异常,说明当前页面不存在弹出框,即用户点击了取消或者确定
break
# 获取用户输入的链接地址
target_url = WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.ID, random_id)))
value = target_url.get_attribute(&#39;value&#39;)
# 删除空格
value = value.strip()
  此时value的值就是弹出框返回的内容。(你可能会问,直接加value=微信书链接可以吗?其实&gt;*header确实是可以的,通过selenium隐藏这个元素的代码如下:
  # 隐藏导航栏,防止影响截图效果
js = &#39;document.querySelector("body > header").style.display="none";&#39;
driver.execute_script(js)
  我们也发现当前页面显示的数据只收录某月的朋友圈数据,而不是所有的朋友圈数据,那么如何显示所有的朋友圈数据呢?通过分析可以看出,当点击“下个月”按钮时,会显示一个新的元素,而原来的元素会被隐藏,隐藏的元素就是上个月的数据。所以我们只需要遍历到上个月,显示之前的所有元素,然后打印出来。那么,如何判断是上个月呢?我们也可以通过分析得知,当不是上个月时,“下个月”的类名是下个月,当是上个月时,“下个月”的类名是下个月禁用,所以我们可以检测它的类名,就知道是不是在上个月了。
  &#39;&#39;&#39;
遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
&#39;&#39;&#39;
# 判断当下一月控件的class name 是否为next-month disable,如果是,则说明翻到最后一月了
page_source = driver.page_source
# 每一个element代表每一页,将每一页中style的display属性改成block,即可见状态
for index, element in enumerate(element_left_list):
# ..在xpath中表示上一级的元素,也就是父元素
parent_element = element.find_element_by_xpath(&#39;..&#39;)
# 获取这个父元素的完整id
parent_element_id = parent_element.get_attribute(&#39;id&#39;)
# 将该父元素更改为可见状态
js = &#39;document.getElementById("{}").style.display="block";&#39;.format(parent_element_id)
driver.execute_script(js)
  但是,这种方式会出现问题。即使我们打印成功,我们也不难保证页面上的所有元素都加载完毕,所以有些元素可能打印后显示不出来,导致不太好看。因此,需要判断加载何时结束。
  【外链图片传输失败(img-gi8vJWty-31)(%E4%B8%80%E9%94%AE%E7%94%9F%E6%88%90%E4%B8%AA% E4 %BA%BA%E5%BE%AE%E4%BF%A1%E6%9C%8B%E5%8F%8B%E5%9C%88%E6%95%B0%E6%8D%AE%E7% 94 %B5%E5%AD%90%E4%B9%A6/图像/页面5.png)]
  通过分析我们知道,网页元素未加载时,会出现“加载中”的提示,而网页元素加载时,该元素是隐藏的。因此,我们可以通过判断元素是否隐藏来知道当前页面元素是否被加载。这部分代码如下:
  # 等待当前页面所有数据加载完毕,正常情况下数据加载完毕后,这个‘加载中’元素会隐藏起来
while (True):
loading_status = WebDriverWait(driver, 20).until(
EC.presence_of_element_located((By.CSS_SELECTOR, &#39;div.j-save-popup.save-popup&#39;)))
if (loading_status.is_displayed() == False):
break
  但是我们也发现,在等待页面元素及时加载后,还是有一些图片没有显示出来。
  【外链图片传输失败(img-aj7nf5ck-34)(%E4%B8%80%E9%94%AE%E7%94%9F%E6%88%90%E4%B8%AA% E4 %BA%BA%E5%BE%AE%E4%BF%A1%E6%9C%8B%E5%8F%8B%E5%9C%88%E6%95%B0%E6%8D%AE%E7% 94 %B5%E5%AD%90%E4%B9%A6/图像/页面6.png)]
  这很令人困惑,为什么?通过分析我们还了解到,当这些图片处于加载状态时,类名是lazy-img。从字面意思上,我们大概可以猜到是延迟加载的意思,也就是用户在那里滑动页面,直到加载完毕。,以节省服务器压力。
  所以我们可以通过一个名为lazy-img的类滑动到每个元素来加载它。所以?一个合适的方法是通过js定位元素,直到所有类名为lazy-img的元素都不存在。
  while(True):
try:
lazy_img = driver.find_elements_by_css_selector(&#39;img.lazy-img&#39;)
js = &#39;document.getElementsByClassName("lazy-img")[0].scrollIntoView();&#39;
driver.execute_script(js)
time.sleep(3)
except:
# 找不到控件img.lazy-img,所以退出循环
break
  其中document.getElementsByClassName("lazy-img")[0]是指document.getElementsByClassName("lazy-img")的第一个元素,scrollIntoView()是指滚动到该元素的位置
  打印电子书
  通过以上步骤,我们成功隐藏了一些可能影响外观的元素,同时也显示了所有需要的元素。接下来,是时候打印零件了。浏览器打印功能可以直接通过js代码调用,而且我们之前已经设置为自动打印pdf格式,所以会自动打印为pdf。但它打印到哪里?这里需要设置浏览器的默认存储位置,保存位置为当前目录。此步骤的代码如下:
  # 默认下载、打印保存路径
&#39;savefile.default_directory&#39;: os.getcwd()
# 调用chrome打印功能
driver.execute_script(&#39;window.print();&#39;)
  打印后设置退出浏览器 driver.quit()
  经测试,电子书为超清版,大小约为16MB,质量还不错。
  如何运行
  # 跳转到当前目录
cd 目录名
# 先卸载依赖库
pip uninstall -y -r requirement.txt
# 再重新安装依赖库
pip install -r requirement.txt
# 开始运行
python main.py

抓取网页生成电子书(网文快捕软件特色介绍的应用)

网站优化优采云 发表了文章 • 0 个评论 • 91 次浏览 • 2022-01-30 23:12 • 来自相关话题

  抓取网页生成电子书(网文快捕软件特色介绍的应用)
  Nettext Quick Capture是一款功能实用的网页保存管理软件。本软件可以帮助用户轻松批量保存和管理网页内容,并帮助制作成电子书格式,方便用户获取和提取网页内容。该软件具有超强的稳定性。最大程度保障数据安全,满足用户各种网页内容获取和保存需求。
  
  软件功能
  1、超强稳定性:数据管理,最重要的是数据安全,可以提供稳定的程序和安全的数据存储方式。经过严格测试的程序具有高度的稳定性。同时,所有数据都存储在数据库中,这也提供了一种安全可靠的数据存储方式。
  2、丰富的导入导出功能:可以导入你的邮件、各种Office文档、PDF、源代码、图片等。同时,您还可以将数据导出为 HTML 文件制作电子书,无需 Cyber​​Article 即可使用。以后即使不再使用,也可以使用您的数据,不用担心数据丢失。
  3、便捷的数据共享:让您轻松共享数据。无论您是在公司还是在家里,您都可以同时使用局域网来管理您的数据。所有操作都自动保存到数据库中,无需任何同步工作。您也可以使用WebShare 组件,您可以将您的数据发布到浏览器上面。这样,即使其他人没有安装该软件,只要有浏览器,就可以查看数据。
  4、强大的开放性:公开数据的存储方式,提供丰富的二次开发接口。您可以使用脚本语言来扩展 Cyber​​Article 的功能,也可以使用高级语言编写各种插件以更好地满足您的需求。
  5、完全支持各种浏览器:支持IE、火狐、谷歌Chrome浏览器、苹果safari浏览器、Opera。各类主流浏览器一网打尽,各类网页一网打尽。
  6、PDF 支持:您可以导入 PDF 文件。导入的PDF文件可以轻松统一搜索。
  7、统一管理功能:将所有导入的文档统一转换为HTML文件,采用统一的管理、检索、编辑方式,让您不再关心格式。
  8、提供谷歌桌面搜索和IFilter插件,让你使用桌面搜索软件统一进行全文搜索。
  9、提供版本控制功能,可以保存每一个历史修改记录。
  软件功能
  保存页面
  1. 网页中的任何资源都可以在IE(包括IE核心浏览器)、火狐、谷歌浏览器、Safari和Opera等支持的浏览器中完整无瑕地保存,特别是还可以保存一些资源,例如 YouTube 上的视频。它已成为网页保存领域流行的优秀软件。
  2. 网页可以批量保存。
  3. 可以导入Office文档:doc、ppt、xls、rtf。
  4. 可以通过全文搜索导入 PDF 文件。
  5.可以导入源代码文件,支持颜色标注。
  5. 可以导入图片、flash等,也支持导入任意文件的附件。
  资源管理
  1. 以 HTML 格式保存所有资源,您可以在全文搜索、批处理、输出和电子书制作中以相同的方式管理它们。
  2.设置一个文章为IE采集,可以添加多个书签,轻松实现多级文档管理。
  3. 您还可以编辑书中的资源。
  4.Nettext Quick Capture可以实现你书中的大量操作,比如分类、标注颜色、批处理等。 查看全部

  抓取网页生成电子书(网文快捕软件特色介绍的应用)
  Nettext Quick Capture是一款功能实用的网页保存管理软件。本软件可以帮助用户轻松批量保存和管理网页内容,并帮助制作成电子书格式,方便用户获取和提取网页内容。该软件具有超强的稳定性。最大程度保障数据安全,满足用户各种网页内容获取和保存需求。
  
  软件功能
  1、超强稳定性:数据管理,最重要的是数据安全,可以提供稳定的程序和安全的数据存储方式。经过严格测试的程序具有高度的稳定性。同时,所有数据都存储在数据库中,这也提供了一种安全可靠的数据存储方式。
  2、丰富的导入导出功能:可以导入你的邮件、各种Office文档、PDF、源代码、图片等。同时,您还可以将数据导出为 HTML 文件制作电子书,无需 Cyber​​Article 即可使用。以后即使不再使用,也可以使用您的数据,不用担心数据丢失。
  3、便捷的数据共享:让您轻松共享数据。无论您是在公司还是在家里,您都可以同时使用局域网来管理您的数据。所有操作都自动保存到数据库中,无需任何同步工作。您也可以使用WebShare 组件,您可以将您的数据发布到浏览器上面。这样,即使其他人没有安装该软件,只要有浏览器,就可以查看数据。
  4、强大的开放性:公开数据的存储方式,提供丰富的二次开发接口。您可以使用脚本语言来扩展 Cyber​​Article 的功能,也可以使用高级语言编写各种插件以更好地满足您的需求。
  5、完全支持各种浏览器:支持IE、火狐、谷歌Chrome浏览器、苹果safari浏览器、Opera。各类主流浏览器一网打尽,各类网页一网打尽。
  6、PDF 支持:您可以导入 PDF 文件。导入的PDF文件可以轻松统一搜索。
  7、统一管理功能:将所有导入的文档统一转换为HTML文件,采用统一的管理、检索、编辑方式,让您不再关心格式。
  8、提供谷歌桌面搜索和IFilter插件,让你使用桌面搜索软件统一进行全文搜索。
  9、提供版本控制功能,可以保存每一个历史修改记录。
  软件功能
  保存页面
  1. 网页中的任何资源都可以在IE(包括IE核心浏览器)、火狐、谷歌浏览器、Safari和Opera等支持的浏览器中完整无瑕地保存,特别是还可以保存一些资源,例如 YouTube 上的视频。它已成为网页保存领域流行的优秀软件。
  2. 网页可以批量保存。
  3. 可以导入Office文档:doc、ppt、xls、rtf。
  4. 可以通过全文搜索导入 PDF 文件。
  5.可以导入源代码文件,支持颜色标注。
  5. 可以导入图片、flash等,也支持导入任意文件的附件。
  资源管理
  1. 以 HTML 格式保存所有资源,您可以在全文搜索、批处理、输出和电子书制作中以相同的方式管理它们。
  2.设置一个文章为IE采集,可以添加多个书签,轻松实现多级文档管理。
  3. 您还可以编辑书中的资源。
  4.Nettext Quick Capture可以实现你书中的大量操作,比如分类、标注颜色、批处理等。

抓取网页生成电子书(网络书籍抓取器是一款能帮助用户下载指定网页的某)

网站优化优采云 发表了文章 • 0 个评论 • 127 次浏览 • 2022-01-30 23:09 • 来自相关话题

  抓取网页生成电子书(网络书籍抓取器是一款能帮助用户下载指定网页的某)
  在线图书抓取器是一款可以帮助用户下载指定网页的某本书和某章的软件。通过在线图书抓取器,可以快速下载小说。同时软件支持断点续传功能,非常方便。可以下载使用。
  
  特征
  可以提取指定小说目录页面的章节信息并进行调整,然后按照章节顺序抓取小说内容,在最合适的时候进行合并。爬取过程可以随时中断,关闭程序后可以恢复上一个任务。
  软件功能
  1、章节调整:提取目录后,可以进行移动、删除、反转等调整操作。调整将直接影响调整后的章节顺序中的最终书籍和输出。
  2、自动重试:爬取过程中,可能由于网络因素导致爬取失败。本程序可能会自动重试直到成功,或者暂时中断爬取(中断后关闭程序不会影响进度),等网络好了再试。
  3、停止和恢复:可以随时停止捕捉过程,退出程序后不影响进度(章节信息会保存在记录中,程序结束后可以恢复捕捉下次运行。注意:需要先用停止键中断,然后退出程序,如果直接退出,将无法恢复)。
  4、一键抓取:又称“傻瓜模式”,基本可以实现全自动抓取合并功能,直接输出最终的文本文件。前面可能需要输入最基本的URL、save bit等信息(会有明显的操作提示),调整章节后也可以使用一键爬取,爬取和合并操作会自动完成。
  5、适用网站:已输入10个适用网站(选择后可快速打开网站找到想要的书),以及相应的代码也可以自动应用,其他小说网站也可以测试,如果一起使用,可以手动添加到设置文件中备份。
  6、轻松制作电子书:可以在设置文件中添加每章名称的前缀和后缀,为后期制作电子书的编目带来极大的方便。
  指示
  1、首先进入你要下载的小说的网页。
  2、输入书名,点击目录提取。
  3、设置保存路径,点击Start Grab开始下载。 查看全部

  抓取网页生成电子书(网络书籍抓取器是一款能帮助用户下载指定网页的某)
  在线图书抓取器是一款可以帮助用户下载指定网页的某本书和某章的软件。通过在线图书抓取器,可以快速下载小说。同时软件支持断点续传功能,非常方便。可以下载使用。
  
  特征
  可以提取指定小说目录页面的章节信息并进行调整,然后按照章节顺序抓取小说内容,在最合适的时候进行合并。爬取过程可以随时中断,关闭程序后可以恢复上一个任务。
  软件功能
  1、章节调整:提取目录后,可以进行移动、删除、反转等调整操作。调整将直接影响调整后的章节顺序中的最终书籍和输出。
  2、自动重试:爬取过程中,可能由于网络因素导致爬取失败。本程序可能会自动重试直到成功,或者暂时中断爬取(中断后关闭程序不会影响进度),等网络好了再试。
  3、停止和恢复:可以随时停止捕捉过程,退出程序后不影响进度(章节信息会保存在记录中,程序结束后可以恢复捕捉下次运行。注意:需要先用停止键中断,然后退出程序,如果直接退出,将无法恢复)。
  4、一键抓取:又称“傻瓜模式”,基本可以实现全自动抓取合并功能,直接输出最终的文本文件。前面可能需要输入最基本的URL、save bit等信息(会有明显的操作提示),调整章节后也可以使用一键爬取,爬取和合并操作会自动完成。
  5、适用网站:已输入10个适用网站(选择后可快速打开网站找到想要的书),以及相应的代码也可以自动应用,其他小说网站也可以测试,如果一起使用,可以手动添加到设置文件中备份。
  6、轻松制作电子书:可以在设置文件中添加每章名称的前缀和后缀,为后期制作电子书的编目带来极大的方便。
  指示
  1、首先进入你要下载的小说的网页。
  2、输入书名,点击目录提取。
  3、设置保存路径,点击Start Grab开始下载。

抓取网页生成电子书(需要编辑的word文档的模板全部做成HTML页面,需要导入的jar包)

网站优化优采云 发表了文章 • 0 个评论 • 85 次浏览 • 2022-01-28 03:06 • 来自相关话题

  抓取网页生成电子书(需要编辑的word文档的模板全部做成HTML页面,需要导入的jar包)
  本来应该用pageOffice在线编辑、保存、转成PDF、完成签名。因为公司预算不够,无法购买pageOffice组件,只能想其他办法。
  需要编辑的word文档的模板是固定的,数量不大,但是格式要求比较严格,所以我决定把所有的模板都做成HTML页面,用iText组件来转换将 HTML 转换为 PDF。
  需要导入的jar包:
  
  首先,需要将模板制作成类似如下的页面。水平线上的数据可以动态填充和编辑。 Freemarker可以用来填充数据。
  
  要使页面可编辑,您可以使用 Html 的 contenteditable="true"
  
  因为页面可以动态编辑,所以我们需要获取编辑页面的源代码
  var outerHTML = document.documentElement.outerHTML;
  这里需要注意的是页面中的所有标签都需要关闭。如果没有关闭,iText组件在转换过程中会报错。页面中的字体需要是Arial,因为iText的转换需要字体文件的支持。所以你还需要在项目中或者服务器上准备好字体文件
  
  身体{
  边距:20px;
  字体系列:SimSun;
  }
  以下是后台收到页面源代码后的处理
  @RequestMapping("acceptPage")
@ResponseBody
public Map acceptPage(HttpServletRequest request) throws Exception {
Map map=new HashMap();
String text = request.getParameter("text");
//使用jsoup来对html源码进行解析,能够校验格式的完整性,并生成一个新的Document
org.jsoup.nodes.Document parse = Jsoup.parse(text);
Elements meta = parse.getElementsByTag("meta");
String html = parse.html();
for (Element link : meta) {//手动为一些标签添加闭合
String s = link.outerHtml();
String s1=s.replace("/>",">");
html=html.replace(s,s1+"");
}
Elements link1 = parse.getElementsByTag("link");
for (Element link : link1) {
String s = link.outerHtml();
String s1=s.replace("/>",">");
html=html.replace(s,s1+"");
}
html=html.replaceAll("&nbsp;","");
try {
String outputFile="E:\\test.pdf";
OutputStream os = new FileOutputStream(outputFile);
//中文宋体文件路径
String fontPath=StringUtil.trimSufffix(fontUrl, File.separator)+File.separator+"simsun.ttc";
//String fontPath= "C:\\simsun.ttc";
ITextRenderer render = new ITextRenderer();
ITextFontResolver fontResolver = render.getFontResolver();
fontResolver.addFont(fontPath, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
render.setDocumentFromString(html);
render.layout();
render.createPDF(os);
os.close();
} catch (Exception e) {
e.printStackTrace();
map.put("state",1);
map.put("msg","文件转换失败!请联系管理员!");
return map;
}
}
  以下是对生成的PDF文件进行签名的操作,不再赘述
  
  这是最终生成的PDF,样式没问题,还实现了编辑保存功能。 查看全部

  抓取网页生成电子书(需要编辑的word文档的模板全部做成HTML页面,需要导入的jar包)
  本来应该用pageOffice在线编辑、保存、转成PDF、完成签名。因为公司预算不够,无法购买pageOffice组件,只能想其他办法。
  需要编辑的word文档的模板是固定的,数量不大,但是格式要求比较严格,所以我决定把所有的模板都做成HTML页面,用iText组件来转换将 HTML 转换为 PDF。
  需要导入的jar包:
  
  首先,需要将模板制作成类似如下的页面。水平线上的数据可以动态填充和编辑。 Freemarker可以用来填充数据。
  
  要使页面可编辑,您可以使用 Html 的 contenteditable="true"
  
  因为页面可以动态编辑,所以我们需要获取编辑页面的源代码
  var outerHTML = document.documentElement.outerHTML;
  这里需要注意的是页面中的所有标签都需要关闭。如果没有关闭,iText组件在转换过程中会报错。页面中的字体需要是Arial,因为iText的转换需要字体文件的支持。所以你还需要在项目中或者服务器上准备好字体文件
  
  身体{
  边距:20px;
  字体系列:SimSun;
  }
  以下是后台收到页面源代码后的处理
  @RequestMapping("acceptPage")
@ResponseBody
public Map acceptPage(HttpServletRequest request) throws Exception {
Map map=new HashMap();
String text = request.getParameter("text");
//使用jsoup来对html源码进行解析,能够校验格式的完整性,并生成一个新的Document
org.jsoup.nodes.Document parse = Jsoup.parse(text);
Elements meta = parse.getElementsByTag("meta");
String html = parse.html();
for (Element link : meta) {//手动为一些标签添加闭合
String s = link.outerHtml();
String s1=s.replace("/>",">");
html=html.replace(s,s1+"");
}
Elements link1 = parse.getElementsByTag("link");
for (Element link : link1) {
String s = link.outerHtml();
String s1=s.replace("/>",">");
html=html.replace(s,s1+"");
}
html=html.replaceAll("&nbsp;","");
try {
String outputFile="E:\\test.pdf";
OutputStream os = new FileOutputStream(outputFile);
//中文宋体文件路径
String fontPath=StringUtil.trimSufffix(fontUrl, File.separator)+File.separator+"simsun.ttc";
//String fontPath= "C:\\simsun.ttc";
ITextRenderer render = new ITextRenderer();
ITextFontResolver fontResolver = render.getFontResolver();
fontResolver.addFont(fontPath, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
render.setDocumentFromString(html);
render.layout();
render.createPDF(os);
os.close();
} catch (Exception e) {
e.printStackTrace();
map.put("state",1);
map.put("msg","文件转换失败!请联系管理员!");
return map;
}
}
  以下是对生成的PDF文件进行签名的操作,不再赘述
  
  这是最终生成的PDF,样式没问题,还实现了编辑保存功能。

抓取网页生成电子书(在线阅读网站URL的规律编程实现的关键(图) )

网站优化优采云 发表了文章 • 0 个评论 • 84 次浏览 • 2022-01-27 23:23 • 来自相关话题

  抓取网页生成电子书(在线阅读网站URL的规律编程实现的关键(图)
)
  @1.必知常识:
  许多网站提供在线阅读书籍,但不提供这些书籍的下载,有些页面受Javascript保护,甚至不允许复制。但是下载这些书真的不是太难,一个小程序就可以了。
  @2.注意在线阅读规则网站URL,这是编程的关键:
  要把网页一个一个刮下来放到txt里,首先要找到网页URL的规则。
  以本书为例《成长比成功更重要》——新浪阅读链接为:[]
  点击序列的部分,它的地址是[]
  点击它的第二部分,地址又是[]
  ……
  点击最后一段,地址是[]
  很容易验证它们的地址都是连续的数字,因此很容易编程自动生成链接地址,只需使用递增的数字生成地址即可。
  @3.下载页面的编程实现:
  Python中有一个urllib包,导入,有urllib.open('#39;),这个函数返回一个文件对象,只要用返回的文件对象调用read()方法,就会返回一个字符串
  @4.得到的页面根据html标签找到对应的文本内容:
  read() 得到的页面是一个字符串。使用该字符串的 find() 方法查找对应的文本内容从 nIdxBeg 开始到 nIdxEnd 结束的位置。您可以轻松地使用字符串切片 strContent[nIdxBeg:nIdxEnd] 在您想要的部分截取页面
  @5.将所有你想要的截取部分保存到一个文件中。
  @6. 最后写一个程序来读取之前写好的文件,使用string函数对html标签进行处理,然后将处理好的html标签的内容写入另一个“电子书成品”文件:
  先写一个字典(dict),将要替换的字符串写入到这个字典中,然后用一个for循环迭代使用str的replace()方法将字典中对应的每一项替换为字典。将记录的每个html标签替换为对应的字符串,写入“完成的文件”——另一个txt,就大功告成了。
  代码贴在这里供参考,变量值可以作为电子书从其他页面下载,稍作修改:
  -------------------------------------------------- -------------------------------------------------- --------------
  makeBook.py 下载页面并截取需要的部分(标题和文章内容,分别通过getTitle和getContent两个函数获取),并写入out.txt文件。
  -------------------------------------------------- -------------------------------------------------- --------------
  nBeg = 30970
nEnd = 31082
strPrefix = &#39;http://vip.book.sina.com.cn/bo ... 39%3B
strSurfix = &#39;.html&#39;
strTitleBeg = """"""
strTitleEnd = """"""
strContentBeg = """"""
strContentEnd = """"""
fout = file(&#39;out.txt&#39;, &#39;w&#39;)
import urllib
def makeUrl(i):
"""Make the url with a number"""
return strPrefix + str(i) + strSurfix
def getContent(strPage):
nIdxBeg = strPage.find(strContentBeg)
nIdxEnd = strPage.find(strContentEnd, nIdxBeg + len(strContentBeg))
if nIdxBeg == -1 or nIdxEnd == -1:
print &#39;Content Not Found!&#39;
return &#39;&#39;
elif nIdxBeg > nIdxEnd:
print &#39;Content begin index larger than end index.&#39;
return &#39;&#39;
else:
return strPage[nIdxBeg + len(strContentBeg): nIdxEnd]
def getTitle(strPage):
nIdxBeg = strPage.find(strTitleBeg)
nIdxEnd = strPage.find(strTitleEnd, nIdxBeg + len(strTitleBeg))
if nIdxBeg == -1 or nIdxEnd == -1:
print &#39;Title Not Found!&#39;
return &#39;&#39;
elif nIdxBeg > nIdxEnd:
print &#39;Title begin index larger than end index.&#39;
return &#39;&#39;
else:
return strPage[nIdxBeg + len(strTitleBeg): nIdxEnd]
def processPage(strPage):
fout.write(getTitle(strPage))
fout.write(&#39;\n\n&#39;)
fout.write(getContent(strPage))
fout.write(&#39;\n- - - - - - - - - - - - - - - - - - - - - - - - - - -\n\n&#39;)
def writeBook():
for i in range(nBeg, nEnd):
print &#39;Downloading file &#39; + str(i)
strUrl = makeUrl(i)
nRetry = 3
strPage = &#39;&#39;
while nRetry:
try:
strPage = urllib.urlopen(strUrl).read()
break
except:
nRetry -= 1
continue
if not nRetry:
print &#39;Failed downloading file &#39; + str(i)
fout.write(&#39;\n\n/#####&#39; + str(i) + &#39;#####\\\\\\n\n&#39;)
else:
processPage(strPage)
if __name__ == &#39;__main__&#39;:
writeBook()
fout.close()
  -------------------------------------------------- -------------------------------------------------- --------------
  formatTxt.py 处理前面生成的“out.txt”文件中的html标签,然后将格式化的内容写入“formated.txt”
  -------------------------------------------------- -------------------------------------------------- --------------
  matRep = {&#39;<p>&#39;:&#39;    &#39;, &#39;&#39;:&#39;\n\n&#39;}
def formatTxt(strContent):
    for i in matRep:
        strContent = strContent.replace(i, matRep[i])
    return strContent
if __name__ == &#39;__main__&#39;:
    strContent = file(&#39;out.txt&#39;, &#39;r&#39;).read()
    file(&#39;formated.txt&#39;, &#39;w&#39;).write(formatTxt(strContent))
</p> 查看全部

  抓取网页生成电子书(在线阅读网站URL的规律编程实现的关键(图)
)
  @1.必知常识:
  许多网站提供在线阅读书籍,但不提供这些书籍的下载,有些页面受Javascript保护,甚至不允许复制。但是下载这些书真的不是太难,一个小程序就可以了。
  @2.注意在线阅读规则网站URL,这是编程的关键:
  要把网页一个一个刮下来放到txt里,首先要找到网页URL的规则。
  以本书为例《成长比成功更重要》——新浪阅读链接为:[]
  点击序列的部分,它的地址是[]
  点击它的第二部分,地址又是[]
  ……
  点击最后一段,地址是[]
  很容易验证它们的地址都是连续的数字,因此很容易编程自动生成链接地址,只需使用递增的数字生成地址即可。
  @3.下载页面的编程实现:
  Python中有一个urllib包,导入,有urllib.open('#39;),这个函数返回一个文件对象,只要用返回的文件对象调用read()方法,就会返回一个字符串
  @4.得到的页面根据html标签找到对应的文本内容:
  read() 得到的页面是一个字符串。使用该字符串的 find() 方法查找对应的文本内容从 nIdxBeg 开始到 nIdxEnd 结束的位置。您可以轻松地使用字符串切片 strContent[nIdxBeg:nIdxEnd] 在您想要的部分截取页面
  @5.将所有你想要的截取部分保存到一个文件中。
  @6. 最后写一个程序来读取之前写好的文件,使用string函数对html标签进行处理,然后将处理好的html标签的内容写入另一个“电子书成品”文件:
  先写一个字典(dict),将要替换的字符串写入到这个字典中,然后用一个for循环迭代使用str的replace()方法将字典中对应的每一项替换为字典。将记录的每个html标签替换为对应的字符串,写入“完成的文件”——另一个txt,就大功告成了。
  代码贴在这里供参考,变量值可以作为电子书从其他页面下载,稍作修改:
  -------------------------------------------------- -------------------------------------------------- --------------
  makeBook.py 下载页面并截取需要的部分(标题和文章内容,分别通过getTitle和getContent两个函数获取),并写入out.txt文件。
  -------------------------------------------------- -------------------------------------------------- --------------
  nBeg = 30970
nEnd = 31082
strPrefix = &#39;http://vip.book.sina.com.cn/bo ... 39%3B
strSurfix = &#39;.html&#39;
strTitleBeg = """"""
strTitleEnd = """"""
strContentBeg = """"""
strContentEnd = """"""
fout = file(&#39;out.txt&#39;, &#39;w&#39;)
import urllib
def makeUrl(i):
"""Make the url with a number"""
return strPrefix + str(i) + strSurfix
def getContent(strPage):
nIdxBeg = strPage.find(strContentBeg)
nIdxEnd = strPage.find(strContentEnd, nIdxBeg + len(strContentBeg))
if nIdxBeg == -1 or nIdxEnd == -1:
print &#39;Content Not Found!&#39;
return &#39;&#39;
elif nIdxBeg > nIdxEnd:
print &#39;Content begin index larger than end index.&#39;
return &#39;&#39;
else:
return strPage[nIdxBeg + len(strContentBeg): nIdxEnd]
def getTitle(strPage):
nIdxBeg = strPage.find(strTitleBeg)
nIdxEnd = strPage.find(strTitleEnd, nIdxBeg + len(strTitleBeg))
if nIdxBeg == -1 or nIdxEnd == -1:
print &#39;Title Not Found!&#39;
return &#39;&#39;
elif nIdxBeg > nIdxEnd:
print &#39;Title begin index larger than end index.&#39;
return &#39;&#39;
else:
return strPage[nIdxBeg + len(strTitleBeg): nIdxEnd]
def processPage(strPage):
fout.write(getTitle(strPage))
fout.write(&#39;\n\n&#39;)
fout.write(getContent(strPage))
fout.write(&#39;\n- - - - - - - - - - - - - - - - - - - - - - - - - - -\n\n&#39;)
def writeBook():
for i in range(nBeg, nEnd):
print &#39;Downloading file &#39; + str(i)
strUrl = makeUrl(i)
nRetry = 3
strPage = &#39;&#39;
while nRetry:
try:
strPage = urllib.urlopen(strUrl).read()
break
except:
nRetry -= 1
continue
if not nRetry:
print &#39;Failed downloading file &#39; + str(i)
fout.write(&#39;\n\n/#####&#39; + str(i) + &#39;#####\\\\\\n\n&#39;)
else:
processPage(strPage)
if __name__ == &#39;__main__&#39;:
writeBook()
fout.close()
  -------------------------------------------------- -------------------------------------------------- --------------
  formatTxt.py 处理前面生成的“out.txt”文件中的html标签,然后将格式化的内容写入“formated.txt”
  -------------------------------------------------- -------------------------------------------------- --------------
  matRep = {&#39;<p>&#39;:&#39;    &#39;, &#39;&#39;:&#39;\n\n&#39;}
def formatTxt(strContent):
    for i in matRep:
        strContent = strContent.replace(i, matRep[i])
    return strContent
if __name__ == &#39;__main__&#39;:
    strContent = file(&#39;out.txt&#39;, &#39;r&#39;).read()
    file(&#39;formated.txt&#39;, &#39;w&#39;).write(formatTxt(strContent))
</p>

官方客服QQ群

微信人工客服

QQ人工客服


线