
抓取网页生成电子书
抓取网页生成电子书(软件介绍网页文字抓取器是个小巧的网页抓取工具)
网站优化 • 优采云 发表了文章 • 0 个评论 • 60 次浏览 • 2021-12-08 10:22
这是一个网页文本电子书抓取器,该程序可以自动获取指定网页上的所有文本。比如起点小说网站,一些禁止复制的电子书。适用于所有 html 类型的文本。该程序的目的是使您可以轻松复制某些网页。欢迎促进交流。
软件介绍
网页文字抓取器是一款小型网页文字抓取工具,可以让您轻松抓取和复制禁止选择和复制的网页上的文字。对于页面内容被大面积广告覆盖的网页,抓取网页文本爬虫再阅读也是一个不错的解决方案。
软件特点
网页文字电子书抓取器是当今互联网上常用的软件之一。软件绿色、安全、无毒,让您放心使用!如果网络文本电子书抓取器是您需要的工具,那么快来吧!本站为您提供网页文本电子书抓取器的官方下载。
软件说明
Web Text采集器 是一个可以抓取网页文字的网页文字抓取工具。该软件可以自动获取指定网页上的所有文字。比如起点小说网站,一些禁止复制的电子书。适用于所有 html 类型的文本。
该程序的目的是使您可以轻松复制某些网页。欢迎促进交流。
本程序为无毒、无插件的绿色软件。
软件截图
相关软件
Bing(必应)背景图像采集器:这是一个 Bing(必应)背景图像采集器。虽然我不太用微软的搜索引擎bing,但是感觉它的背景图还是不错的,而且每天更换的时候,曾经看到一张不错的图就想下载,但是下载的时候下载不下来我右键单击它。没有右键另存为图片的选项,于是在网上找了一个可以下载bing背景图片的软件。
邮箱抓取器:这是一个邮箱抓取器。它是一种通过提取网页上显示的电子邮件地址来采集各种邮箱信息的软件。获取的邮箱可以作为您在线营销的重要客户数据来源。用户可以在网上下载群发邮件软件,通过群发邮件软件将您的相关网络营销信息发送到获取的邮箱中,达到网络营销的目的。采用多任务同时捕捉,捕捉速度快。可设置爬取深度,实现网页深度挖掘。 查看全部
抓取网页生成电子书(软件介绍网页文字抓取器是个小巧的网页抓取工具)
这是一个网页文本电子书抓取器,该程序可以自动获取指定网页上的所有文本。比如起点小说网站,一些禁止复制的电子书。适用于所有 html 类型的文本。该程序的目的是使您可以轻松复制某些网页。欢迎促进交流。
软件介绍
网页文字抓取器是一款小型网页文字抓取工具,可以让您轻松抓取和复制禁止选择和复制的网页上的文字。对于页面内容被大面积广告覆盖的网页,抓取网页文本爬虫再阅读也是一个不错的解决方案。
软件特点
网页文字电子书抓取器是当今互联网上常用的软件之一。软件绿色、安全、无毒,让您放心使用!如果网络文本电子书抓取器是您需要的工具,那么快来吧!本站为您提供网页文本电子书抓取器的官方下载。
软件说明
Web Text采集器 是一个可以抓取网页文字的网页文字抓取工具。该软件可以自动获取指定网页上的所有文字。比如起点小说网站,一些禁止复制的电子书。适用于所有 html 类型的文本。
该程序的目的是使您可以轻松复制某些网页。欢迎促进交流。
本程序为无毒、无插件的绿色软件。
软件截图

相关软件
Bing(必应)背景图像采集器:这是一个 Bing(必应)背景图像采集器。虽然我不太用微软的搜索引擎bing,但是感觉它的背景图还是不错的,而且每天更换的时候,曾经看到一张不错的图就想下载,但是下载的时候下载不下来我右键单击它。没有右键另存为图片的选项,于是在网上找了一个可以下载bing背景图片的软件。
邮箱抓取器:这是一个邮箱抓取器。它是一种通过提取网页上显示的电子邮件地址来采集各种邮箱信息的软件。获取的邮箱可以作为您在线营销的重要客户数据来源。用户可以在网上下载群发邮件软件,通过群发邮件软件将您的相关网络营销信息发送到获取的邮箱中,达到网络营销的目的。采用多任务同时捕捉,捕捉速度快。可设置爬取深度,实现网页深度挖掘。
抓取网页生成电子书(千人基因组数据库中爬取CHB人群的等位基因频率信息解析)
网站优化 • 优采云 发表了文章 • 0 个评论 • 82 次浏览 • 2021-12-08 09:19
该计划的目的:
根据特定的SNP列表,从千基因组数据库中爬取CHB群体的等位基因频率信息,例如。
因为网页是动态数据,内嵌了JavaScript代码,所以使用selenium来爬取信息。
Beautiful Soup 是一个 Python 库,其主要功能是从网页中抓取数据。Beautiful Soup 提供了一些简单的、python 风格的函数来处理导航、搜索、修改分析树和其他功能。它是一个工具箱,为用户提供需要通过解析文档捕获的数据,避免复杂的正则表达式。
准备:源代码
# -*- coding:utf-8 -*-
from bs4 import BeautifulSoup
import time
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
def get_allele_feq(browser, snp):
browser.get(
'https://www.ncbi.nlm.nih.gov/v ... 39%3B %snp) #Load page
# browser.implicitly_wait(60) #智能等待xx秒
time.sleep(30) #加载时间较长,等待加载完毕
# browser.find_element_by_css_selector("div[title=\"Han Chinese in Bejing, China\"]") #use selenium function to find elements
# 把selenium的webdriver调用page_source函数在传入BeautifulSoup中,就可以用BeautifulSoup解析网页了
bs = BeautifulSoup(browser.page_source, "lxml")
# bs.find_all("div", title="Han Chinese in Bejing, China")
try:
race = bs.find(string="CHB")
race_data = race.find_parent("div").find_parent(
"div").find_next_sibling("div")
# print race_data
race_feq = race_data.find("span", class_="gt-selected").find_all("li") # class_ 防止Python中类关键字重复,产生语法错误
base1_feq = race_feq[0].text #获取标签的内容
base2_feq = race_feq[1].text
return snp, base1_feq, base2_feq # T=0.1408 C=0.8592
except NoSuchElementException:
return "%s:can't find element" %snp
def main():
browser = webdriver.Chrome() # Get local session of chrome
fh = open("./4diseases_snps_1kCHB_allele_feq.list2", 'w')
snps = open("./4diseases_snps.list.uniq2",'r')
for line in snps:
snp = line.strip()
response = get_allele_feq(browser, snp)
time.sleep(1)
fh.write("\t".join(response)) #unicode 编码的对象写到文件中后相当于print效果
fh.write("\n")
print "\t".join(response)
time.sleep(1) # sleep a few seconds
fh.close()
browser.quit() # 退出并关闭窗口的每一个相关的驱动程序
if __name__ == '__main__':
main()
参考资料:
1]:#Beautiful Soup 4.4.0 文档
2]:
3]:
4]:
5]:
6]:
7]: 查看全部
抓取网页生成电子书(千人基因组数据库中爬取CHB人群的等位基因频率信息解析)
该计划的目的:
根据特定的SNP列表,从千基因组数据库中爬取CHB群体的等位基因频率信息,例如。
因为网页是动态数据,内嵌了JavaScript代码,所以使用selenium来爬取信息。
Beautiful Soup 是一个 Python 库,其主要功能是从网页中抓取数据。Beautiful Soup 提供了一些简单的、python 风格的函数来处理导航、搜索、修改分析树和其他功能。它是一个工具箱,为用户提供需要通过解析文档捕获的数据,避免复杂的正则表达式。
准备:源代码
# -*- coding:utf-8 -*-
from bs4 import BeautifulSoup
import time
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
def get_allele_feq(browser, snp):
browser.get(
'https://www.ncbi.nlm.nih.gov/v ... 39%3B %snp) #Load page
# browser.implicitly_wait(60) #智能等待xx秒
time.sleep(30) #加载时间较长,等待加载完毕
# browser.find_element_by_css_selector("div[title=\"Han Chinese in Bejing, China\"]") #use selenium function to find elements
# 把selenium的webdriver调用page_source函数在传入BeautifulSoup中,就可以用BeautifulSoup解析网页了
bs = BeautifulSoup(browser.page_source, "lxml")
# bs.find_all("div", title="Han Chinese in Bejing, China")
try:
race = bs.find(string="CHB")
race_data = race.find_parent("div").find_parent(
"div").find_next_sibling("div")
# print race_data
race_feq = race_data.find("span", class_="gt-selected").find_all("li") # class_ 防止Python中类关键字重复,产生语法错误
base1_feq = race_feq[0].text #获取标签的内容
base2_feq = race_feq[1].text
return snp, base1_feq, base2_feq # T=0.1408 C=0.8592
except NoSuchElementException:
return "%s:can't find element" %snp
def main():
browser = webdriver.Chrome() # Get local session of chrome
fh = open("./4diseases_snps_1kCHB_allele_feq.list2", 'w')
snps = open("./4diseases_snps.list.uniq2",'r')
for line in snps:
snp = line.strip()
response = get_allele_feq(browser, snp)
time.sleep(1)
fh.write("\t".join(response)) #unicode 编码的对象写到文件中后相当于print效果
fh.write("\n")
print "\t".join(response)
time.sleep(1) # sleep a few seconds
fh.close()
browser.quit() # 退出并关闭窗口的每一个相关的驱动程序
if __name__ == '__main__':
main()
参考资料:
1]:#Beautiful Soup 4.4.0 文档
2]:
3]:
4]:
5]:
6]:
7]:
抓取网页生成电子书(暑期实习求职之html算法还是比较满意的?)
网站优化 • 优采云 发表了文章 • 0 个评论 • 71 次浏览 • 2021-12-08 09:18
首先,我道歉。这几天忙着联系暑期实习单位,没能及时回复和更新。我还没有做到。如果可以,请帮我一个忙,看看我的实习申请。
对目前的html解析算法还是比较满意的。在这个阶段,经过一些测试,我添加了对 BR、IUPUT、IMG、META、SCRIPT、注释等特殊 html 语法的支持。对于完全符合html语法规范的页面,效果令人满意。缺点是缺乏容错能力,不符合html语法的页面解析可能会出错或异常。如果要把它做成一个完整的html解析器,我认为必须实现一个优先级算法来提供容错能力。不过我觉得这个问题比较复杂,暂时不能很好的解决。现在,我决定采取另一种妥协,即只解析自定义控件而不是普通的 html 控件。使用当前的算法,可以轻松实现此功能。
个人觉得还是建议使用用户控件,然后在控件输出的时候拦截render。但是我个人觉得这种方法不够灵活,无法实际使用负载。我个人更喜欢实现一个轻量级且易于控制的静态页面生成类库,可以轻松自由地定制和扩展。对于大多数网站来说,首页和分类页面请求频繁,内容需要经常更新。Asp.Net的缓存机制是一个不错的选择;但是对于网站的内容页,比如新闻或者软件下载的内容页,请求频率比较低,不适合动态生成或者使用缓存。在这种情况下,最好的选择是生成一个静态页面并将其保存在硬盘上。此外,
如本文开头所述,因联系暑期实习单位,近日暂停开发。这里继续补上上一篇文章中没有完成的内容。
整个解析模块主要由三个类组成:StaticControlFactory、ParseStatusManager和StaticBaseControl。其中,StaticControlFactory主要负责模板的字符分析处理和控件处理;ParseStatusManager 主要负责处理控制分析状态并向StaticControlFactory发出处理命令;StaticBaseControl 是保存相关结果的实体类。
我觉得代码结构还是很清晰的,注释也很多,我就不详细解释了,主要解释几个关键点。StaticControlFactory 使用堆栈来保存控件的层次结构。每当创建新控件时,都会将新控件添加到当前控件的子控件集合中,然后将当前控件压入堆栈,新控件成为当前控件。当新控件解析后,操作反向。ParseStatusManager 的状态管理也采用了类似的方式,但没有前者的层次结构。StaticControlFactory 每次读取边界字符时,都会调用 ParseStatusManager 对象的 ChangeStatus 方法来实现相应的状态转换。ParseStatusManager 对StaticControlFactory 的操作是通过proxy 结合Command 方式实现的。这种方式最大的好处是ParseStatusManager不需要维护StaticControlFactory的大量方法签名,只需要传入合适的命令即可。如果在处理状态转换时需要添加新的处理,只需让StaticControlFactory添加对新命令的支持即可。
为了增加对不符合 body 形式的标签的支持,包括 img 和 br 等可以没有结束或使用短结束标签的标签,StaticControlFactory 中添加了几个方法。ReadNextWord 用于获取控件开始标记后的下一个。词判断当前标签是否为定义的特殊标签,ProcessForScriptBlock用于专门处理Script模块。如果想改变类库引用我们定义的特殊标签,可以在每次读取控件开始标签时使用ReadNextWord读取控件类型,判断正确后开始控件的解析操作;标记控制结束时也进行类似的操作。
目前的计划实际上是我的第二个计划。第一种方案使用递归,思路不是很清楚,调试起来比较麻烦。目前的方案要清晰得多。对于数据绑定,在我的第一个方案中已经部分实现了,主要是使用遍历和反射。遗憾的是,它只支持对对象数组等数据源的支持。主要原因是我现在的项目使用的是petshop3的结构,以数据实体的形式传递数据,没有实现repeat等控件的嵌套形式。捆绑。不过,预计这两个问题都比较简单,可以比较快的实现。我会尽快实现一个可用的版本。 查看全部
抓取网页生成电子书(暑期实习求职之html算法还是比较满意的?)
首先,我道歉。这几天忙着联系暑期实习单位,没能及时回复和更新。我还没有做到。如果可以,请帮我一个忙,看看我的实习申请。
对目前的html解析算法还是比较满意的。在这个阶段,经过一些测试,我添加了对 BR、IUPUT、IMG、META、SCRIPT、注释等特殊 html 语法的支持。对于完全符合html语法规范的页面,效果令人满意。缺点是缺乏容错能力,不符合html语法的页面解析可能会出错或异常。如果要把它做成一个完整的html解析器,我认为必须实现一个优先级算法来提供容错能力。不过我觉得这个问题比较复杂,暂时不能很好的解决。现在,我决定采取另一种妥协,即只解析自定义控件而不是普通的 html 控件。使用当前的算法,可以轻松实现此功能。
个人觉得还是建议使用用户控件,然后在控件输出的时候拦截render。但是我个人觉得这种方法不够灵活,无法实际使用负载。我个人更喜欢实现一个轻量级且易于控制的静态页面生成类库,可以轻松自由地定制和扩展。对于大多数网站来说,首页和分类页面请求频繁,内容需要经常更新。Asp.Net的缓存机制是一个不错的选择;但是对于网站的内容页,比如新闻或者软件下载的内容页,请求频率比较低,不适合动态生成或者使用缓存。在这种情况下,最好的选择是生成一个静态页面并将其保存在硬盘上。此外,
如本文开头所述,因联系暑期实习单位,近日暂停开发。这里继续补上上一篇文章中没有完成的内容。
整个解析模块主要由三个类组成:StaticControlFactory、ParseStatusManager和StaticBaseControl。其中,StaticControlFactory主要负责模板的字符分析处理和控件处理;ParseStatusManager 主要负责处理控制分析状态并向StaticControlFactory发出处理命令;StaticBaseControl 是保存相关结果的实体类。
我觉得代码结构还是很清晰的,注释也很多,我就不详细解释了,主要解释几个关键点。StaticControlFactory 使用堆栈来保存控件的层次结构。每当创建新控件时,都会将新控件添加到当前控件的子控件集合中,然后将当前控件压入堆栈,新控件成为当前控件。当新控件解析后,操作反向。ParseStatusManager 的状态管理也采用了类似的方式,但没有前者的层次结构。StaticControlFactory 每次读取边界字符时,都会调用 ParseStatusManager 对象的 ChangeStatus 方法来实现相应的状态转换。ParseStatusManager 对StaticControlFactory 的操作是通过proxy 结合Command 方式实现的。这种方式最大的好处是ParseStatusManager不需要维护StaticControlFactory的大量方法签名,只需要传入合适的命令即可。如果在处理状态转换时需要添加新的处理,只需让StaticControlFactory添加对新命令的支持即可。
为了增加对不符合 body 形式的标签的支持,包括 img 和 br 等可以没有结束或使用短结束标签的标签,StaticControlFactory 中添加了几个方法。ReadNextWord 用于获取控件开始标记后的下一个。词判断当前标签是否为定义的特殊标签,ProcessForScriptBlock用于专门处理Script模块。如果想改变类库引用我们定义的特殊标签,可以在每次读取控件开始标签时使用ReadNextWord读取控件类型,判断正确后开始控件的解析操作;标记控制结束时也进行类似的操作。
目前的计划实际上是我的第二个计划。第一种方案使用递归,思路不是很清楚,调试起来比较麻烦。目前的方案要清晰得多。对于数据绑定,在我的第一个方案中已经部分实现了,主要是使用遍历和反射。遗憾的是,它只支持对对象数组等数据源的支持。主要原因是我现在的项目使用的是petshop3的结构,以数据实体的形式传递数据,没有实现repeat等控件的嵌套形式。捆绑。不过,预计这两个问题都比较简单,可以比较快的实现。我会尽快实现一个可用的版本。
抓取网页生成电子书(如何将网页文章批量抓取、生成电子书、直接推送到Kindle)
网站优化 • 优采云 发表了文章 • 0 个评论 • 71 次浏览 • 2021-12-06 18:33
很长一段时间,我一直在研究如何将我关注的网页或文章安装到Kindle中进行认真阅读,但很长一段时间都没有真正的进展。手动格式化书籍制作电子书的方法虽然简单易行,但对于短小且更新频繁的网页文章来说效率低下。如果有工具可以批量抓取网页文章,生成电子书,直接推送到Kindle上就好了。Doocer 就是这样一个实用的工具。
Doocer 是由@lepture 开发的在线服务。它允许用户提交 URL、RSS 提要地址和 Pocket 帐户中的 文章 供以后阅读,然后将它们一一或批量制作成 ePub、MOBI 电子书。您可以直接在 Doocer 中阅读所有 文章,也可以将它们推送到 Kindle 和 Apple Books 阅读。
阅读体验真的很好
由 Doocer 生成的电子书格式良好且引人注目。应该收录的内容很多,不应该收录的内容并不多。本书不仅封面有图文,还有文章目录、网站出处、文章原作者等信息。Doocer生成的MOBI电子书支持KF8标准,因此支持Kindle原生替换自定义字体。
由于网站文章通常都有标准和通用的排版规范,所以Doocer生成的电子书文章中的大小、标题和列表图例与原创网页高度一致文章。原文章中的超链接也全部保留,评论信息、广告等内容全部丢弃。全书的阅读体验非常友好。(当然,如果原网页文章的布局乱了,得到的电子书也可能完全不一样。)
将网页文章制作成电子书
Doocer完成注册登录后,就可以开始将文章网页制作成电子书了。首先,我们点击“NEW BOOK”按钮新建电子书,输入电子书书名。然后选择右上角的“添加”,添加文章 URL 或RSS feed 地址。
以小众网页的文章为例,我们选择“FEED”,在输入框中粘贴RSS地址,然后点击“PARSE”,就会出现小众文章的近期列表显示给我们添加到。我们可以根据需要选择,也可以点击“全选”来全选文章。最后,下拉到页面底部,选择“SAVE”,这些文章就会被添加到书中。
实际上,Doocer 网页与 RSS 工具非常相似。实现了从网站批量抓取文章并集中展示的功能。
要将这些文章转换成电子书并推送到Kindle,我们需要进行一些简单的操作。
首先,根据Doocer个人设置页面的提示,我们打开Amazon Kindle的个人文档设置,在个人文档接收地址中添加Doocer电子书的发送地址。完成后,我们再在输入框中填写Kindle的个人文档接收地址,点击保存。
最后,我们在Doocer中打开《少数派》这本书,在页面上找到“发布”,选择发送到Kindle。大约10-30分钟,Doocer就会完成图书制作并将图书推送到Kindle上。
还有一些问题需要注意
Doocer目前处于Beta测试阶段,还存在一些bug,尤其是中文网站经常出现问题。好在Doocer官网有开发者对话频道,你可以直接联系他帮忙解决。
实现所有操作的自动化流程是我认为Doocer最需要努力的方向。Doocer可以像RSS工具一样抓取网页中更新的文章,但是抓取新的文章并生成电子书和推送仍然需要手动完成。如果整个过程都可以自动化,RSS-MOBI-Kindle就可以一口气搞定,相信实用性会更高。
目前,Doocer 的所有功能都可以免费使用。 查看全部
抓取网页生成电子书(如何将网页文章批量抓取、生成电子书、直接推送到Kindle)
很长一段时间,我一直在研究如何将我关注的网页或文章安装到Kindle中进行认真阅读,但很长一段时间都没有真正的进展。手动格式化书籍制作电子书的方法虽然简单易行,但对于短小且更新频繁的网页文章来说效率低下。如果有工具可以批量抓取网页文章,生成电子书,直接推送到Kindle上就好了。Doocer 就是这样一个实用的工具。
Doocer 是由@lepture 开发的在线服务。它允许用户提交 URL、RSS 提要地址和 Pocket 帐户中的 文章 供以后阅读,然后将它们一一或批量制作成 ePub、MOBI 电子书。您可以直接在 Doocer 中阅读所有 文章,也可以将它们推送到 Kindle 和 Apple Books 阅读。
阅读体验真的很好
由 Doocer 生成的电子书格式良好且引人注目。应该收录的内容很多,不应该收录的内容并不多。本书不仅封面有图文,还有文章目录、网站出处、文章原作者等信息。Doocer生成的MOBI电子书支持KF8标准,因此支持Kindle原生替换自定义字体。
由于网站文章通常都有标准和通用的排版规范,所以Doocer生成的电子书文章中的大小、标题和列表图例与原创网页高度一致文章。原文章中的超链接也全部保留,评论信息、广告等内容全部丢弃。全书的阅读体验非常友好。(当然,如果原网页文章的布局乱了,得到的电子书也可能完全不一样。)
将网页文章制作成电子书
Doocer完成注册登录后,就可以开始将文章网页制作成电子书了。首先,我们点击“NEW BOOK”按钮新建电子书,输入电子书书名。然后选择右上角的“添加”,添加文章 URL 或RSS feed 地址。
以小众网页的文章为例,我们选择“FEED”,在输入框中粘贴RSS地址,然后点击“PARSE”,就会出现小众文章的近期列表显示给我们添加到。我们可以根据需要选择,也可以点击“全选”来全选文章。最后,下拉到页面底部,选择“SAVE”,这些文章就会被添加到书中。
实际上,Doocer 网页与 RSS 工具非常相似。实现了从网站批量抓取文章并集中展示的功能。
要将这些文章转换成电子书并推送到Kindle,我们需要进行一些简单的操作。
首先,根据Doocer个人设置页面的提示,我们打开Amazon Kindle的个人文档设置,在个人文档接收地址中添加Doocer电子书的发送地址。完成后,我们再在输入框中填写Kindle的个人文档接收地址,点击保存。
最后,我们在Doocer中打开《少数派》这本书,在页面上找到“发布”,选择发送到Kindle。大约10-30分钟,Doocer就会完成图书制作并将图书推送到Kindle上。
还有一些问题需要注意
Doocer目前处于Beta测试阶段,还存在一些bug,尤其是中文网站经常出现问题。好在Doocer官网有开发者对话频道,你可以直接联系他帮忙解决。
实现所有操作的自动化流程是我认为Doocer最需要努力的方向。Doocer可以像RSS工具一样抓取网页中更新的文章,但是抓取新的文章并生成电子书和推送仍然需要手动完成。如果整个过程都可以自动化,RSS-MOBI-Kindle就可以一口气搞定,相信实用性会更高。
目前,Doocer 的所有功能都可以免费使用。
抓取网页生成电子书(我的小书屋这个爬虫能爬取网站的电子书下载路径)
网站优化 • 优采云 发表了文章 • 0 个评论 • 105 次浏览 • 2021-12-06 18:30
一、我的小书店
这个爬虫可以爬取网站的电子书下载路径。 (只是一个小练习,侵删)
Crawling网站 使用 BeautifulSoup 进行解析,
二、爬取源代码
1 #!/usr/bin/python
2 # -*- coding: UTF-8 -*-
3 import re
4 import urllib.request
5 from bs4 import BeautifulSoup
6 #编程书籍
7 url = "http://mebook.cc/category/gjs/bckf/"
8 #获得各个书本的链接
9 def getbook(url):
10 html_doc = urllib.request.urlopen(url).read()
11 soup = BeautifulSoup(html_doc,"html.parser",from_encoding="GB18030")
12 links = soup.select('#primary .img a')
13 for link in links:
14 str = link['href'] + link['title'] + '\n'
15 print (str)
16 bookfile(str)
17 #将各个书本的链接追加保存到txt文件(待处理)
18 def bookfile(str):
19 fo = open("file.txt","a")
20 fo.write(str)
21 fo.close()
22 #获取所有书本链接
23 def test():
24 getbook(url)
25 for x in range(2,18):
26 url = "http://mebook.cc/category/gjs/bckf/page/" + str(x)
27 try:
28 getbook(url)
29 bookfile("第"+str(x)+"页\n")
30 except UnicodeEncodeError:
31 pass
32 continue
33 # 获取各个书本的下载链接
34 def getDownload(id):
35 url = "http://mebook.cc/download.php?id="+id
36 html_doc = urllib.request.urlopen(url).read()
37 soup = BeautifulSoup(html_doc,"html.parser",from_encoding="GB18030")
38 links = soup.select('.list a')
39 for link in links:
40 print (link)
41 pwds = soup.select('.desc p')
42 for pwd in pwds:
43 print (pwd.encode(encoding='utf-8' ,errors = 'strict'))
44
45 #test
46 getDownload(str(25723))
查看代码
三、爬取结果
四、问题发现
4.1、Python3爬取信息时网站gbk编码问题
Python 默认字符是 ASCII,既不是 decode('GBK') 也不是 decode('GB18030')
考虑字符串处理,参考: 查看全部
抓取网页生成电子书(我的小书屋这个爬虫能爬取网站的电子书下载路径)
一、我的小书店
这个爬虫可以爬取网站的电子书下载路径。 (只是一个小练习,侵删)
Crawling网站 使用 BeautifulSoup 进行解析,
二、爬取源代码


1 #!/usr/bin/python
2 # -*- coding: UTF-8 -*-
3 import re
4 import urllib.request
5 from bs4 import BeautifulSoup
6 #编程书籍
7 url = "http://mebook.cc/category/gjs/bckf/"
8 #获得各个书本的链接
9 def getbook(url):
10 html_doc = urllib.request.urlopen(url).read()
11 soup = BeautifulSoup(html_doc,"html.parser",from_encoding="GB18030")
12 links = soup.select('#primary .img a')
13 for link in links:
14 str = link['href'] + link['title'] + '\n'
15 print (str)
16 bookfile(str)
17 #将各个书本的链接追加保存到txt文件(待处理)
18 def bookfile(str):
19 fo = open("file.txt","a")
20 fo.write(str)
21 fo.close()
22 #获取所有书本链接
23 def test():
24 getbook(url)
25 for x in range(2,18):
26 url = "http://mebook.cc/category/gjs/bckf/page/" + str(x)
27 try:
28 getbook(url)
29 bookfile("第"+str(x)+"页\n")
30 except UnicodeEncodeError:
31 pass
32 continue
33 # 获取各个书本的下载链接
34 def getDownload(id):
35 url = "http://mebook.cc/download.php?id="+id
36 html_doc = urllib.request.urlopen(url).read()
37 soup = BeautifulSoup(html_doc,"html.parser",from_encoding="GB18030")
38 links = soup.select('.list a')
39 for link in links:
40 print (link)
41 pwds = soup.select('.desc p')
42 for pwd in pwds:
43 print (pwd.encode(encoding='utf-8' ,errors = 'strict'))
44
45 #test
46 getDownload(str(25723))
查看代码
三、爬取结果


四、问题发现
4.1、Python3爬取信息时网站gbk编码问题
Python 默认字符是 ASCII,既不是 decode('GBK') 也不是 decode('GB18030')
考虑字符串处理,参考:
抓取网页生成电子书(Windows,OSX及Linux的官网转电子书是什么? )
网站优化 • 优采云 发表了文章 • 0 个评论 • 54 次浏览 • 2021-12-06 18:27
)
口径
Calibre 可以将指定的多级网页转换为电子书,如pdf、mobi等格式
Calibre 是一款免费的电子书管理工具,兼容 Windows、OS X 和 Linux。令人欣慰的是,除了GUI,calibre 还提供了很多命令行工具。ebook-convert 命令可以基于用户编写的食谱。该文件(实际上是python代码)抓取指定页面的内容,生成mobi等格式的电子书。爬取行为可以通过编写recipe来定制,以适应不同的网页结构。
官方网站:
开源代码:
使用教程
抓取网页内容以生成 Kindle 电子书
在 Mac 上,ebook-convert 脚本命令的位置是 /Applications/calibre.app/Contents/MacOS/ebook-convert。
注意:calibre.app 需要自行下载
其他
现在我只在这里拿了几本书。想抢电子书,可以互相学习,求教;
下面这个链接是另外一个人采集了很多将网站转成电子书的脚本:
Calibre 所需的脚本是一个带有 __recipe__ 扩展名的文件。这个文件其实是一个__python__脚本,所以我一般都是先编辑成Python脚本,然后改扩展名
注意
我的git库的__.gitignore__只指定了几种可以采集到仓库的文件,如下:
*
!*.py
!*.recipe
!.gitignore
!*.md 查看全部
抓取网页生成电子书(Windows,OSX及Linux的官网转电子书是什么?
)
口径
Calibre 可以将指定的多级网页转换为电子书,如pdf、mobi等格式
Calibre 是一款免费的电子书管理工具,兼容 Windows、OS X 和 Linux。令人欣慰的是,除了GUI,calibre 还提供了很多命令行工具。ebook-convert 命令可以基于用户编写的食谱。该文件(实际上是python代码)抓取指定页面的内容,生成mobi等格式的电子书。爬取行为可以通过编写recipe来定制,以适应不同的网页结构。
官方网站:
开源代码:
使用教程
抓取网页内容以生成 Kindle 电子书
在 Mac 上,ebook-convert 脚本命令的位置是 /Applications/calibre.app/Contents/MacOS/ebook-convert。
注意:calibre.app 需要自行下载
其他
现在我只在这里拿了几本书。想抢电子书,可以互相学习,求教;
下面这个链接是另外一个人采集了很多将网站转成电子书的脚本:
Calibre 所需的脚本是一个带有 __recipe__ 扩展名的文件。这个文件其实是一个__python__脚本,所以我一般都是先编辑成Python脚本,然后改扩展名
注意
我的git库的__.gitignore__只指定了几种可以采集到仓库的文件,如下:
*
!*.py
!*.recipe
!.gitignore
!*.md
抓取网页生成电子书(EpubBuilder格式电子书制作神器支持多国界面语言支持编辑支持)
网站优化 • 优采云 发表了文章 • 0 个评论 • 312 次浏览 • 2021-12-05 21:08
EpubBuilder是一款专业的epub格式电子书制作软件,可以帮助用户快速制作pub格式的电子书。软件支持多种主流格式的文本文档的生成,支持导入TXT、epub、snd等原件。文件,操作简单,有需要的朋友赶紧下载体验吧!
EpubBuilder 软件功能
1、txt文本格式:ansi、utf8、unicode格式自动识别
2、网页内容:集成网页浏览器,可以直接从浏览的网页中抓取文字内容,放入新的章节
3、Word格式智能拆分章节,自定义拆分规则,可根据设置规则拆分大源文件
EpubBuilder 软件功能
支持多种格式导入,生成epub格式电子书等常用格式文本文档。
支持Stanza、Sony 505、Adobe DE等阅读器,非常适合在手机和平板上制作epub电子书。
将用户数据放在AppData目录下,除了第一次运行,不需要以管理员身份运行!
EpubBuilder 教程
1、打开软件,显示程序正在启动,出现如下界面
2、进入软件登录界面,如下图
3、您需要输入账号密码,如果没有请点击快速注册
更新日志
v4.8.11
书源开发的ePub电子书制作神器
支持多国界面语言
支持unicode编辑
支持导入Txt、epub、Html、chm、snb等源文件
支持图文混合、音频、视频、多级目录等
支持生成epub和mobi格式的电子书
支持网页内容抓取 查看全部
抓取网页生成电子书(EpubBuilder格式电子书制作神器支持多国界面语言支持编辑支持)
EpubBuilder是一款专业的epub格式电子书制作软件,可以帮助用户快速制作pub格式的电子书。软件支持多种主流格式的文本文档的生成,支持导入TXT、epub、snd等原件。文件,操作简单,有需要的朋友赶紧下载体验吧!

EpubBuilder 软件功能
1、txt文本格式:ansi、utf8、unicode格式自动识别
2、网页内容:集成网页浏览器,可以直接从浏览的网页中抓取文字内容,放入新的章节
3、Word格式智能拆分章节,自定义拆分规则,可根据设置规则拆分大源文件
EpubBuilder 软件功能
支持多种格式导入,生成epub格式电子书等常用格式文本文档。
支持Stanza、Sony 505、Adobe DE等阅读器,非常适合在手机和平板上制作epub电子书。
将用户数据放在AppData目录下,除了第一次运行,不需要以管理员身份运行!
EpubBuilder 教程
1、打开软件,显示程序正在启动,出现如下界面

2、进入软件登录界面,如下图

3、您需要输入账号密码,如果没有请点击快速注册
更新日志
v4.8.11
书源开发的ePub电子书制作神器
支持多国界面语言
支持unicode编辑
支持导入Txt、epub、Html、chm、snb等源文件
支持图文混合、音频、视频、多级目录等
支持生成epub和mobi格式的电子书
支持网页内容抓取
抓取网页生成电子书(网站没有输出Feed(Feed)RSS阅读器)
网站优化 • 优采云 发表了文章 • 0 个评论 • 54 次浏览 • 2021-12-05 07:05
我一直在关注某个网站,但是发现网站不输出提要,我还能用RSS阅读器订阅吗?
如果你现在看三好市民的RSS阅读器,你会发现你订阅了各种网站,甚至包括微博,有的只是订阅了网站的某个版块或页面,并且这些部分和页面不提供 RSS 提要,也不输出提要。那么三好市民是如何订阅的呢?
这需要借助在线工具Feed43,理论上可以通过Feed43生成任意网页的RSS提要,从而订阅任意网页。以下三位好公民以他们的订阅之一为例进行演示:
例如,三好市民一直关注中关村在线软件频道的技能申请页面,但该页面不提供RSS订阅。每天都要单独打开页面查看有没有更新文章,很麻烦。现在我们使用 Feed43 从此页面生成 RSS 提要。
首先访问Feed43网站,点击“创建自己的Feed”链接,打开新的Feed页面。
第一步:指定源页面地址
在地址框中输入中关村在线软件频道技能申请页面的网址。如图:
在后面的编码框中填写网页的编辑类型,通过查看网页源文件头部的代码可以看出该网页是gbk。然后点击“重新加载”按钮,在下面的文本框中显示当前的否定源代码。
步骤 2:定义提取规则
我们先观察网页的源码,找到需要订阅的文章列表的代码,然后找到规则,再总结成符合Feed43要求的抽取规则。例如,本网页的文章列表部分中每个文章条目的代码为:
1
2
3
4
5
6
7
8
9
10
11
12
学长教你升级XP Win8.1系统安装指南<p class="nlc_time">2014年04月12日 05:42 作者:马荣 【原创】
XP已经在几天前正式退休了,所以经常找学长帮忙的重装电脑的学弟学妹们也要犯愁了。其实完全没有必要,因为我们干脆直接升级到Win8.1就能解决所有的问题了。现在作为一个大学长,我们现在就教大... [详细]
<br />
标签:最新 | 应用技巧 | win8应用 | 桌面软件
查看全文我要评论(4)http://soft.zol.com.cn/446/4466341.html
</p>
其中,对我们订阅有用的无非是文章的标题和链接,最多加上发布时间。然后根据Feed43的抽取规则,我们用{%}表示需要的部分,用{*}表示不需要的部分。从而总结出以下抽取规则并输入到“项目(可重复)搜索模式”框中。
1
{*}{%}<p class="nlc_time">{%}{*}{*}</p>
如图:
有朋友可能会问,上面还有没有填写的“全局搜索模式”设置框?其实这个框可以留空,也可以只填文章列表部分开头的代码和结果,中间加{%},例如:
1
{%}
然后点击“提取”按钮,预览根据您定义的提取规则捕获的提要内容。
第 3 步:定义输出格式
Feed43 会自动生成这个页面上的feed 的标题名称、链接地址和描述,feed 的内容格式需要自己定义。根据步骤2预览的Feed内容,填写对应的入口代码。如图:
最后,单击“预览”按钮以定义格式预览提要内容。
第 4 步:获取 RSS 提要提要
现在您已经完成了,您已经可以看到生成的 xml 格式的 RSS 提要文件。如图:
复制xml文件的链接地址,然后就可以在RSS阅读器中添加订阅了。添加后订阅效果如图:
最后提醒一下,虽然三好市民还没有经过验证,但是为了保证你新创建的Feed可以正常更新,最好先注册一个Feed43账号,然后点击底部的“Add this feed to my account”在您刚刚创建提要的页面上,然后将其放入将提要添加到您的帐户中。您也可以登录您的Feed43账号,点击窗口上方的“我的订阅源”,然后点击“添加订阅源到您的帐号/取消删除订阅源”,在xml后缀前填写数字“72806”在这个例子中为“Feed Name”可以。不过免费用户的feed更新频率是6小时,升级为付费用户后可以增加到1小时。 查看全部
抓取网页生成电子书(网站没有输出Feed(Feed)RSS阅读器)
我一直在关注某个网站,但是发现网站不输出提要,我还能用RSS阅读器订阅吗?
如果你现在看三好市民的RSS阅读器,你会发现你订阅了各种网站,甚至包括微博,有的只是订阅了网站的某个版块或页面,并且这些部分和页面不提供 RSS 提要,也不输出提要。那么三好市民是如何订阅的呢?
这需要借助在线工具Feed43,理论上可以通过Feed43生成任意网页的RSS提要,从而订阅任意网页。以下三位好公民以他们的订阅之一为例进行演示:
例如,三好市民一直关注中关村在线软件频道的技能申请页面,但该页面不提供RSS订阅。每天都要单独打开页面查看有没有更新文章,很麻烦。现在我们使用 Feed43 从此页面生成 RSS 提要。
首先访问Feed43网站,点击“创建自己的Feed”链接,打开新的Feed页面。
第一步:指定源页面地址
在地址框中输入中关村在线软件频道技能申请页面的网址。如图:

在后面的编码框中填写网页的编辑类型,通过查看网页源文件头部的代码可以看出该网页是gbk。然后点击“重新加载”按钮,在下面的文本框中显示当前的否定源代码。
步骤 2:定义提取规则
我们先观察网页的源码,找到需要订阅的文章列表的代码,然后找到规则,再总结成符合Feed43要求的抽取规则。例如,本网页的文章列表部分中每个文章条目的代码为:
1
2
3
4
5
6
7
8
9
10
11
12

学长教你升级XP Win8.1系统安装指南<p class="nlc_time">2014年04月12日 05:42 作者:马荣 【原创】
XP已经在几天前正式退休了,所以经常找学长帮忙的重装电脑的学弟学妹们也要犯愁了。其实完全没有必要,因为我们干脆直接升级到Win8.1就能解决所有的问题了。现在作为一个大学长,我们现在就教大... [详细]
<br />
标签:最新 | 应用技巧 | win8应用 | 桌面软件
查看全文我要评论(4)http://soft.zol.com.cn/446/4466341.html
</p>
其中,对我们订阅有用的无非是文章的标题和链接,最多加上发布时间。然后根据Feed43的抽取规则,我们用{%}表示需要的部分,用{*}表示不需要的部分。从而总结出以下抽取规则并输入到“项目(可重复)搜索模式”框中。
1
{*}{%}<p class="nlc_time">{%}{*}{*}</p>
如图:

有朋友可能会问,上面还有没有填写的“全局搜索模式”设置框?其实这个框可以留空,也可以只填文章列表部分开头的代码和结果,中间加{%},例如:
1
{%}
然后点击“提取”按钮,预览根据您定义的提取规则捕获的提要内容。
第 3 步:定义输出格式
Feed43 会自动生成这个页面上的feed 的标题名称、链接地址和描述,feed 的内容格式需要自己定义。根据步骤2预览的Feed内容,填写对应的入口代码。如图:

最后,单击“预览”按钮以定义格式预览提要内容。
第 4 步:获取 RSS 提要提要
现在您已经完成了,您已经可以看到生成的 xml 格式的 RSS 提要文件。如图:

复制xml文件的链接地址,然后就可以在RSS阅读器中添加订阅了。添加后订阅效果如图:

最后提醒一下,虽然三好市民还没有经过验证,但是为了保证你新创建的Feed可以正常更新,最好先注册一个Feed43账号,然后点击底部的“Add this feed to my account”在您刚刚创建提要的页面上,然后将其放入将提要添加到您的帐户中。您也可以登录您的Feed43账号,点击窗口上方的“我的订阅源”,然后点击“添加订阅源到您的帐号/取消删除订阅源”,在xml后缀前填写数字“72806”在这个例子中为“Feed Name”可以。不过免费用户的feed更新频率是6小时,升级为付费用户后可以增加到1小时。
抓取网页生成电子书(- )
网站优化 • 优采云 发表了文章 • 0 个评论 • 69 次浏览 • 2021-12-05 07:04
)
我们的任务:抓取网页内容
1.用户指定的网址
2.获取文章的所有文本
urllib 的请求模块可以方便的抓取 URL 内容,即向指定页面发送 GET 请求,然后返回 HTTP 响应
Python 通过 re 模块提供对正则表达式的支持
from urllib import request
import re
用户输入指定的网址
#地址 绑定(编程期间)
#user_url = "https://news.sina.com.cn/o/201 ... ot%3B
#地址 由用户指定(使用期间)
print("请输入您想查看的url")
user_url = input()
请输入您想查看的url
https://www.cnblogs.com/ms-uap/p/9928254.html
获取网页的html信息并进行转码
添加头部信息,反爬虫策略
我们需要url的标题和文章进行分析。
提取title标签的正则表达式我的匹配码
title = re.findall('(.*?[\u4e00-\u9fa5]*?.*?)', data_web)
for line in title:
print(line)
系列之1-神经网络的基本工作原理 - UniversalAIPlatform - 博客园
提取p标签的正则表达式我的匹配码
article = re.findall('(.*?[\u4e00-\u9fa5]*?.*?)', data_web)
for line in article:
print(line)</p> 查看全部
抓取网页生成电子书(-
)
我们的任务:抓取网页内容
1.用户指定的网址
2.获取文章的所有文本
urllib 的请求模块可以方便的抓取 URL 内容,即向指定页面发送 GET 请求,然后返回 HTTP 响应
Python 通过 re 模块提供对正则表达式的支持
from urllib import request
import re
用户输入指定的网址
#地址 绑定(编程期间)
#user_url = "https://news.sina.com.cn/o/201 ... ot%3B
#地址 由用户指定(使用期间)
print("请输入您想查看的url")
user_url = input()
请输入您想查看的url
https://www.cnblogs.com/ms-uap/p/9928254.html
获取网页的html信息并进行转码
添加头部信息,反爬虫策略
我们需要url的标题和文章进行分析。
提取title标签的正则表达式我的匹配码
title = re.findall('(.*?[\u4e00-\u9fa5]*?.*?)', data_web)
for line in title:
print(line)
系列之1-神经网络的基本工作原理 - UniversalAIPlatform - 博客园
提取p标签的正则表达式我的匹配码
article = re.findall('(.*?[\u4e00-\u9fa5]*?.*?)', data_web)
for line in article:
print(line)</p>
抓取网页生成电子书(Windows,OSX及Linux操作系统或mobi格式的在线阅读 )
网站优化 • 优采云 发表了文章 • 0 个评论 • 54 次浏览 • 2021-12-03 19:54
)
自从我买了kindle,我就一直在想如何最大限度地发挥它的功效。虽然可供购买的书籍很多,网上也有很多免费的电子书,但还是有很多网页形式的有趣内容。例如,O'Reilly Atlas 提供了很多电子书,但只提供免费在线阅读;此外,许多材料或文件只是网络形式。所以我希望能以某种方式将这些网上资料转成epub或mobi格式,以便在kindle上阅读。本文文章介绍了如何使用calibre并编写少量代码来实现这一目标。
Calibre 简介
Calibre 是一款免费的电子书管理工具,兼容 Windows、OS X 和 Linux。令人欣慰的是,除了GUI,calibre 还提供了很多命令行工具。ebook-convert 命令可以基于用户编写的食谱。该文件(实际上是python代码)抓取指定页面的内容,生成mobi等格式的电子书。爬取行为可以通过编写recipe来定制,以适应不同的网页结构。
安装口径
Calibre的下载地址是,您可以根据自己的操作系统下载相应的安装程序。
如果是Linux操作系统,也可以通过软件仓库安装:
Archlinux:
pacman -S calibre
Debian/Ubuntu:
apt-get install calibre
红帽/Fedora/CentOS:
yum -y install calibre
请注意,如果您使用 OSX,则需要单独安装命令行工具。
抓取网页以生成电子书
下面以Git Pocket Guide为例,说明如何通过calibre从网页中生成电子书。
找到索引页
要爬取整本书,首先要找到索引页。这个页面通常是目录,也就是目录页面,其中每个目录链接都连接到相应的内容页面。在生成电子书时,索引页会指导抓取哪些页面以及内容组织的顺序。在这个例子中,索引页是。
写食谱
Recipes 是一个带有配方扩展名的脚本。内容其实是一段python代码,定义了calibre爬取页面的范围和行为。以下是爬取 Git Pocket Guide 的秘籍:
from calibre.web.feeds.recipes import BasicNewsRecipeclass Git_Pocket_Guide(BasicNewsRecipe): title = 'Git Pocket Guide' description = '' cover_url = 'http://akamaicovers.oreilly.com/images/0636920024972/lrg.jpg' url_prefix = 'http://chimera.labs.oreilly.com/books/1230000000561/' no_stylesheets = True keep_only_tags = [{ 'class': 'chapter' }] def get_title(self, link): return link.contents[0].strip() def parse_index(self): soup = self.index_to_soup(self.url_prefix + 'index.html') div = soup.find('div', { 'class': 'toc' }) articles = [] for link in div.findAll('a'): if '#' in link['href']: continue if not 'ch' in link['href']: continue til = self.get_title(link) url = self.url_prefix + link['href'] a = { 'title': til, 'url': url } articles.append(a) ans = [('Git_Pocket_Guide', articles)] return ans
代码的不同部分解释如下。
整体结构
一般来说,一个recipe是一个python类,但是这个类必须继承calibre.web.feeds.recipes.BasicNewsRecipe。
解析索引
整个recipe的核心方法是parse_index,这也是recipes必须实现的唯一方法。该方法的目标是通过分析索引页的内容,返回一个稍微复杂一些的数据结构(稍后介绍)。这个数据结构定义了整个电子书的内容和内容组织顺序。
整体属性设置
在类的开头,定义了一些全局属性:
title = 'Git Pocket Guide'description = ''cover_url = 'http://akamaicovers.oreilly.com/images/0636920024972/lrg.jpg'url_prefix = 'http://chimera.labs.oreilly.com/books/1230000000561/'no_stylesheets = Truekeep_only_tags = [{ 'class': 'chapter' }] 查看全部
抓取网页生成电子书(Windows,OSX及Linux操作系统或mobi格式的在线阅读
)
自从我买了kindle,我就一直在想如何最大限度地发挥它的功效。虽然可供购买的书籍很多,网上也有很多免费的电子书,但还是有很多网页形式的有趣内容。例如,O'Reilly Atlas 提供了很多电子书,但只提供免费在线阅读;此外,许多材料或文件只是网络形式。所以我希望能以某种方式将这些网上资料转成epub或mobi格式,以便在kindle上阅读。本文文章介绍了如何使用calibre并编写少量代码来实现这一目标。
Calibre 简介
Calibre 是一款免费的电子书管理工具,兼容 Windows、OS X 和 Linux。令人欣慰的是,除了GUI,calibre 还提供了很多命令行工具。ebook-convert 命令可以基于用户编写的食谱。该文件(实际上是python代码)抓取指定页面的内容,生成mobi等格式的电子书。爬取行为可以通过编写recipe来定制,以适应不同的网页结构。
安装口径
Calibre的下载地址是,您可以根据自己的操作系统下载相应的安装程序。
如果是Linux操作系统,也可以通过软件仓库安装:
Archlinux:
pacman -S calibre
Debian/Ubuntu:
apt-get install calibre
红帽/Fedora/CentOS:
yum -y install calibre
请注意,如果您使用 OSX,则需要单独安装命令行工具。
抓取网页以生成电子书
下面以Git Pocket Guide为例,说明如何通过calibre从网页中生成电子书。
找到索引页
要爬取整本书,首先要找到索引页。这个页面通常是目录,也就是目录页面,其中每个目录链接都连接到相应的内容页面。在生成电子书时,索引页会指导抓取哪些页面以及内容组织的顺序。在这个例子中,索引页是。
写食谱
Recipes 是一个带有配方扩展名的脚本。内容其实是一段python代码,定义了calibre爬取页面的范围和行为。以下是爬取 Git Pocket Guide 的秘籍:
from calibre.web.feeds.recipes import BasicNewsRecipeclass Git_Pocket_Guide(BasicNewsRecipe): title = 'Git Pocket Guide' description = '' cover_url = 'http://akamaicovers.oreilly.com/images/0636920024972/lrg.jpg' url_prefix = 'http://chimera.labs.oreilly.com/books/1230000000561/' no_stylesheets = True keep_only_tags = [{ 'class': 'chapter' }] def get_title(self, link): return link.contents[0].strip() def parse_index(self): soup = self.index_to_soup(self.url_prefix + 'index.html') div = soup.find('div', { 'class': 'toc' }) articles = [] for link in div.findAll('a'): if '#' in link['href']: continue if not 'ch' in link['href']: continue til = self.get_title(link) url = self.url_prefix + link['href'] a = { 'title': til, 'url': url } articles.append(a) ans = [('Git_Pocket_Guide', articles)] return ans
代码的不同部分解释如下。
整体结构
一般来说,一个recipe是一个python类,但是这个类必须继承calibre.web.feeds.recipes.BasicNewsRecipe。
解析索引
整个recipe的核心方法是parse_index,这也是recipes必须实现的唯一方法。该方法的目标是通过分析索引页的内容,返回一个稍微复杂一些的数据结构(稍后介绍)。这个数据结构定义了整个电子书的内容和内容组织顺序。
整体属性设置
在类的开头,定义了一些全局属性:
title = 'Git Pocket Guide'description = ''cover_url = 'http://akamaicovers.oreilly.com/images/0636920024972/lrg.jpg'url_prefix = 'http://chimera.labs.oreilly.com/books/1230000000561/'no_stylesheets = Truekeep_only_tags = [{ 'class': 'chapter' }]
抓取网页生成电子书(全篇的实现思路分析网页学会使用BeautifulSoup库爬取并导出参考资料 )
网站优化 • 优采云 发表了文章 • 0 个评论 • 77 次浏览 • 2021-12-02 06:11
)
爬行动物的成因
官方文档或手册虽然可以查阅,但如果变成纸质版是不是更容易阅读和记忆。如果你只是简单地复制和粘贴,你不知道什么时候会完成。所以我开始考虑爬下官方的Android手册。
整篇文章实现思路分析网页学习使用BeautifulSoup库抓取导出
参考资料:
* 将廖雪峰的教程转成PDF电子书
* 请求文件
*美丽的汤文件
配置
Ubuntu下使用Pycharm运行成功
要转换为 PDF,您需要下载 wkhtmltopdf
具体流程网页分析
对于这样的网页,您只需获取网页的正文和标题,以及左侧导航栏中的所有网址
如下:
下一个工作是找到这些标签......
关于Requests的使用
详见文档,这里只是简单使用Requests获取html并使用代理翻墙(网站不能直接访问,需要VPN)
proxies={
"http":"http://vpn的IP:port",
"https":"https://vpn的IP:port",
}
response=requests.get(url,proxies=proxies)
美汤的使用
参考资料中有一个 Beautiful Soup 文档。看完就知道讲了两件事:一是找标签,二是修改标签。
这篇文章需要做的是:
1. 获取title和所有url,这涉及到找标签
#对标签进行判断,一个标签含有href而不含有description,则返回true
#而我希望获取的是含有href属性而不含有description属性的<a>标签,(且只有a标签含有href)
def has_href_but_no_des(tag):
return tag.has_attr('href') and not tag.has_attr('description')
#网页分析,获取网址和标题
def parse_url_to_html(url):
response=requests.get(url,proxies=proxies)
soup=BeautifulSoup(response.content,"html.parser")
s=[]#获取所有的网址
title=[]#获取对应的标题
tag=soup.find(id="nav")#获取第一个id为"nav"的标签,这个里面包含了网址和标题
for i in tag.find_all(has_href_but_no_des):
s.append(i['href'])
title.append(i.text)
#获取的只是标签集,需要加html前缀
htmls = ""
with open("android_training_3.html",'a') as f:
f.write(htmls)
解析上面得到的URL,获取文本,将图片保存到本地;它涉及查找标签和修改属性
#网页操作,获取正文及图片
def get_htmls(urls,title):
for i in range(len(urls)):
response=requests.get(urls[i],proxies=proxies)
soup=BeautifulSoup(response.content,"html.parser")
htmls=""+str(i)+"."+title[i]+""
tag=soup.find(class_='jd-descr')
#为image添加相对路径,并下载图片
for img in tag.find_all('img'):
im = requests.get(img['src'], proxies=proxies)
filename = os.path.split(img['src'])[1]
with open('image/' + filename, 'wb') as f:
f.write(im.content)
img['src']='image/'+filename
htmls=htmls+str(tag)
with open("android_training_3.html",'a') as f:
f.write(htmls)
print(" (%s) [%s] download end"%(i,title[i]))
htmls=""
with open("android_training_3.html",'a') as f:
f.write(htmls)
转换为 PDF
这一步需要下载wkhtmltopdf,在windows下执行程序总是报错..ubuntu是可以的
def save_pdf(html):
"""
把所有html文件转换成pdf文件
"""
options = {
'page-size': 'Letter',
'encoding': "UTF-8",
'custom-header': [
('Accept-Encoding', 'gzip')
]
}
pdfkit.from_file(html, "android_training_3.pdf", options=options)
最终效果图
查看全部
抓取网页生成电子书(全篇的实现思路分析网页学会使用BeautifulSoup库爬取并导出参考资料
)
爬行动物的成因
官方文档或手册虽然可以查阅,但如果变成纸质版是不是更容易阅读和记忆。如果你只是简单地复制和粘贴,你不知道什么时候会完成。所以我开始考虑爬下官方的Android手册。
整篇文章实现思路分析网页学习使用BeautifulSoup库抓取导出
参考资料:
* 将廖雪峰的教程转成PDF电子书
* 请求文件
*美丽的汤文件
配置
Ubuntu下使用Pycharm运行成功
要转换为 PDF,您需要下载 wkhtmltopdf
具体流程网页分析
对于这样的网页,您只需获取网页的正文和标题,以及左侧导航栏中的所有网址
如下:
下一个工作是找到这些标签......
关于Requests的使用
详见文档,这里只是简单使用Requests获取html并使用代理翻墙(网站不能直接访问,需要VPN)
proxies={
"http":"http://vpn的IP:port",
"https":"https://vpn的IP:port",
}
response=requests.get(url,proxies=proxies)
美汤的使用
参考资料中有一个 Beautiful Soup 文档。看完就知道讲了两件事:一是找标签,二是修改标签。
这篇文章需要做的是:
1. 获取title和所有url,这涉及到找标签
#对标签进行判断,一个标签含有href而不含有description,则返回true
#而我希望获取的是含有href属性而不含有description属性的<a>标签,(且只有a标签含有href)
def has_href_but_no_des(tag):
return tag.has_attr('href') and not tag.has_attr('description')
#网页分析,获取网址和标题
def parse_url_to_html(url):
response=requests.get(url,proxies=proxies)
soup=BeautifulSoup(response.content,"html.parser")
s=[]#获取所有的网址
title=[]#获取对应的标题
tag=soup.find(id="nav")#获取第一个id为"nav"的标签,这个里面包含了网址和标题
for i in tag.find_all(has_href_but_no_des):
s.append(i['href'])
title.append(i.text)
#获取的只是标签集,需要加html前缀
htmls = ""
with open("android_training_3.html",'a') as f:
f.write(htmls)
解析上面得到的URL,获取文本,将图片保存到本地;它涉及查找标签和修改属性
#网页操作,获取正文及图片
def get_htmls(urls,title):
for i in range(len(urls)):
response=requests.get(urls[i],proxies=proxies)
soup=BeautifulSoup(response.content,"html.parser")
htmls=""+str(i)+"."+title[i]+""
tag=soup.find(class_='jd-descr')
#为image添加相对路径,并下载图片
for img in tag.find_all('img'):
im = requests.get(img['src'], proxies=proxies)
filename = os.path.split(img['src'])[1]
with open('image/' + filename, 'wb') as f:
f.write(im.content)
img['src']='image/'+filename
htmls=htmls+str(tag)
with open("android_training_3.html",'a') as f:
f.write(htmls)
print(" (%s) [%s] download end"%(i,title[i]))
htmls=""
with open("android_training_3.html",'a') as f:
f.write(htmls)
转换为 PDF
这一步需要下载wkhtmltopdf,在windows下执行程序总是报错..ubuntu是可以的
def save_pdf(html):
"""
把所有html文件转换成pdf文件
"""
options = {
'page-size': 'Letter',
'encoding': "UTF-8",
'custom-header': [
('Accept-Encoding', 'gzip')
]
}
pdfkit.from_file(html, "android_training_3.pdf", options=options)
最终效果图
抓取网页生成电子书(行行网电子书多线程爬取-撸代码代码非常简单-写在前面 )
网站优化 • 优采云 发表了文章 • 0 个评论 • 74 次浏览 • 2021-12-02 06:11
)
星星网电子书的多线程爬取-写在前面
最近想找几本电子书看,然后找到一本叫周都网站,网站很好看,简单清爽,书很多,就是百度。网盘可以直接下载,更新速度也可以接受,所以在爬。这篇文章文章刚学习,这么好的分享网站,尽量不要爬,不会影响别人访问的速度,想要数据的可以评论我的博客我会发给你,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个多线程,但是这样很容易导致其他人的服务器瘫痪。因此,必须限制并发数。下面的代码,你试着把它放在指定的位置。
sema = asyncio.Semaphore(5)
# 为避免爬虫一次性请求次数太多,控制一下
async def x_get_source(url):
with(await sema):
await get_content(url)
第2步
为了处理获取的网页的源代码并提取我们想要的元素,我添加了一个新方法,使用 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("插入成功!")
星星网电子书多线程爬取-运行代码,查看结果
因为这可能涉及到从别人的服务器获取重要数据,代码不会上传到github,有需要的可以留言,我会单独发给你
查看全部
抓取网页生成电子书(行行网电子书多线程爬取-撸代码代码非常简单-写在前面
)
星星网电子书的多线程爬取-写在前面
最近想找几本电子书看,然后找到一本叫周都网站,网站很好看,简单清爽,书很多,就是百度。网盘可以直接下载,更新速度也可以接受,所以在爬。这篇文章文章刚学习,这么好的分享网站,尽量不要爬,不会影响别人访问的速度,想要数据的可以评论我的博客我会发给你,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个多线程,但是这样很容易导致其他人的服务器瘫痪。因此,必须限制并发数。下面的代码,你试着把它放在指定的位置。
sema = asyncio.Semaphore(5)
# 为避免爬虫一次性请求次数太多,控制一下
async def x_get_source(url):
with(await sema):
await get_content(url)
第2步
为了处理获取的网页的源代码并提取我们想要的元素,我添加了一个新方法,使用 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("插入成功!")
星星网电子书多线程爬取-运行代码,查看结果
因为这可能涉及到从别人的服务器获取重要数据,代码不会上传到github,有需要的可以留言,我会单独发给你
抓取网页生成电子书(快速指南发送一个-html的方便就是(图))
网站优化 • 优采云 发表了文章 • 0 个评论 • 95 次浏览 • 2021-12-02 01:10
安装
安装很简单,直接执行:
pip install requests-html
就是这样。
分析页面结构
通过浏览器查看元素,可以发现这本电子书网站是用WordPress搭建的。主页列表上的元素非常简单和规则。
所以我们可以搜索 .entry-title> a 得到所有书籍详情页的链接,然后我们进入详情页找到下载链接,如下图
可以发现.download-links>a中的链接就是本书的下载链接。回到列表页面,可以发现该站点有700多个页面,因此我们可以遍历列表以获取所有下载链接。
请求-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/pyth ... 39%3B, '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 多个电子书案例。我希望它会对你有所帮助。如果您有任何问题,请给我留言。小编会及时回复您。非常感谢大家支持找教程网网站! 查看全部
抓取网页生成电子书(快速指南发送一个-html的方便就是(图))
安装
安装很简单,直接执行:
pip install requests-html
就是这样。
分析页面结构
通过浏览器查看元素,可以发现这本电子书网站是用WordPress搭建的。主页列表上的元素非常简单和规则。

所以我们可以搜索 .entry-title> a 得到所有书籍详情页的链接,然后我们进入详情页找到下载链接,如下图

可以发现.download-links>a中的链接就是本书的下载链接。回到列表页面,可以发现该站点有700多个页面,因此我们可以遍历列表以获取所有下载链接。
请求-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/pyth ... 39%3B, '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 个评论 • 119 次浏览 • 2021-12-01 19:11
)
网络图书抓取器主要用于抓取网络小说生成文本文件。它可以提取和调整指定小说目录页面的章节信息,然后按照章节顺序抓取小说内容,然后进行合并。抓取过程可以随时中断,关闭程序后可以继续上一个任务。
软件特点
1、 章节调整:提取目录后,可以进行移动、删除、倒序等调整操作。调整会直接影响最终的书籍,也会以调整后的章节顺序输出。
2、自动重试:在爬取过程中,由于网络因素,可能会出现爬取失败的情况。程序可能会自动重试直到成功,也可以暂时中断爬取(中断后关闭程序不影响进度),等网络好了再试。
3、停止和恢复:可以随时停止抓取过程,退出程序后不影响进度(章节信息会保存在记录中,运行程序后可以恢复抓取下一次。注意:您需要先使用停止按钮中断然后退出程序,如果直接退出,将不会恢复)。
4、 一键抓取:又称“哑模式”,基本可以实现自动抓取合并功能,直接输出最终的文本文件。前面可能需要输入最基本的网址、保存位置等信息(会有明显的操作提示),调整章节后也可以使用一键抓取,抓取合并操作会自动完成.
5、适用网站:已输入10个适用网站(选择后可以快速打开网站找到您需要的书),并自动应用相应的代码, 也可以测试其他小说网站,如果一起使用,可以手动添加到设置文件中以备后用。
6、 制作电子书方便:可以在设置文件中添加每个章节名称的前缀和后缀,为后期制作电子书的目录带来极大的方便。
查看全部
抓取网页生成电子书(《后期制作》软件特色制作流程及应用
)
网络图书抓取器主要用于抓取网络小说生成文本文件。它可以提取和调整指定小说目录页面的章节信息,然后按照章节顺序抓取小说内容,然后进行合并。抓取过程可以随时中断,关闭程序后可以继续上一个任务。

软件特点
1、 章节调整:提取目录后,可以进行移动、删除、倒序等调整操作。调整会直接影响最终的书籍,也会以调整后的章节顺序输出。
2、自动重试:在爬取过程中,由于网络因素,可能会出现爬取失败的情况。程序可能会自动重试直到成功,也可以暂时中断爬取(中断后关闭程序不影响进度),等网络好了再试。
3、停止和恢复:可以随时停止抓取过程,退出程序后不影响进度(章节信息会保存在记录中,运行程序后可以恢复抓取下一次。注意:您需要先使用停止按钮中断然后退出程序,如果直接退出,将不会恢复)。
4、 一键抓取:又称“哑模式”,基本可以实现自动抓取合并功能,直接输出最终的文本文件。前面可能需要输入最基本的网址、保存位置等信息(会有明显的操作提示),调整章节后也可以使用一键抓取,抓取合并操作会自动完成.
5、适用网站:已输入10个适用网站(选择后可以快速打开网站找到您需要的书),并自动应用相应的代码, 也可以测试其他小说网站,如果一起使用,可以手动添加到设置文件中以备后用。
6、 制作电子书方便:可以在设置文件中添加每个章节名称的前缀和后缀,为后期制作电子书的目录带来极大的方便。

抓取网页生成电子书(后续就是怎么去请求网络了,解析网页html标签(组图))
网站优化 • 优采云 发表了文章 • 0 个评论 • 63 次浏览 • 2021-11-29 04:05
Github 博文地址,这里更新可能不是很及时。1.背景
最近发现算法和数据结构掉了不少(其实大学没好好学习,囧rz)。考虑到最近的项目结构越来越复杂,就用它来实践自己的想法,打算复习一下数据结构和算法。. 结合最近的英语学习,然后自己干脆用英语。然后选择一本参考书《Java 中的数据结构和算法》。
起初,它非常费力,所以请慢慢来。因为之前有翻书的习惯,所以去书所附的官网,发现所附的PDF文件其实还不错,图文并茂。是很好的理解资料,所以要果断下载。不过,尼玛,原来还有很多。一个一个的救他们,真的很可怕。想想如何下载它们。
2.实现
考虑到目前你所学和理解的所有语言,可以用来实现,并按以下顺序排列层次:
Java/Android 熟悉 C# 熟悉 Python 熟悉语法 Javascript 熟悉一些 C/C++ 熟悉语法
为了实现这一点,它当然是最简单、最快和最好的。考虑到大学一直在使用C#,为什么不使用它呢?但是发现OSX平台只能使用Mono,不得不重新熟悉一下。考虑到所需的时间,Java 实现并不快。我对Javascript不熟悉,好像可以用node.js来写(atom用的)。陌生。C/C++很多年没用了,要实现的代码很多,特别麻烦。考虑到前段时间正好在Codecademy学了语法,就用它来练习吧。
好的,我肯定会使用 Python。后续就是如何请求网络,解析网页的html标签,提取下载链接,下载文件。虽然我不明白这些在Python中是如何实现的,但过程是确定的。按照流程到网站找一个现成的。原理这里不研究,实现功能即可。
下一步就是用各种搜索引擎搜索东西,谷歌可以,百度也可以(不同的引擎有不同的侧重点)。不要忘记目的是什么,搜索相关信息。
好的,搜索之后,一定要从web请求web下载请求,BeautifulSoup解析html,解压下载链接BeautifulSoup,下载文档(stackoverflow里找到了一段下载文件的代码)。
然后他们将它们组合在一起。组合后的代码如下:
1 #file-name: pdf_download.py
2 __author__ = 'rxread'
3 import requests
4 from bs4 import BeautifulSoup
5
6
7 def download_file(url, index):
8 local_filename = index+"-"+url.split('/')[-1]
9 # NOTE the stream=True parameter
10 r = requests.get(url, stream=True)
11 with open(local_filename, 'wb') as f:
12 for chunk in r.iter_content(chunk_size=1024):
13 if chunk: # filter out keep-alive new chunks
14 f.write(chunk)
15 f.flush()
16 return local_filename
17
18 #http://ww0.java4.datastructures.net/handouts/
19 root_link="http://ww0.java4.datastructure ... ot%3B
20 r=requests.get(root_link)
21 if r.status_code==200:
22 soup=BeautifulSoup(r.text)
23 # print soup.prettify()
24 index=1
25 for link in soup.find_all('a'):
26 new_link=root_link+link.get('href')
27 if new_link.endswith(".pdf"):
28 file_path=download_file(new_link,str(index))
29 print "downloading:"+new_link+" -> "+file_path
30 index+=1
31 print "all download finished"
32 else:
33 print "errors occur."
查看代码
运行以下代码将所有pdf文档下载到本地。
1 python pdf_download.py
查看代码
3.优化
30多行代码,全部搞定。它真的简洁明了。果然,用Python做一些脚本任务还是不错的。使用它下载了41个文件。
一开始下载的文件没有序列号,看的时候不知道顺序,所以在文件名前面加了一个序列号。
其他优化部分可以参考如下:
考虑到当前函数的一些异常错误没有处理,需要稍后处理。功能未完全封装,不支持下载的文件类型。这可以根据您将来的需要进行扩展。这样在下载的文件少的时候可能没问题,但是如果文件多,就需要使用多线程(合适的数量)或者线程池来下载,加快下载速度。有的写可能不符合python语法规范,当然写和不写的区别已经是0和1了。其他的细节,比如pdf可能是大写的PDF。4.附录“Java 中的数据结构和算法”(Michael T. Goodrich、Roberto Tamassia)下载或
下面两个网站是好书下载网站。如果可能,您应该购买正版书籍以支持作者。
一般我会先下载电子书,如果合适再买纸质版。Python 语法入门
就是这样。
本文来自RxRead的博客,欢迎转载,如转载请注明。
欢迎共同探讨。
转载于: 查看全部
抓取网页生成电子书(后续就是怎么去请求网络了,解析网页html标签(组图))
Github 博文地址,这里更新可能不是很及时。1.背景
最近发现算法和数据结构掉了不少(其实大学没好好学习,囧rz)。考虑到最近的项目结构越来越复杂,就用它来实践自己的想法,打算复习一下数据结构和算法。. 结合最近的英语学习,然后自己干脆用英语。然后选择一本参考书《Java 中的数据结构和算法》。
起初,它非常费力,所以请慢慢来。因为之前有翻书的习惯,所以去书所附的官网,发现所附的PDF文件其实还不错,图文并茂。是很好的理解资料,所以要果断下载。不过,尼玛,原来还有很多。一个一个的救他们,真的很可怕。想想如何下载它们。
2.实现
考虑到目前你所学和理解的所有语言,可以用来实现,并按以下顺序排列层次:
Java/Android 熟悉 C# 熟悉 Python 熟悉语法 Javascript 熟悉一些 C/C++ 熟悉语法
为了实现这一点,它当然是最简单、最快和最好的。考虑到大学一直在使用C#,为什么不使用它呢?但是发现OSX平台只能使用Mono,不得不重新熟悉一下。考虑到所需的时间,Java 实现并不快。我对Javascript不熟悉,好像可以用node.js来写(atom用的)。陌生。C/C++很多年没用了,要实现的代码很多,特别麻烦。考虑到前段时间正好在Codecademy学了语法,就用它来练习吧。
好的,我肯定会使用 Python。后续就是如何请求网络,解析网页的html标签,提取下载链接,下载文件。虽然我不明白这些在Python中是如何实现的,但过程是确定的。按照流程到网站找一个现成的。原理这里不研究,实现功能即可。
下一步就是用各种搜索引擎搜索东西,谷歌可以,百度也可以(不同的引擎有不同的侧重点)。不要忘记目的是什么,搜索相关信息。
好的,搜索之后,一定要从web请求web下载请求,BeautifulSoup解析html,解压下载链接BeautifulSoup,下载文档(stackoverflow里找到了一段下载文件的代码)。
然后他们将它们组合在一起。组合后的代码如下:


1 #file-name: pdf_download.py
2 __author__ = 'rxread'
3 import requests
4 from bs4 import BeautifulSoup
5
6
7 def download_file(url, index):
8 local_filename = index+"-"+url.split('/')[-1]
9 # NOTE the stream=True parameter
10 r = requests.get(url, stream=True)
11 with open(local_filename, 'wb') as f:
12 for chunk in r.iter_content(chunk_size=1024):
13 if chunk: # filter out keep-alive new chunks
14 f.write(chunk)
15 f.flush()
16 return local_filename
17
18 #http://ww0.java4.datastructures.net/handouts/
19 root_link="http://ww0.java4.datastructure ... ot%3B
20 r=requests.get(root_link)
21 if r.status_code==200:
22 soup=BeautifulSoup(r.text)
23 # print soup.prettify()
24 index=1
25 for link in soup.find_all('a'):
26 new_link=root_link+link.get('href')
27 if new_link.endswith(".pdf"):
28 file_path=download_file(new_link,str(index))
29 print "downloading:"+new_link+" -> "+file_path
30 index+=1
31 print "all download finished"
32 else:
33 print "errors occur."
查看代码
运行以下代码将所有pdf文档下载到本地。


1 python pdf_download.py
查看代码
3.优化
30多行代码,全部搞定。它真的简洁明了。果然,用Python做一些脚本任务还是不错的。使用它下载了41个文件。
一开始下载的文件没有序列号,看的时候不知道顺序,所以在文件名前面加了一个序列号。
其他优化部分可以参考如下:
考虑到当前函数的一些异常错误没有处理,需要稍后处理。功能未完全封装,不支持下载的文件类型。这可以根据您将来的需要进行扩展。这样在下载的文件少的时候可能没问题,但是如果文件多,就需要使用多线程(合适的数量)或者线程池来下载,加快下载速度。有的写可能不符合python语法规范,当然写和不写的区别已经是0和1了。其他的细节,比如pdf可能是大写的PDF。4.附录“Java 中的数据结构和算法”(Michael T. Goodrich、Roberto Tamassia)下载或
下面两个网站是好书下载网站。如果可能,您应该购买正版书籍以支持作者。
一般我会先下载电子书,如果合适再买纸质版。Python 语法入门
就是这样。
本文来自RxRead的博客,欢迎转载,如转载请注明。
欢迎共同探讨。
转载于:
抓取网页生成电子书(实体书太贵买?网上找书找到崩溃?知道了这些网站,3个步骤5分钟就可以解决)
网站优化 • 优采云 发表了文章 • 0 个评论 • 59 次浏览 • 2021-11-28 04:34
实体书太贵买不起?
网上找书找死机?
知道这些网站,3步5分钟就能解决你对电子书资源的需求,然后开启学习模式。
第 1 步:Kumo 搜索书籍
网站链接:/
一个知名的网站,资源丰富,下载源大部分是各种网盘和书籍网站。
打开网站,搜索你需要的书名,一般都会出现。
第二步:百度搜索“title+pdf”
如果你在云搜搜不到你需要的书,可以直接按照“书名+pdf”的形式开启全网搜索模式。
例如,如果我想找到“如何阅读一本书”这本书,只需在搜索栏中输入“如何阅读一本书PDF”即可。会弹出相关的网盘资源,点击下载。
第三步:主要资源网站疯狂搜索模式
如果经过以上2步,还是没有找到你需要的书,那么你就需要开始第三步了。
一般来说,完成以上两个步骤后,基本上能找到的所有电子书资源都可以找到。
如果还是找不到,可能是因为书太旧或太新,没有电子书资源,或者书太小众了。
不过,如果你还不放弃,还可以进行下面的步骤,疯狂搜索模式!
某某网站里总藏着一本书,也许是多搜几遍才出现的?
这是我用过的电子书搜索的网站:
PDF主页
网址链接:/jsjyhlw/
网站分享了很多分类的书籍,也有教材。电脑书籍应该是最多的。
2、陶连科,又名万千和记.com
网址链接:/s/
万千采集站集成了大学、考研等各类教材的网盘下载链接,种类非常齐全。
3、图书馆创世纪
4、BookZZ
网站链接:/
它被称为超过 200 万本书和超过 5000 万篇论文,可供免费下载。
5、ITbook
网址链接:itbook.download/
随着版权意识的兴起,越来越多的电子书被要求下架,许多搜索书籍网站被关闭。
更难找到您需要的电子书资源。
所以,努力赚钱买书吧!
免费不一定便宜,找书的机会成本也不低。
我开了这座山,种下了这棵树。如果你想从现在开始生活,请竖起大拇指!!! 查看全部
抓取网页生成电子书(实体书太贵买?网上找书找到崩溃?知道了这些网站,3个步骤5分钟就可以解决)
实体书太贵买不起?
网上找书找死机?
知道这些网站,3步5分钟就能解决你对电子书资源的需求,然后开启学习模式。
第 1 步:Kumo 搜索书籍
网站链接:/
一个知名的网站,资源丰富,下载源大部分是各种网盘和书籍网站。
打开网站,搜索你需要的书名,一般都会出现。

第二步:百度搜索“title+pdf”
如果你在云搜搜不到你需要的书,可以直接按照“书名+pdf”的形式开启全网搜索模式。
例如,如果我想找到“如何阅读一本书”这本书,只需在搜索栏中输入“如何阅读一本书PDF”即可。会弹出相关的网盘资源,点击下载。
第三步:主要资源网站疯狂搜索模式
如果经过以上2步,还是没有找到你需要的书,那么你就需要开始第三步了。
一般来说,完成以上两个步骤后,基本上能找到的所有电子书资源都可以找到。
如果还是找不到,可能是因为书太旧或太新,没有电子书资源,或者书太小众了。
不过,如果你还不放弃,还可以进行下面的步骤,疯狂搜索模式!
某某网站里总藏着一本书,也许是多搜几遍才出现的?
这是我用过的电子书搜索的网站:
PDF主页
网址链接:/jsjyhlw/
网站分享了很多分类的书籍,也有教材。电脑书籍应该是最多的。

2、陶连科,又名万千和记.com
网址链接:/s/
万千采集站集成了大学、考研等各类教材的网盘下载链接,种类非常齐全。

3、图书馆创世纪
4、BookZZ
网站链接:/
它被称为超过 200 万本书和超过 5000 万篇论文,可供免费下载。
5、ITbook
网址链接:itbook.download/
随着版权意识的兴起,越来越多的电子书被要求下架,许多搜索书籍网站被关闭。
更难找到您需要的电子书资源。
所以,努力赚钱买书吧!
免费不一定便宜,找书的机会成本也不低。
我开了这座山,种下了这棵树。如果你想从现在开始生活,请竖起大拇指!!!
抓取网页生成电子书(内手动下载多本提示会IP代理池的朋友可以帮忙验证下)
网站优化 • 优采云 发表了文章 • 0 个评论 • 159 次浏览 • 2021-11-27 13:14
突然发现这个网站,可以下载很多kindle电子书。观察了一下,有点像我前段时间写的爬行头条。
网站链接首页:,这次爬取排行榜链接:,打开观察发现排行榜的实际分页规则是,其中num代表页数。
具体代码如下:
#-*- coding: utf-8 -*-
import re
from requests.exceptions import RequestException
from bs4 import BeautifulSoup
import requests
from multiprocessing import Pool
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0',
'Content-Type': 'application/x-www-form-urlencoded',
'Connection': 'Keep-Alive',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
}
# 获取页面信息
def get_page_index(page_num):
url = 'https://bookset.me/page/'+ str(page_num) + '?rating=douban'
print(url)
try:
response = requests.get(url, headers = headers)
if response.status_code == 200:
return response.text
return None
except RequestException:
print('请求索引出错')
return None
# 获取当页所有书的URL
def parse_page_index(html):
pattern = re.compile(r'class="thumb-img focus"> ', re.S)
items = re.findall(pattern, html)
print(items)
print(type(items))
for item in items:
yield {
'href': item[0],
'title': item[1]
}
# 获取详情页信息
def get_page_detail(url):
try:
response = requests.get(url, headers = headers)
if response.status_code == 200:
return response.text
return None
except RequestException:
print('请求详情页出错', url)
return None
# 获取页面详情
def parse_page_detail(html, title):
soup = BeautifulSoup(html, 'lxml')
#匹配包含书链接的标签,而且取最后一个下载链接,以mobi格式下载为主
book_link_tag = soup.find_all("a", class_ = "mbm-book-download-links-link")[-1]
book_link_pattern = re.compile(r'href="(.*?)"', re.S)
# 书下载链接直接用正则表达式死活匹配匹配不出来,故作了两次转换
book_link = re.search(book_link_pattern, str(book_link_tag)).group(1)
editors_tag = soup.select(".mbm-book-details-editors-data")
for editor in editors_tag:
editors = editor.get_text().replace(' ','-')
# 书的名字格式
book_name = editors + '-' + title
# 获取文件格式
book_format = book_link[-4:]
down_load_book(book_link, book_name, book_format)
print(book_name)
print(book_link)
print(book_format)
# 下载书文件
def down_load_book(book_link, book_name, book_format):
print('正在下载:', book_link)
try:
response = requests.get(book_link, headers = headers)
if response.status_code == 200:
save_bookes(response.content, book_name, book_format)
return None
except RequestException:
print('请求文件出错', book_link)
return None
# 存储书文件
def save_bookes(content, book_name, book_format):
# 保存到当前目录下
file_path = '{0}.{1}'.format(book_name, book_format)
with open(file_path, 'wb') as f:
f.write(content)
f.close()
def main(page_num):
html = get_page_index(page_num)
for i in parse_page_index(html):
content = get_page_detail(i['href'])
parse_page_detail(content, i['title'])
# 为了调试方便,只抓取每一页第一本,加了break跳出当页所有书链接的循环
break
if __name__ == '__main__':
# 利用多线程,同时请求前5页下载
groups = [x for x in range(1, 6)]
pool = Pool()
pool.map(main, groups)
爬取结果:
操作结果
下载并保存结果
遇到的问题: 返回书页详情,包括书下载链接标签如下:
<a class="mbm-book-download-links-link" target="_blank" href="http://download.bookset.me/2006/5/%5B美%5D-卡勒德·胡赛尼-追风筝的人-9787208061644.mobi" data-original-title="" title="">
mobi下载
正则表达式用来匹配书的链接,但是找不到匹配。写的正则表达式匹配方式为:
<p>page_pattern = re.compile(r' 查看全部
抓取网页生成电子书(内手动下载多本提示会IP代理池的朋友可以帮忙验证下)
突然发现这个网站,可以下载很多kindle电子书。观察了一下,有点像我前段时间写的爬行头条。
网站链接首页:,这次爬取排行榜链接:,打开观察发现排行榜的实际分页规则是,其中num代表页数。
具体代码如下:
#-*- coding: utf-8 -*-
import re
from requests.exceptions import RequestException
from bs4 import BeautifulSoup
import requests
from multiprocessing import Pool
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0',
'Content-Type': 'application/x-www-form-urlencoded',
'Connection': 'Keep-Alive',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
}
# 获取页面信息
def get_page_index(page_num):
url = 'https://bookset.me/page/'+ str(page_num) + '?rating=douban'
print(url)
try:
response = requests.get(url, headers = headers)
if response.status_code == 200:
return response.text
return None
except RequestException:
print('请求索引出错')
return None
# 获取当页所有书的URL
def parse_page_index(html):
pattern = re.compile(r'class="thumb-img focus"> ', re.S)
items = re.findall(pattern, html)
print(items)
print(type(items))
for item in items:
yield {
'href': item[0],
'title': item[1]
}
# 获取详情页信息
def get_page_detail(url):
try:
response = requests.get(url, headers = headers)
if response.status_code == 200:
return response.text
return None
except RequestException:
print('请求详情页出错', url)
return None
# 获取页面详情
def parse_page_detail(html, title):
soup = BeautifulSoup(html, 'lxml')
#匹配包含书链接的标签,而且取最后一个下载链接,以mobi格式下载为主
book_link_tag = soup.find_all("a", class_ = "mbm-book-download-links-link")[-1]
book_link_pattern = re.compile(r'href="(.*?)"', re.S)
# 书下载链接直接用正则表达式死活匹配匹配不出来,故作了两次转换
book_link = re.search(book_link_pattern, str(book_link_tag)).group(1)
editors_tag = soup.select(".mbm-book-details-editors-data")
for editor in editors_tag:
editors = editor.get_text().replace(' ','-')
# 书的名字格式
book_name = editors + '-' + title
# 获取文件格式
book_format = book_link[-4:]
down_load_book(book_link, book_name, book_format)
print(book_name)
print(book_link)
print(book_format)
# 下载书文件
def down_load_book(book_link, book_name, book_format):
print('正在下载:', book_link)
try:
response = requests.get(book_link, headers = headers)
if response.status_code == 200:
save_bookes(response.content, book_name, book_format)
return None
except RequestException:
print('请求文件出错', book_link)
return None
# 存储书文件
def save_bookes(content, book_name, book_format):
# 保存到当前目录下
file_path = '{0}.{1}'.format(book_name, book_format)
with open(file_path, 'wb') as f:
f.write(content)
f.close()
def main(page_num):
html = get_page_index(page_num)
for i in parse_page_index(html):
content = get_page_detail(i['href'])
parse_page_detail(content, i['title'])
# 为了调试方便,只抓取每一页第一本,加了break跳出当页所有书链接的循环
break
if __name__ == '__main__':
# 利用多线程,同时请求前5页下载
groups = [x for x in range(1, 6)]
pool = Pool()
pool.map(main, groups)
爬取结果:
操作结果
下载并保存结果
遇到的问题: 返回书页详情,包括书下载链接标签如下:
<a class="mbm-book-download-links-link" target="_blank" href="http://download.bookset.me/2006/5/%5B美%5D-卡勒德·胡赛尼-追风筝的人-9787208061644.mobi" data-original-title="" title="">
mobi下载
正则表达式用来匹配书的链接,但是找不到匹配。写的正则表达式匹配方式为:
<p>page_pattern = re.compile(r'
抓取网页生成电子书(通过Python和爬虫,可以完成怎样的小工具?|知乎 )
网站优化 • 优采云 发表了文章 • 0 个评论 • 57 次浏览 • 2021-11-27 07:08
)
总有同学问,在学习了Python基础之后,不知道自己可以做些什么来提高。今天我就用一个小例子来告诉大家通过Python和爬虫可以完成什么样的小工具。
在知乎上,你一定关注了一些不错的专栏(比如Crossin的编程课堂)。但如果有一天,你最喜欢的受访者在网上被喷,你一怒之下删帖,停止更新,你就看不到这些好内容了。虽然这是小概率事件(以前没有发生过),但你可以准备下雨天。您可以将关注的专栏导出为电子书,这样您就可以离线阅读,而不必担心不小心删除帖子。
只需要工具和源码的可以拉到文章底部获取代码。
【最终效果】
运行程序,输入列的id,即网页地址上的路径:
之后程序会自动抓取列中的文章,并根据发布时间合并导出为pdf文件。
【实现思路】
本方案主要分为三部分:
抓取栏目文章地址列表抓取每篇文章的详细内容文章导出PDF1.抓取列表
在之前的文章爬虫必备工具中,掌握了它就可以解决一半的问题,介绍了如何分析网页上的请求。根据方法,我们可以使用开发者工具的Network功能,找出栏目页面的请求,获取明细列表:
https://www.zhihu.com/api/v4/c ... icles
观察返回的结果,我们发现通过next和is_end的值,可以得到下一个列表请求的地址(相当于页面向下滚动的触发效果),判断是否所有文章都有已获得。
data中的id、title、url就是我们需要的数据。因为url可以用id拼写出来,所以没有保存在我们的代码中。
使用 while 循环直到 文章 的所有 id 和 title 都被捕获并保存在文件中。
while True:
resp = requests.get(url, headers=headers)
j = resp.json()
data = j['data']
for article in data:
# 保存id和title(略)
if j['paging']['is_end']:
break
url = j['paging']['next']
# 按 id 排序(略)
# 导入文件(略)
2. 抢 文章
有了文章的所有id/url,后面的爬取就很简单了。文章 主要内容在 Post-RichText 标签中。
需要花点功夫的是一些文字处理,比如原页面的图片效果会添加noscript标签和data-actual、src="data:image等属性,我们要去掉才能正常显示。
url = 'https://zhuanlan.zhihu.com/p/' id
html = requests.get(url, headers=headers).text
soup = BeautifulSoup(html, 'lxml')
content = soup.find(class_='Post-RichText').prettify()
# 对content做处理(略)
with open(file_name, 'w') as f:
f.write(content)
至此,所有的内容都已经抓取完毕,可以在本地读取了。
3. 导出 PDF
为了方便阅读,我们使用 wkhtmltopdf pdfkit 将这些 HTML 文件打包成 PDF。
wkhtmltopdf是一个将HTML转为PDF的工具,需要单独安装。详情请参阅其官方网站。
pdfkit 是为此工具打包的 Python 库,可以从 pip 安装:
pip install pdfkit
使用起来非常简单:
# 获取htmls文件名列表(略)
pdfkit.from_file(sorted(htmls), 'zhihu.pdf')
这样就完成了整列的导出。
不仅是知乎的栏目,几乎大部分信息网站,通过1.抓取列表2.抓取详细内容采集数据两步。所以这段代码只要稍加修改就可以用于许多其他的网站。只是有些网站需要登录才能访问,所以需要在headers中设置cookie信息。另外,不同网站的请求接口、参数、限制都不一样,具体问题还是要具体问题具体分析。
这些爬虫的开发技巧可以在我们的爬虫实战课中学习。需要的请回复公众号中的实际爬虫
【源码获取】
获取知乎的专栏下载器源码,请在公众号(Crossin的编程课堂)回复关键字知乎
除了代码,还有本专栏打包好的PDF,欢迎阅读分享。
====
其他 文章 和回答:
欢迎搜索关注:Crossin的编程课堂
查看全部
抓取网页生成电子书(通过Python和爬虫,可以完成怎样的小工具?|知乎
)
总有同学问,在学习了Python基础之后,不知道自己可以做些什么来提高。今天我就用一个小例子来告诉大家通过Python和爬虫可以完成什么样的小工具。
在知乎上,你一定关注了一些不错的专栏(比如Crossin的编程课堂)。但如果有一天,你最喜欢的受访者在网上被喷,你一怒之下删帖,停止更新,你就看不到这些好内容了。虽然这是小概率事件(以前没有发生过),但你可以准备下雨天。您可以将关注的专栏导出为电子书,这样您就可以离线阅读,而不必担心不小心删除帖子。
只需要工具和源码的可以拉到文章底部获取代码。
【最终效果】
运行程序,输入列的id,即网页地址上的路径:


之后程序会自动抓取列中的文章,并根据发布时间合并导出为pdf文件。

【实现思路】
本方案主要分为三部分:
抓取栏目文章地址列表抓取每篇文章的详细内容文章导出PDF1.抓取列表
在之前的文章爬虫必备工具中,掌握了它就可以解决一半的问题,介绍了如何分析网页上的请求。根据方法,我们可以使用开发者工具的Network功能,找出栏目页面的请求,获取明细列表:
https://www.zhihu.com/api/v4/c ... icles

观察返回的结果,我们发现通过next和is_end的值,可以得到下一个列表请求的地址(相当于页面向下滚动的触发效果),判断是否所有文章都有已获得。
data中的id、title、url就是我们需要的数据。因为url可以用id拼写出来,所以没有保存在我们的代码中。

使用 while 循环直到 文章 的所有 id 和 title 都被捕获并保存在文件中。
while True:
resp = requests.get(url, headers=headers)
j = resp.json()
data = j['data']
for article in data:
# 保存id和title(略)
if j['paging']['is_end']:
break
url = j['paging']['next']
# 按 id 排序(略)
# 导入文件(略)

2. 抢 文章
有了文章的所有id/url,后面的爬取就很简单了。文章 主要内容在 Post-RichText 标签中。
需要花点功夫的是一些文字处理,比如原页面的图片效果会添加noscript标签和data-actual、src="data:image等属性,我们要去掉才能正常显示。
url = 'https://zhuanlan.zhihu.com/p/' id
html = requests.get(url, headers=headers).text
soup = BeautifulSoup(html, 'lxml')
content = soup.find(class_='Post-RichText').prettify()
# 对content做处理(略)
with open(file_name, 'w') as f:
f.write(content)

至此,所有的内容都已经抓取完毕,可以在本地读取了。
3. 导出 PDF
为了方便阅读,我们使用 wkhtmltopdf pdfkit 将这些 HTML 文件打包成 PDF。
wkhtmltopdf是一个将HTML转为PDF的工具,需要单独安装。详情请参阅其官方网站。
pdfkit 是为此工具打包的 Python 库,可以从 pip 安装:
pip install pdfkit
使用起来非常简单:
# 获取htmls文件名列表(略)
pdfkit.from_file(sorted(htmls), 'zhihu.pdf')

这样就完成了整列的导出。
不仅是知乎的栏目,几乎大部分信息网站,通过1.抓取列表2.抓取详细内容采集数据两步。所以这段代码只要稍加修改就可以用于许多其他的网站。只是有些网站需要登录才能访问,所以需要在headers中设置cookie信息。另外,不同网站的请求接口、参数、限制都不一样,具体问题还是要具体问题具体分析。
这些爬虫的开发技巧可以在我们的爬虫实战课中学习。需要的请回复公众号中的实际爬虫
【源码获取】
获取知乎的专栏下载器源码,请在公众号(Crossin的编程课堂)回复关键字知乎
除了代码,还有本专栏打包好的PDF,欢迎阅读分享。
====
其他 文章 和回答:
欢迎搜索关注:Crossin的编程课堂

抓取网页生成电子书(大庆油田批量推广应用两万套革新产品怎样将网页制作成电子书?)
网站优化 • 优采云 发表了文章 • 0 个评论 • 52 次浏览 • 2021-11-26 16:27
kdomestic_1:大庆油田","k":"大庆油田","u":""}],"title":"大庆油田批量推广应用2万套创新产品。如何将网页制作成电子书?--->> 使用eBook_Workshop-v1.5,超级简单,有需要我会带的,传给你。
如何制作电子书的网页模板?--->> 您可以使用frontpage 来制作它。只学一点点。
如何制作电子书页面?--->> 这里有一些建议: 学习网页的工具有很多,Microsoft FrontPage 2000 DreamWeaver Fireworks Flash HomeSite 4.5HotMetal Pro 4.0 等等。1:我们先来看看HTML。教程,只做一些了解,不需要死记硬背。(网页是做什么的?文字是做什么的...
如何将网站上的内容制作成电子书?--->> 哈哈告诉你最简单的方法,比如:我现在打开一个网页,看到里面的文字内容很精彩,我想把那个文字弄下来但是不知道怎么做,先最重要的是,写下那个文本 先复制它,然后点击*开始*按钮/然后点击*so程序*/点击*附件*/再次点击*记事本,然后粘贴你想要的文本/粘贴完成/是的,一个文件(F)/保存(S)就可以了,简单,格式会自动变成电子书文件。我一直这样使用它。如果您认为可以使用我的方法,请采纳。我觉得可以!
如何制作 HTML 电子书.!! -?--->> 复制以下代码之间的电子书内容,保存为html格式,就可以了
有没有办法把网页做成电子书?--->> 一般使用chm格式将网页htm文件制作成电子书。您可以在 Internet 上找到免费软件。现在很多电子书制作软件都可以将网页转成chm、exe格式的电子书。以书籍为例,使用免费软件“Catalog Maker 2007 beta3”提供的htm转chm功能
怎么把下载的网页做成电子书?-?--->> 网上找了集成windows帮助文件的软件,记得有个软件缩写为HHW可以做到这一点。它可以将网页制作成Windows 帮助文件,可以作为电子书查看。哦
紧急!!!如何将带有链接的网页制作成电子书???-? --->> 尝试电子书工作坊。
如何将网页制作成TXT格式并在Android手机上作为电子书观看?--->> 打开一个空白的TXT,CTRL+A,然后CTRL+C,然后在TXT上CTRL+V,就可以了
如何制作电子书网页-?--->> 最简单的是创建一个文本并将文本更改为html。需要使用Dreamwhere的困难 查看全部
抓取网页生成电子书(大庆油田批量推广应用两万套革新产品怎样将网页制作成电子书?)
kdomestic_1:大庆油田","k":"大庆油田","u":""}],"title":"大庆油田批量推广应用2万套创新产品。如何将网页制作成电子书?--->> 使用eBook_Workshop-v1.5,超级简单,有需要我会带的,传给你。
如何制作电子书的网页模板?--->> 您可以使用frontpage 来制作它。只学一点点。
如何制作电子书页面?--->> 这里有一些建议: 学习网页的工具有很多,Microsoft FrontPage 2000 DreamWeaver Fireworks Flash HomeSite 4.5HotMetal Pro 4.0 等等。1:我们先来看看HTML。教程,只做一些了解,不需要死记硬背。(网页是做什么的?文字是做什么的...
如何将网站上的内容制作成电子书?--->> 哈哈告诉你最简单的方法,比如:我现在打开一个网页,看到里面的文字内容很精彩,我想把那个文字弄下来但是不知道怎么做,先最重要的是,写下那个文本 先复制它,然后点击*开始*按钮/然后点击*so程序*/点击*附件*/再次点击*记事本,然后粘贴你想要的文本/粘贴完成/是的,一个文件(F)/保存(S)就可以了,简单,格式会自动变成电子书文件。我一直这样使用它。如果您认为可以使用我的方法,请采纳。我觉得可以!
如何制作 HTML 电子书.!! -?--->> 复制以下代码之间的电子书内容,保存为html格式,就可以了
有没有办法把网页做成电子书?--->> 一般使用chm格式将网页htm文件制作成电子书。您可以在 Internet 上找到免费软件。现在很多电子书制作软件都可以将网页转成chm、exe格式的电子书。以书籍为例,使用免费软件“Catalog Maker 2007 beta3”提供的htm转chm功能
怎么把下载的网页做成电子书?-?--->> 网上找了集成windows帮助文件的软件,记得有个软件缩写为HHW可以做到这一点。它可以将网页制作成Windows 帮助文件,可以作为电子书查看。哦
紧急!!!如何将带有链接的网页制作成电子书???-? --->> 尝试电子书工作坊。
如何将网页制作成TXT格式并在Android手机上作为电子书观看?--->> 打开一个空白的TXT,CTRL+A,然后CTRL+C,然后在TXT上CTRL+V,就可以了
如何制作电子书网页-?--->> 最简单的是创建一个文本并将文本更改为html。需要使用Dreamwhere的困难
抓取网页生成电子书(网络书籍抓取器是一款能帮助用户下载指定网页的某)
网站优化 • 优采云 发表了文章 • 0 个评论 • 123 次浏览 • 2021-11-26 16:25
在线图书抓取器是一种可以帮助用户在指定网页上下载某本书和某章的软件。在线图书抓取器可以快速下载小说。同时软件支持断点续传功能,非常方便,很有必要。可以下载使用。
特征
您可以提取指定小说目录页的章节信息并进行调整,然后按照章节顺序抓取小说内容,然后以最合适的方式进行合并。抓取过程可以随时中断,关闭程序后可以继续上一个任务。
软件特点
1、 章节调整:提取目录后,可以进行移动、删除、倒序等调整操作。调整会直接影响最终的书籍,也会以调整后的章节顺序输出。
2、自动重试:在爬取过程中,由于网络因素,可能会出现爬取失败的情况。程序可能会自动重试直到成功,也可以暂时中断爬取(中断后关闭程序不影响进度),等网络好了再试。
3、停止和恢复:抓取过程可以随时停止,退出程序后不影响进度(章节信息会保存在记录中,运行程序后可以恢复抓取下一次。注意:您需要先使用停止按钮中断然后退出程序,如果直接退出,将不会恢复)。
4、 一键抓取:又称“哑模式”,基本可以实现自动抓取合并功能,直接输出最终的文本文件。前面可能需要输入最基本的网址、保存位置等信息(会有明显的操作提示),调整章节后也可以使用一键抓取,抓取合并操作会自动完成.
5、适用网站:已收录10个适用网站(选择后可以快速打开网站找到您需要的书),并自动应用相应的代码,也可以测试其他小说网站,如果一起使用,可以手动添加到设置文件中,以备后用。
6、 制作电子书方便:可以在设置文件中添加每个章节名称的前缀和后缀,为后期制作电子书的目录带来极大的方便。
指示
1、首先进入你要下载的小说的网页。
2、输入书名,点击目录提取。
3、设置保存路径,点击开始爬取开始下载。 查看全部
抓取网页生成电子书(网络书籍抓取器是一款能帮助用户下载指定网页的某)
在线图书抓取器是一种可以帮助用户在指定网页上下载某本书和某章的软件。在线图书抓取器可以快速下载小说。同时软件支持断点续传功能,非常方便,很有必要。可以下载使用。

特征
您可以提取指定小说目录页的章节信息并进行调整,然后按照章节顺序抓取小说内容,然后以最合适的方式进行合并。抓取过程可以随时中断,关闭程序后可以继续上一个任务。
软件特点
1、 章节调整:提取目录后,可以进行移动、删除、倒序等调整操作。调整会直接影响最终的书籍,也会以调整后的章节顺序输出。
2、自动重试:在爬取过程中,由于网络因素,可能会出现爬取失败的情况。程序可能会自动重试直到成功,也可以暂时中断爬取(中断后关闭程序不影响进度),等网络好了再试。
3、停止和恢复:抓取过程可以随时停止,退出程序后不影响进度(章节信息会保存在记录中,运行程序后可以恢复抓取下一次。注意:您需要先使用停止按钮中断然后退出程序,如果直接退出,将不会恢复)。
4、 一键抓取:又称“哑模式”,基本可以实现自动抓取合并功能,直接输出最终的文本文件。前面可能需要输入最基本的网址、保存位置等信息(会有明显的操作提示),调整章节后也可以使用一键抓取,抓取合并操作会自动完成.
5、适用网站:已收录10个适用网站(选择后可以快速打开网站找到您需要的书),并自动应用相应的代码,也可以测试其他小说网站,如果一起使用,可以手动添加到设置文件中,以备后用。
6、 制作电子书方便:可以在设置文件中添加每个章节名称的前缀和后缀,为后期制作电子书的目录带来极大的方便。
指示
1、首先进入你要下载的小说的网页。
2、输入书名,点击目录提取。
3、设置保存路径,点击开始爬取开始下载。
抓取网页生成电子书(软件介绍网页文字抓取器是个小巧的网页抓取工具)
网站优化 • 优采云 发表了文章 • 0 个评论 • 60 次浏览 • 2021-12-08 10:22
这是一个网页文本电子书抓取器,该程序可以自动获取指定网页上的所有文本。比如起点小说网站,一些禁止复制的电子书。适用于所有 html 类型的文本。该程序的目的是使您可以轻松复制某些网页。欢迎促进交流。
软件介绍
网页文字抓取器是一款小型网页文字抓取工具,可以让您轻松抓取和复制禁止选择和复制的网页上的文字。对于页面内容被大面积广告覆盖的网页,抓取网页文本爬虫再阅读也是一个不错的解决方案。
软件特点
网页文字电子书抓取器是当今互联网上常用的软件之一。软件绿色、安全、无毒,让您放心使用!如果网络文本电子书抓取器是您需要的工具,那么快来吧!本站为您提供网页文本电子书抓取器的官方下载。
软件说明
Web Text采集器 是一个可以抓取网页文字的网页文字抓取工具。该软件可以自动获取指定网页上的所有文字。比如起点小说网站,一些禁止复制的电子书。适用于所有 html 类型的文本。
该程序的目的是使您可以轻松复制某些网页。欢迎促进交流。
本程序为无毒、无插件的绿色软件。
软件截图
相关软件
Bing(必应)背景图像采集器:这是一个 Bing(必应)背景图像采集器。虽然我不太用微软的搜索引擎bing,但是感觉它的背景图还是不错的,而且每天更换的时候,曾经看到一张不错的图就想下载,但是下载的时候下载不下来我右键单击它。没有右键另存为图片的选项,于是在网上找了一个可以下载bing背景图片的软件。
邮箱抓取器:这是一个邮箱抓取器。它是一种通过提取网页上显示的电子邮件地址来采集各种邮箱信息的软件。获取的邮箱可以作为您在线营销的重要客户数据来源。用户可以在网上下载群发邮件软件,通过群发邮件软件将您的相关网络营销信息发送到获取的邮箱中,达到网络营销的目的。采用多任务同时捕捉,捕捉速度快。可设置爬取深度,实现网页深度挖掘。 查看全部
抓取网页生成电子书(软件介绍网页文字抓取器是个小巧的网页抓取工具)
这是一个网页文本电子书抓取器,该程序可以自动获取指定网页上的所有文本。比如起点小说网站,一些禁止复制的电子书。适用于所有 html 类型的文本。该程序的目的是使您可以轻松复制某些网页。欢迎促进交流。
软件介绍
网页文字抓取器是一款小型网页文字抓取工具,可以让您轻松抓取和复制禁止选择和复制的网页上的文字。对于页面内容被大面积广告覆盖的网页,抓取网页文本爬虫再阅读也是一个不错的解决方案。
软件特点
网页文字电子书抓取器是当今互联网上常用的软件之一。软件绿色、安全、无毒,让您放心使用!如果网络文本电子书抓取器是您需要的工具,那么快来吧!本站为您提供网页文本电子书抓取器的官方下载。
软件说明
Web Text采集器 是一个可以抓取网页文字的网页文字抓取工具。该软件可以自动获取指定网页上的所有文字。比如起点小说网站,一些禁止复制的电子书。适用于所有 html 类型的文本。
该程序的目的是使您可以轻松复制某些网页。欢迎促进交流。
本程序为无毒、无插件的绿色软件。
软件截图

相关软件
Bing(必应)背景图像采集器:这是一个 Bing(必应)背景图像采集器。虽然我不太用微软的搜索引擎bing,但是感觉它的背景图还是不错的,而且每天更换的时候,曾经看到一张不错的图就想下载,但是下载的时候下载不下来我右键单击它。没有右键另存为图片的选项,于是在网上找了一个可以下载bing背景图片的软件。
邮箱抓取器:这是一个邮箱抓取器。它是一种通过提取网页上显示的电子邮件地址来采集各种邮箱信息的软件。获取的邮箱可以作为您在线营销的重要客户数据来源。用户可以在网上下载群发邮件软件,通过群发邮件软件将您的相关网络营销信息发送到获取的邮箱中,达到网络营销的目的。采用多任务同时捕捉,捕捉速度快。可设置爬取深度,实现网页深度挖掘。
抓取网页生成电子书(千人基因组数据库中爬取CHB人群的等位基因频率信息解析)
网站优化 • 优采云 发表了文章 • 0 个评论 • 82 次浏览 • 2021-12-08 09:19
该计划的目的:
根据特定的SNP列表,从千基因组数据库中爬取CHB群体的等位基因频率信息,例如。
因为网页是动态数据,内嵌了JavaScript代码,所以使用selenium来爬取信息。
Beautiful Soup 是一个 Python 库,其主要功能是从网页中抓取数据。Beautiful Soup 提供了一些简单的、python 风格的函数来处理导航、搜索、修改分析树和其他功能。它是一个工具箱,为用户提供需要通过解析文档捕获的数据,避免复杂的正则表达式。
准备:源代码
# -*- coding:utf-8 -*-
from bs4 import BeautifulSoup
import time
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
def get_allele_feq(browser, snp):
browser.get(
'https://www.ncbi.nlm.nih.gov/v ... 39%3B %snp) #Load page
# browser.implicitly_wait(60) #智能等待xx秒
time.sleep(30) #加载时间较长,等待加载完毕
# browser.find_element_by_css_selector("div[title=\"Han Chinese in Bejing, China\"]") #use selenium function to find elements
# 把selenium的webdriver调用page_source函数在传入BeautifulSoup中,就可以用BeautifulSoup解析网页了
bs = BeautifulSoup(browser.page_source, "lxml")
# bs.find_all("div", title="Han Chinese in Bejing, China")
try:
race = bs.find(string="CHB")
race_data = race.find_parent("div").find_parent(
"div").find_next_sibling("div")
# print race_data
race_feq = race_data.find("span", class_="gt-selected").find_all("li") # class_ 防止Python中类关键字重复,产生语法错误
base1_feq = race_feq[0].text #获取标签的内容
base2_feq = race_feq[1].text
return snp, base1_feq, base2_feq # T=0.1408 C=0.8592
except NoSuchElementException:
return "%s:can't find element" %snp
def main():
browser = webdriver.Chrome() # Get local session of chrome
fh = open("./4diseases_snps_1kCHB_allele_feq.list2", 'w')
snps = open("./4diseases_snps.list.uniq2",'r')
for line in snps:
snp = line.strip()
response = get_allele_feq(browser, snp)
time.sleep(1)
fh.write("\t".join(response)) #unicode 编码的对象写到文件中后相当于print效果
fh.write("\n")
print "\t".join(response)
time.sleep(1) # sleep a few seconds
fh.close()
browser.quit() # 退出并关闭窗口的每一个相关的驱动程序
if __name__ == '__main__':
main()
参考资料:
1]:#Beautiful Soup 4.4.0 文档
2]:
3]:
4]:
5]:
6]:
7]: 查看全部
抓取网页生成电子书(千人基因组数据库中爬取CHB人群的等位基因频率信息解析)
该计划的目的:
根据特定的SNP列表,从千基因组数据库中爬取CHB群体的等位基因频率信息,例如。
因为网页是动态数据,内嵌了JavaScript代码,所以使用selenium来爬取信息。
Beautiful Soup 是一个 Python 库,其主要功能是从网页中抓取数据。Beautiful Soup 提供了一些简单的、python 风格的函数来处理导航、搜索、修改分析树和其他功能。它是一个工具箱,为用户提供需要通过解析文档捕获的数据,避免复杂的正则表达式。
准备:源代码
# -*- coding:utf-8 -*-
from bs4 import BeautifulSoup
import time
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
def get_allele_feq(browser, snp):
browser.get(
'https://www.ncbi.nlm.nih.gov/v ... 39%3B %snp) #Load page
# browser.implicitly_wait(60) #智能等待xx秒
time.sleep(30) #加载时间较长,等待加载完毕
# browser.find_element_by_css_selector("div[title=\"Han Chinese in Bejing, China\"]") #use selenium function to find elements
# 把selenium的webdriver调用page_source函数在传入BeautifulSoup中,就可以用BeautifulSoup解析网页了
bs = BeautifulSoup(browser.page_source, "lxml")
# bs.find_all("div", title="Han Chinese in Bejing, China")
try:
race = bs.find(string="CHB")
race_data = race.find_parent("div").find_parent(
"div").find_next_sibling("div")
# print race_data
race_feq = race_data.find("span", class_="gt-selected").find_all("li") # class_ 防止Python中类关键字重复,产生语法错误
base1_feq = race_feq[0].text #获取标签的内容
base2_feq = race_feq[1].text
return snp, base1_feq, base2_feq # T=0.1408 C=0.8592
except NoSuchElementException:
return "%s:can't find element" %snp
def main():
browser = webdriver.Chrome() # Get local session of chrome
fh = open("./4diseases_snps_1kCHB_allele_feq.list2", 'w')
snps = open("./4diseases_snps.list.uniq2",'r')
for line in snps:
snp = line.strip()
response = get_allele_feq(browser, snp)
time.sleep(1)
fh.write("\t".join(response)) #unicode 编码的对象写到文件中后相当于print效果
fh.write("\n")
print "\t".join(response)
time.sleep(1) # sleep a few seconds
fh.close()
browser.quit() # 退出并关闭窗口的每一个相关的驱动程序
if __name__ == '__main__':
main()
参考资料:
1]:#Beautiful Soup 4.4.0 文档
2]:
3]:
4]:
5]:
6]:
7]:
抓取网页生成电子书(暑期实习求职之html算法还是比较满意的?)
网站优化 • 优采云 发表了文章 • 0 个评论 • 71 次浏览 • 2021-12-08 09:18
首先,我道歉。这几天忙着联系暑期实习单位,没能及时回复和更新。我还没有做到。如果可以,请帮我一个忙,看看我的实习申请。
对目前的html解析算法还是比较满意的。在这个阶段,经过一些测试,我添加了对 BR、IUPUT、IMG、META、SCRIPT、注释等特殊 html 语法的支持。对于完全符合html语法规范的页面,效果令人满意。缺点是缺乏容错能力,不符合html语法的页面解析可能会出错或异常。如果要把它做成一个完整的html解析器,我认为必须实现一个优先级算法来提供容错能力。不过我觉得这个问题比较复杂,暂时不能很好的解决。现在,我决定采取另一种妥协,即只解析自定义控件而不是普通的 html 控件。使用当前的算法,可以轻松实现此功能。
个人觉得还是建议使用用户控件,然后在控件输出的时候拦截render。但是我个人觉得这种方法不够灵活,无法实际使用负载。我个人更喜欢实现一个轻量级且易于控制的静态页面生成类库,可以轻松自由地定制和扩展。对于大多数网站来说,首页和分类页面请求频繁,内容需要经常更新。Asp.Net的缓存机制是一个不错的选择;但是对于网站的内容页,比如新闻或者软件下载的内容页,请求频率比较低,不适合动态生成或者使用缓存。在这种情况下,最好的选择是生成一个静态页面并将其保存在硬盘上。此外,
如本文开头所述,因联系暑期实习单位,近日暂停开发。这里继续补上上一篇文章中没有完成的内容。
整个解析模块主要由三个类组成:StaticControlFactory、ParseStatusManager和StaticBaseControl。其中,StaticControlFactory主要负责模板的字符分析处理和控件处理;ParseStatusManager 主要负责处理控制分析状态并向StaticControlFactory发出处理命令;StaticBaseControl 是保存相关结果的实体类。
我觉得代码结构还是很清晰的,注释也很多,我就不详细解释了,主要解释几个关键点。StaticControlFactory 使用堆栈来保存控件的层次结构。每当创建新控件时,都会将新控件添加到当前控件的子控件集合中,然后将当前控件压入堆栈,新控件成为当前控件。当新控件解析后,操作反向。ParseStatusManager 的状态管理也采用了类似的方式,但没有前者的层次结构。StaticControlFactory 每次读取边界字符时,都会调用 ParseStatusManager 对象的 ChangeStatus 方法来实现相应的状态转换。ParseStatusManager 对StaticControlFactory 的操作是通过proxy 结合Command 方式实现的。这种方式最大的好处是ParseStatusManager不需要维护StaticControlFactory的大量方法签名,只需要传入合适的命令即可。如果在处理状态转换时需要添加新的处理,只需让StaticControlFactory添加对新命令的支持即可。
为了增加对不符合 body 形式的标签的支持,包括 img 和 br 等可以没有结束或使用短结束标签的标签,StaticControlFactory 中添加了几个方法。ReadNextWord 用于获取控件开始标记后的下一个。词判断当前标签是否为定义的特殊标签,ProcessForScriptBlock用于专门处理Script模块。如果想改变类库引用我们定义的特殊标签,可以在每次读取控件开始标签时使用ReadNextWord读取控件类型,判断正确后开始控件的解析操作;标记控制结束时也进行类似的操作。
目前的计划实际上是我的第二个计划。第一种方案使用递归,思路不是很清楚,调试起来比较麻烦。目前的方案要清晰得多。对于数据绑定,在我的第一个方案中已经部分实现了,主要是使用遍历和反射。遗憾的是,它只支持对对象数组等数据源的支持。主要原因是我现在的项目使用的是petshop3的结构,以数据实体的形式传递数据,没有实现repeat等控件的嵌套形式。捆绑。不过,预计这两个问题都比较简单,可以比较快的实现。我会尽快实现一个可用的版本。 查看全部
抓取网页生成电子书(暑期实习求职之html算法还是比较满意的?)
首先,我道歉。这几天忙着联系暑期实习单位,没能及时回复和更新。我还没有做到。如果可以,请帮我一个忙,看看我的实习申请。
对目前的html解析算法还是比较满意的。在这个阶段,经过一些测试,我添加了对 BR、IUPUT、IMG、META、SCRIPT、注释等特殊 html 语法的支持。对于完全符合html语法规范的页面,效果令人满意。缺点是缺乏容错能力,不符合html语法的页面解析可能会出错或异常。如果要把它做成一个完整的html解析器,我认为必须实现一个优先级算法来提供容错能力。不过我觉得这个问题比较复杂,暂时不能很好的解决。现在,我决定采取另一种妥协,即只解析自定义控件而不是普通的 html 控件。使用当前的算法,可以轻松实现此功能。
个人觉得还是建议使用用户控件,然后在控件输出的时候拦截render。但是我个人觉得这种方法不够灵活,无法实际使用负载。我个人更喜欢实现一个轻量级且易于控制的静态页面生成类库,可以轻松自由地定制和扩展。对于大多数网站来说,首页和分类页面请求频繁,内容需要经常更新。Asp.Net的缓存机制是一个不错的选择;但是对于网站的内容页,比如新闻或者软件下载的内容页,请求频率比较低,不适合动态生成或者使用缓存。在这种情况下,最好的选择是生成一个静态页面并将其保存在硬盘上。此外,
如本文开头所述,因联系暑期实习单位,近日暂停开发。这里继续补上上一篇文章中没有完成的内容。
整个解析模块主要由三个类组成:StaticControlFactory、ParseStatusManager和StaticBaseControl。其中,StaticControlFactory主要负责模板的字符分析处理和控件处理;ParseStatusManager 主要负责处理控制分析状态并向StaticControlFactory发出处理命令;StaticBaseControl 是保存相关结果的实体类。
我觉得代码结构还是很清晰的,注释也很多,我就不详细解释了,主要解释几个关键点。StaticControlFactory 使用堆栈来保存控件的层次结构。每当创建新控件时,都会将新控件添加到当前控件的子控件集合中,然后将当前控件压入堆栈,新控件成为当前控件。当新控件解析后,操作反向。ParseStatusManager 的状态管理也采用了类似的方式,但没有前者的层次结构。StaticControlFactory 每次读取边界字符时,都会调用 ParseStatusManager 对象的 ChangeStatus 方法来实现相应的状态转换。ParseStatusManager 对StaticControlFactory 的操作是通过proxy 结合Command 方式实现的。这种方式最大的好处是ParseStatusManager不需要维护StaticControlFactory的大量方法签名,只需要传入合适的命令即可。如果在处理状态转换时需要添加新的处理,只需让StaticControlFactory添加对新命令的支持即可。
为了增加对不符合 body 形式的标签的支持,包括 img 和 br 等可以没有结束或使用短结束标签的标签,StaticControlFactory 中添加了几个方法。ReadNextWord 用于获取控件开始标记后的下一个。词判断当前标签是否为定义的特殊标签,ProcessForScriptBlock用于专门处理Script模块。如果想改变类库引用我们定义的特殊标签,可以在每次读取控件开始标签时使用ReadNextWord读取控件类型,判断正确后开始控件的解析操作;标记控制结束时也进行类似的操作。
目前的计划实际上是我的第二个计划。第一种方案使用递归,思路不是很清楚,调试起来比较麻烦。目前的方案要清晰得多。对于数据绑定,在我的第一个方案中已经部分实现了,主要是使用遍历和反射。遗憾的是,它只支持对对象数组等数据源的支持。主要原因是我现在的项目使用的是petshop3的结构,以数据实体的形式传递数据,没有实现repeat等控件的嵌套形式。捆绑。不过,预计这两个问题都比较简单,可以比较快的实现。我会尽快实现一个可用的版本。
抓取网页生成电子书(如何将网页文章批量抓取、生成电子书、直接推送到Kindle)
网站优化 • 优采云 发表了文章 • 0 个评论 • 71 次浏览 • 2021-12-06 18:33
很长一段时间,我一直在研究如何将我关注的网页或文章安装到Kindle中进行认真阅读,但很长一段时间都没有真正的进展。手动格式化书籍制作电子书的方法虽然简单易行,但对于短小且更新频繁的网页文章来说效率低下。如果有工具可以批量抓取网页文章,生成电子书,直接推送到Kindle上就好了。Doocer 就是这样一个实用的工具。
Doocer 是由@lepture 开发的在线服务。它允许用户提交 URL、RSS 提要地址和 Pocket 帐户中的 文章 供以后阅读,然后将它们一一或批量制作成 ePub、MOBI 电子书。您可以直接在 Doocer 中阅读所有 文章,也可以将它们推送到 Kindle 和 Apple Books 阅读。
阅读体验真的很好
由 Doocer 生成的电子书格式良好且引人注目。应该收录的内容很多,不应该收录的内容并不多。本书不仅封面有图文,还有文章目录、网站出处、文章原作者等信息。Doocer生成的MOBI电子书支持KF8标准,因此支持Kindle原生替换自定义字体。
由于网站文章通常都有标准和通用的排版规范,所以Doocer生成的电子书文章中的大小、标题和列表图例与原创网页高度一致文章。原文章中的超链接也全部保留,评论信息、广告等内容全部丢弃。全书的阅读体验非常友好。(当然,如果原网页文章的布局乱了,得到的电子书也可能完全不一样。)
将网页文章制作成电子书
Doocer完成注册登录后,就可以开始将文章网页制作成电子书了。首先,我们点击“NEW BOOK”按钮新建电子书,输入电子书书名。然后选择右上角的“添加”,添加文章 URL 或RSS feed 地址。
以小众网页的文章为例,我们选择“FEED”,在输入框中粘贴RSS地址,然后点击“PARSE”,就会出现小众文章的近期列表显示给我们添加到。我们可以根据需要选择,也可以点击“全选”来全选文章。最后,下拉到页面底部,选择“SAVE”,这些文章就会被添加到书中。
实际上,Doocer 网页与 RSS 工具非常相似。实现了从网站批量抓取文章并集中展示的功能。
要将这些文章转换成电子书并推送到Kindle,我们需要进行一些简单的操作。
首先,根据Doocer个人设置页面的提示,我们打开Amazon Kindle的个人文档设置,在个人文档接收地址中添加Doocer电子书的发送地址。完成后,我们再在输入框中填写Kindle的个人文档接收地址,点击保存。
最后,我们在Doocer中打开《少数派》这本书,在页面上找到“发布”,选择发送到Kindle。大约10-30分钟,Doocer就会完成图书制作并将图书推送到Kindle上。
还有一些问题需要注意
Doocer目前处于Beta测试阶段,还存在一些bug,尤其是中文网站经常出现问题。好在Doocer官网有开发者对话频道,你可以直接联系他帮忙解决。
实现所有操作的自动化流程是我认为Doocer最需要努力的方向。Doocer可以像RSS工具一样抓取网页中更新的文章,但是抓取新的文章并生成电子书和推送仍然需要手动完成。如果整个过程都可以自动化,RSS-MOBI-Kindle就可以一口气搞定,相信实用性会更高。
目前,Doocer 的所有功能都可以免费使用。 查看全部
抓取网页生成电子书(如何将网页文章批量抓取、生成电子书、直接推送到Kindle)
很长一段时间,我一直在研究如何将我关注的网页或文章安装到Kindle中进行认真阅读,但很长一段时间都没有真正的进展。手动格式化书籍制作电子书的方法虽然简单易行,但对于短小且更新频繁的网页文章来说效率低下。如果有工具可以批量抓取网页文章,生成电子书,直接推送到Kindle上就好了。Doocer 就是这样一个实用的工具。
Doocer 是由@lepture 开发的在线服务。它允许用户提交 URL、RSS 提要地址和 Pocket 帐户中的 文章 供以后阅读,然后将它们一一或批量制作成 ePub、MOBI 电子书。您可以直接在 Doocer 中阅读所有 文章,也可以将它们推送到 Kindle 和 Apple Books 阅读。
阅读体验真的很好
由 Doocer 生成的电子书格式良好且引人注目。应该收录的内容很多,不应该收录的内容并不多。本书不仅封面有图文,还有文章目录、网站出处、文章原作者等信息。Doocer生成的MOBI电子书支持KF8标准,因此支持Kindle原生替换自定义字体。
由于网站文章通常都有标准和通用的排版规范,所以Doocer生成的电子书文章中的大小、标题和列表图例与原创网页高度一致文章。原文章中的超链接也全部保留,评论信息、广告等内容全部丢弃。全书的阅读体验非常友好。(当然,如果原网页文章的布局乱了,得到的电子书也可能完全不一样。)
将网页文章制作成电子书
Doocer完成注册登录后,就可以开始将文章网页制作成电子书了。首先,我们点击“NEW BOOK”按钮新建电子书,输入电子书书名。然后选择右上角的“添加”,添加文章 URL 或RSS feed 地址。
以小众网页的文章为例,我们选择“FEED”,在输入框中粘贴RSS地址,然后点击“PARSE”,就会出现小众文章的近期列表显示给我们添加到。我们可以根据需要选择,也可以点击“全选”来全选文章。最后,下拉到页面底部,选择“SAVE”,这些文章就会被添加到书中。
实际上,Doocer 网页与 RSS 工具非常相似。实现了从网站批量抓取文章并集中展示的功能。
要将这些文章转换成电子书并推送到Kindle,我们需要进行一些简单的操作。
首先,根据Doocer个人设置页面的提示,我们打开Amazon Kindle的个人文档设置,在个人文档接收地址中添加Doocer电子书的发送地址。完成后,我们再在输入框中填写Kindle的个人文档接收地址,点击保存。
最后,我们在Doocer中打开《少数派》这本书,在页面上找到“发布”,选择发送到Kindle。大约10-30分钟,Doocer就会完成图书制作并将图书推送到Kindle上。
还有一些问题需要注意
Doocer目前处于Beta测试阶段,还存在一些bug,尤其是中文网站经常出现问题。好在Doocer官网有开发者对话频道,你可以直接联系他帮忙解决。
实现所有操作的自动化流程是我认为Doocer最需要努力的方向。Doocer可以像RSS工具一样抓取网页中更新的文章,但是抓取新的文章并生成电子书和推送仍然需要手动完成。如果整个过程都可以自动化,RSS-MOBI-Kindle就可以一口气搞定,相信实用性会更高。
目前,Doocer 的所有功能都可以免费使用。
抓取网页生成电子书(我的小书屋这个爬虫能爬取网站的电子书下载路径)
网站优化 • 优采云 发表了文章 • 0 个评论 • 105 次浏览 • 2021-12-06 18:30
一、我的小书店
这个爬虫可以爬取网站的电子书下载路径。 (只是一个小练习,侵删)
Crawling网站 使用 BeautifulSoup 进行解析,
二、爬取源代码
1 #!/usr/bin/python
2 # -*- coding: UTF-8 -*-
3 import re
4 import urllib.request
5 from bs4 import BeautifulSoup
6 #编程书籍
7 url = "http://mebook.cc/category/gjs/bckf/"
8 #获得各个书本的链接
9 def getbook(url):
10 html_doc = urllib.request.urlopen(url).read()
11 soup = BeautifulSoup(html_doc,"html.parser",from_encoding="GB18030")
12 links = soup.select('#primary .img a')
13 for link in links:
14 str = link['href'] + link['title'] + '\n'
15 print (str)
16 bookfile(str)
17 #将各个书本的链接追加保存到txt文件(待处理)
18 def bookfile(str):
19 fo = open("file.txt","a")
20 fo.write(str)
21 fo.close()
22 #获取所有书本链接
23 def test():
24 getbook(url)
25 for x in range(2,18):
26 url = "http://mebook.cc/category/gjs/bckf/page/" + str(x)
27 try:
28 getbook(url)
29 bookfile("第"+str(x)+"页\n")
30 except UnicodeEncodeError:
31 pass
32 continue
33 # 获取各个书本的下载链接
34 def getDownload(id):
35 url = "http://mebook.cc/download.php?id="+id
36 html_doc = urllib.request.urlopen(url).read()
37 soup = BeautifulSoup(html_doc,"html.parser",from_encoding="GB18030")
38 links = soup.select('.list a')
39 for link in links:
40 print (link)
41 pwds = soup.select('.desc p')
42 for pwd in pwds:
43 print (pwd.encode(encoding='utf-8' ,errors = 'strict'))
44
45 #test
46 getDownload(str(25723))
查看代码
三、爬取结果
四、问题发现
4.1、Python3爬取信息时网站gbk编码问题
Python 默认字符是 ASCII,既不是 decode('GBK') 也不是 decode('GB18030')
考虑字符串处理,参考: 查看全部
抓取网页生成电子书(我的小书屋这个爬虫能爬取网站的电子书下载路径)
一、我的小书店
这个爬虫可以爬取网站的电子书下载路径。 (只是一个小练习,侵删)
Crawling网站 使用 BeautifulSoup 进行解析,
二、爬取源代码


1 #!/usr/bin/python
2 # -*- coding: UTF-8 -*-
3 import re
4 import urllib.request
5 from bs4 import BeautifulSoup
6 #编程书籍
7 url = "http://mebook.cc/category/gjs/bckf/"
8 #获得各个书本的链接
9 def getbook(url):
10 html_doc = urllib.request.urlopen(url).read()
11 soup = BeautifulSoup(html_doc,"html.parser",from_encoding="GB18030")
12 links = soup.select('#primary .img a')
13 for link in links:
14 str = link['href'] + link['title'] + '\n'
15 print (str)
16 bookfile(str)
17 #将各个书本的链接追加保存到txt文件(待处理)
18 def bookfile(str):
19 fo = open("file.txt","a")
20 fo.write(str)
21 fo.close()
22 #获取所有书本链接
23 def test():
24 getbook(url)
25 for x in range(2,18):
26 url = "http://mebook.cc/category/gjs/bckf/page/" + str(x)
27 try:
28 getbook(url)
29 bookfile("第"+str(x)+"页\n")
30 except UnicodeEncodeError:
31 pass
32 continue
33 # 获取各个书本的下载链接
34 def getDownload(id):
35 url = "http://mebook.cc/download.php?id="+id
36 html_doc = urllib.request.urlopen(url).read()
37 soup = BeautifulSoup(html_doc,"html.parser",from_encoding="GB18030")
38 links = soup.select('.list a')
39 for link in links:
40 print (link)
41 pwds = soup.select('.desc p')
42 for pwd in pwds:
43 print (pwd.encode(encoding='utf-8' ,errors = 'strict'))
44
45 #test
46 getDownload(str(25723))
查看代码
三、爬取结果


四、问题发现
4.1、Python3爬取信息时网站gbk编码问题
Python 默认字符是 ASCII,既不是 decode('GBK') 也不是 decode('GB18030')
考虑字符串处理,参考:
抓取网页生成电子书(Windows,OSX及Linux的官网转电子书是什么? )
网站优化 • 优采云 发表了文章 • 0 个评论 • 54 次浏览 • 2021-12-06 18:27
)
口径
Calibre 可以将指定的多级网页转换为电子书,如pdf、mobi等格式
Calibre 是一款免费的电子书管理工具,兼容 Windows、OS X 和 Linux。令人欣慰的是,除了GUI,calibre 还提供了很多命令行工具。ebook-convert 命令可以基于用户编写的食谱。该文件(实际上是python代码)抓取指定页面的内容,生成mobi等格式的电子书。爬取行为可以通过编写recipe来定制,以适应不同的网页结构。
官方网站:
开源代码:
使用教程
抓取网页内容以生成 Kindle 电子书
在 Mac 上,ebook-convert 脚本命令的位置是 /Applications/calibre.app/Contents/MacOS/ebook-convert。
注意:calibre.app 需要自行下载
其他
现在我只在这里拿了几本书。想抢电子书,可以互相学习,求教;
下面这个链接是另外一个人采集了很多将网站转成电子书的脚本:
Calibre 所需的脚本是一个带有 __recipe__ 扩展名的文件。这个文件其实是一个__python__脚本,所以我一般都是先编辑成Python脚本,然后改扩展名
注意
我的git库的__.gitignore__只指定了几种可以采集到仓库的文件,如下:
*
!*.py
!*.recipe
!.gitignore
!*.md 查看全部
抓取网页生成电子书(Windows,OSX及Linux的官网转电子书是什么?
)
口径
Calibre 可以将指定的多级网页转换为电子书,如pdf、mobi等格式
Calibre 是一款免费的电子书管理工具,兼容 Windows、OS X 和 Linux。令人欣慰的是,除了GUI,calibre 还提供了很多命令行工具。ebook-convert 命令可以基于用户编写的食谱。该文件(实际上是python代码)抓取指定页面的内容,生成mobi等格式的电子书。爬取行为可以通过编写recipe来定制,以适应不同的网页结构。
官方网站:
开源代码:
使用教程
抓取网页内容以生成 Kindle 电子书
在 Mac 上,ebook-convert 脚本命令的位置是 /Applications/calibre.app/Contents/MacOS/ebook-convert。
注意:calibre.app 需要自行下载
其他
现在我只在这里拿了几本书。想抢电子书,可以互相学习,求教;
下面这个链接是另外一个人采集了很多将网站转成电子书的脚本:
Calibre 所需的脚本是一个带有 __recipe__ 扩展名的文件。这个文件其实是一个__python__脚本,所以我一般都是先编辑成Python脚本,然后改扩展名
注意
我的git库的__.gitignore__只指定了几种可以采集到仓库的文件,如下:
*
!*.py
!*.recipe
!.gitignore
!*.md
抓取网页生成电子书(EpubBuilder格式电子书制作神器支持多国界面语言支持编辑支持)
网站优化 • 优采云 发表了文章 • 0 个评论 • 312 次浏览 • 2021-12-05 21:08
EpubBuilder是一款专业的epub格式电子书制作软件,可以帮助用户快速制作pub格式的电子书。软件支持多种主流格式的文本文档的生成,支持导入TXT、epub、snd等原件。文件,操作简单,有需要的朋友赶紧下载体验吧!
EpubBuilder 软件功能
1、txt文本格式:ansi、utf8、unicode格式自动识别
2、网页内容:集成网页浏览器,可以直接从浏览的网页中抓取文字内容,放入新的章节
3、Word格式智能拆分章节,自定义拆分规则,可根据设置规则拆分大源文件
EpubBuilder 软件功能
支持多种格式导入,生成epub格式电子书等常用格式文本文档。
支持Stanza、Sony 505、Adobe DE等阅读器,非常适合在手机和平板上制作epub电子书。
将用户数据放在AppData目录下,除了第一次运行,不需要以管理员身份运行!
EpubBuilder 教程
1、打开软件,显示程序正在启动,出现如下界面
2、进入软件登录界面,如下图
3、您需要输入账号密码,如果没有请点击快速注册
更新日志
v4.8.11
书源开发的ePub电子书制作神器
支持多国界面语言
支持unicode编辑
支持导入Txt、epub、Html、chm、snb等源文件
支持图文混合、音频、视频、多级目录等
支持生成epub和mobi格式的电子书
支持网页内容抓取 查看全部
抓取网页生成电子书(EpubBuilder格式电子书制作神器支持多国界面语言支持编辑支持)
EpubBuilder是一款专业的epub格式电子书制作软件,可以帮助用户快速制作pub格式的电子书。软件支持多种主流格式的文本文档的生成,支持导入TXT、epub、snd等原件。文件,操作简单,有需要的朋友赶紧下载体验吧!

EpubBuilder 软件功能
1、txt文本格式:ansi、utf8、unicode格式自动识别
2、网页内容:集成网页浏览器,可以直接从浏览的网页中抓取文字内容,放入新的章节
3、Word格式智能拆分章节,自定义拆分规则,可根据设置规则拆分大源文件
EpubBuilder 软件功能
支持多种格式导入,生成epub格式电子书等常用格式文本文档。
支持Stanza、Sony 505、Adobe DE等阅读器,非常适合在手机和平板上制作epub电子书。
将用户数据放在AppData目录下,除了第一次运行,不需要以管理员身份运行!
EpubBuilder 教程
1、打开软件,显示程序正在启动,出现如下界面

2、进入软件登录界面,如下图

3、您需要输入账号密码,如果没有请点击快速注册
更新日志
v4.8.11
书源开发的ePub电子书制作神器
支持多国界面语言
支持unicode编辑
支持导入Txt、epub、Html、chm、snb等源文件
支持图文混合、音频、视频、多级目录等
支持生成epub和mobi格式的电子书
支持网页内容抓取
抓取网页生成电子书(网站没有输出Feed(Feed)RSS阅读器)
网站优化 • 优采云 发表了文章 • 0 个评论 • 54 次浏览 • 2021-12-05 07:05
我一直在关注某个网站,但是发现网站不输出提要,我还能用RSS阅读器订阅吗?
如果你现在看三好市民的RSS阅读器,你会发现你订阅了各种网站,甚至包括微博,有的只是订阅了网站的某个版块或页面,并且这些部分和页面不提供 RSS 提要,也不输出提要。那么三好市民是如何订阅的呢?
这需要借助在线工具Feed43,理论上可以通过Feed43生成任意网页的RSS提要,从而订阅任意网页。以下三位好公民以他们的订阅之一为例进行演示:
例如,三好市民一直关注中关村在线软件频道的技能申请页面,但该页面不提供RSS订阅。每天都要单独打开页面查看有没有更新文章,很麻烦。现在我们使用 Feed43 从此页面生成 RSS 提要。
首先访问Feed43网站,点击“创建自己的Feed”链接,打开新的Feed页面。
第一步:指定源页面地址
在地址框中输入中关村在线软件频道技能申请页面的网址。如图:
在后面的编码框中填写网页的编辑类型,通过查看网页源文件头部的代码可以看出该网页是gbk。然后点击“重新加载”按钮,在下面的文本框中显示当前的否定源代码。
步骤 2:定义提取规则
我们先观察网页的源码,找到需要订阅的文章列表的代码,然后找到规则,再总结成符合Feed43要求的抽取规则。例如,本网页的文章列表部分中每个文章条目的代码为:
1
2
3
4
5
6
7
8
9
10
11
12
学长教你升级XP Win8.1系统安装指南<p class="nlc_time">2014年04月12日 05:42 作者:马荣 【原创】
XP已经在几天前正式退休了,所以经常找学长帮忙的重装电脑的学弟学妹们也要犯愁了。其实完全没有必要,因为我们干脆直接升级到Win8.1就能解决所有的问题了。现在作为一个大学长,我们现在就教大... [详细]
<br />
标签:最新 | 应用技巧 | win8应用 | 桌面软件
查看全文我要评论(4)http://soft.zol.com.cn/446/4466341.html
</p>
其中,对我们订阅有用的无非是文章的标题和链接,最多加上发布时间。然后根据Feed43的抽取规则,我们用{%}表示需要的部分,用{*}表示不需要的部分。从而总结出以下抽取规则并输入到“项目(可重复)搜索模式”框中。
1
{*}{%}<p class="nlc_time">{%}{*}{*}</p>
如图:
有朋友可能会问,上面还有没有填写的“全局搜索模式”设置框?其实这个框可以留空,也可以只填文章列表部分开头的代码和结果,中间加{%},例如:
1
{%}
然后点击“提取”按钮,预览根据您定义的提取规则捕获的提要内容。
第 3 步:定义输出格式
Feed43 会自动生成这个页面上的feed 的标题名称、链接地址和描述,feed 的内容格式需要自己定义。根据步骤2预览的Feed内容,填写对应的入口代码。如图:
最后,单击“预览”按钮以定义格式预览提要内容。
第 4 步:获取 RSS 提要提要
现在您已经完成了,您已经可以看到生成的 xml 格式的 RSS 提要文件。如图:
复制xml文件的链接地址,然后就可以在RSS阅读器中添加订阅了。添加后订阅效果如图:
最后提醒一下,虽然三好市民还没有经过验证,但是为了保证你新创建的Feed可以正常更新,最好先注册一个Feed43账号,然后点击底部的“Add this feed to my account”在您刚刚创建提要的页面上,然后将其放入将提要添加到您的帐户中。您也可以登录您的Feed43账号,点击窗口上方的“我的订阅源”,然后点击“添加订阅源到您的帐号/取消删除订阅源”,在xml后缀前填写数字“72806”在这个例子中为“Feed Name”可以。不过免费用户的feed更新频率是6小时,升级为付费用户后可以增加到1小时。 查看全部
抓取网页生成电子书(网站没有输出Feed(Feed)RSS阅读器)
我一直在关注某个网站,但是发现网站不输出提要,我还能用RSS阅读器订阅吗?
如果你现在看三好市民的RSS阅读器,你会发现你订阅了各种网站,甚至包括微博,有的只是订阅了网站的某个版块或页面,并且这些部分和页面不提供 RSS 提要,也不输出提要。那么三好市民是如何订阅的呢?
这需要借助在线工具Feed43,理论上可以通过Feed43生成任意网页的RSS提要,从而订阅任意网页。以下三位好公民以他们的订阅之一为例进行演示:
例如,三好市民一直关注中关村在线软件频道的技能申请页面,但该页面不提供RSS订阅。每天都要单独打开页面查看有没有更新文章,很麻烦。现在我们使用 Feed43 从此页面生成 RSS 提要。
首先访问Feed43网站,点击“创建自己的Feed”链接,打开新的Feed页面。
第一步:指定源页面地址
在地址框中输入中关村在线软件频道技能申请页面的网址。如图:

在后面的编码框中填写网页的编辑类型,通过查看网页源文件头部的代码可以看出该网页是gbk。然后点击“重新加载”按钮,在下面的文本框中显示当前的否定源代码。
步骤 2:定义提取规则
我们先观察网页的源码,找到需要订阅的文章列表的代码,然后找到规则,再总结成符合Feed43要求的抽取规则。例如,本网页的文章列表部分中每个文章条目的代码为:
1
2
3
4
5
6
7
8
9
10
11
12

学长教你升级XP Win8.1系统安装指南<p class="nlc_time">2014年04月12日 05:42 作者:马荣 【原创】
XP已经在几天前正式退休了,所以经常找学长帮忙的重装电脑的学弟学妹们也要犯愁了。其实完全没有必要,因为我们干脆直接升级到Win8.1就能解决所有的问题了。现在作为一个大学长,我们现在就教大... [详细]
<br />
标签:最新 | 应用技巧 | win8应用 | 桌面软件
查看全文我要评论(4)http://soft.zol.com.cn/446/4466341.html
</p>
其中,对我们订阅有用的无非是文章的标题和链接,最多加上发布时间。然后根据Feed43的抽取规则,我们用{%}表示需要的部分,用{*}表示不需要的部分。从而总结出以下抽取规则并输入到“项目(可重复)搜索模式”框中。
1
{*}{%}<p class="nlc_time">{%}{*}{*}</p>
如图:

有朋友可能会问,上面还有没有填写的“全局搜索模式”设置框?其实这个框可以留空,也可以只填文章列表部分开头的代码和结果,中间加{%},例如:
1
{%}
然后点击“提取”按钮,预览根据您定义的提取规则捕获的提要内容。
第 3 步:定义输出格式
Feed43 会自动生成这个页面上的feed 的标题名称、链接地址和描述,feed 的内容格式需要自己定义。根据步骤2预览的Feed内容,填写对应的入口代码。如图:

最后,单击“预览”按钮以定义格式预览提要内容。
第 4 步:获取 RSS 提要提要
现在您已经完成了,您已经可以看到生成的 xml 格式的 RSS 提要文件。如图:

复制xml文件的链接地址,然后就可以在RSS阅读器中添加订阅了。添加后订阅效果如图:

最后提醒一下,虽然三好市民还没有经过验证,但是为了保证你新创建的Feed可以正常更新,最好先注册一个Feed43账号,然后点击底部的“Add this feed to my account”在您刚刚创建提要的页面上,然后将其放入将提要添加到您的帐户中。您也可以登录您的Feed43账号,点击窗口上方的“我的订阅源”,然后点击“添加订阅源到您的帐号/取消删除订阅源”,在xml后缀前填写数字“72806”在这个例子中为“Feed Name”可以。不过免费用户的feed更新频率是6小时,升级为付费用户后可以增加到1小时。
抓取网页生成电子书(- )
网站优化 • 优采云 发表了文章 • 0 个评论 • 69 次浏览 • 2021-12-05 07:04
)
我们的任务:抓取网页内容
1.用户指定的网址
2.获取文章的所有文本
urllib 的请求模块可以方便的抓取 URL 内容,即向指定页面发送 GET 请求,然后返回 HTTP 响应
Python 通过 re 模块提供对正则表达式的支持
from urllib import request
import re
用户输入指定的网址
#地址 绑定(编程期间)
#user_url = "https://news.sina.com.cn/o/201 ... ot%3B
#地址 由用户指定(使用期间)
print("请输入您想查看的url")
user_url = input()
请输入您想查看的url
https://www.cnblogs.com/ms-uap/p/9928254.html
获取网页的html信息并进行转码
添加头部信息,反爬虫策略
我们需要url的标题和文章进行分析。
提取title标签的正则表达式我的匹配码
title = re.findall('(.*?[\u4e00-\u9fa5]*?.*?)', data_web)
for line in title:
print(line)
系列之1-神经网络的基本工作原理 - UniversalAIPlatform - 博客园
提取p标签的正则表达式我的匹配码
article = re.findall('(.*?[\u4e00-\u9fa5]*?.*?)', data_web)
for line in article:
print(line)</p> 查看全部
抓取网页生成电子书(-
)
我们的任务:抓取网页内容
1.用户指定的网址
2.获取文章的所有文本
urllib 的请求模块可以方便的抓取 URL 内容,即向指定页面发送 GET 请求,然后返回 HTTP 响应
Python 通过 re 模块提供对正则表达式的支持
from urllib import request
import re
用户输入指定的网址
#地址 绑定(编程期间)
#user_url = "https://news.sina.com.cn/o/201 ... ot%3B
#地址 由用户指定(使用期间)
print("请输入您想查看的url")
user_url = input()
请输入您想查看的url
https://www.cnblogs.com/ms-uap/p/9928254.html
获取网页的html信息并进行转码
添加头部信息,反爬虫策略
我们需要url的标题和文章进行分析。
提取title标签的正则表达式我的匹配码
title = re.findall('(.*?[\u4e00-\u9fa5]*?.*?)', data_web)
for line in title:
print(line)
系列之1-神经网络的基本工作原理 - UniversalAIPlatform - 博客园
提取p标签的正则表达式我的匹配码
article = re.findall('(.*?[\u4e00-\u9fa5]*?.*?)', data_web)
for line in article:
print(line)</p>
抓取网页生成电子书(Windows,OSX及Linux操作系统或mobi格式的在线阅读 )
网站优化 • 优采云 发表了文章 • 0 个评论 • 54 次浏览 • 2021-12-03 19:54
)
自从我买了kindle,我就一直在想如何最大限度地发挥它的功效。虽然可供购买的书籍很多,网上也有很多免费的电子书,但还是有很多网页形式的有趣内容。例如,O'Reilly Atlas 提供了很多电子书,但只提供免费在线阅读;此外,许多材料或文件只是网络形式。所以我希望能以某种方式将这些网上资料转成epub或mobi格式,以便在kindle上阅读。本文文章介绍了如何使用calibre并编写少量代码来实现这一目标。
Calibre 简介
Calibre 是一款免费的电子书管理工具,兼容 Windows、OS X 和 Linux。令人欣慰的是,除了GUI,calibre 还提供了很多命令行工具。ebook-convert 命令可以基于用户编写的食谱。该文件(实际上是python代码)抓取指定页面的内容,生成mobi等格式的电子书。爬取行为可以通过编写recipe来定制,以适应不同的网页结构。
安装口径
Calibre的下载地址是,您可以根据自己的操作系统下载相应的安装程序。
如果是Linux操作系统,也可以通过软件仓库安装:
Archlinux:
pacman -S calibre
Debian/Ubuntu:
apt-get install calibre
红帽/Fedora/CentOS:
yum -y install calibre
请注意,如果您使用 OSX,则需要单独安装命令行工具。
抓取网页以生成电子书
下面以Git Pocket Guide为例,说明如何通过calibre从网页中生成电子书。
找到索引页
要爬取整本书,首先要找到索引页。这个页面通常是目录,也就是目录页面,其中每个目录链接都连接到相应的内容页面。在生成电子书时,索引页会指导抓取哪些页面以及内容组织的顺序。在这个例子中,索引页是。
写食谱
Recipes 是一个带有配方扩展名的脚本。内容其实是一段python代码,定义了calibre爬取页面的范围和行为。以下是爬取 Git Pocket Guide 的秘籍:
from calibre.web.feeds.recipes import BasicNewsRecipeclass Git_Pocket_Guide(BasicNewsRecipe): title = 'Git Pocket Guide' description = '' cover_url = 'http://akamaicovers.oreilly.com/images/0636920024972/lrg.jpg' url_prefix = 'http://chimera.labs.oreilly.com/books/1230000000561/' no_stylesheets = True keep_only_tags = [{ 'class': 'chapter' }] def get_title(self, link): return link.contents[0].strip() def parse_index(self): soup = self.index_to_soup(self.url_prefix + 'index.html') div = soup.find('div', { 'class': 'toc' }) articles = [] for link in div.findAll('a'): if '#' in link['href']: continue if not 'ch' in link['href']: continue til = self.get_title(link) url = self.url_prefix + link['href'] a = { 'title': til, 'url': url } articles.append(a) ans = [('Git_Pocket_Guide', articles)] return ans
代码的不同部分解释如下。
整体结构
一般来说,一个recipe是一个python类,但是这个类必须继承calibre.web.feeds.recipes.BasicNewsRecipe。
解析索引
整个recipe的核心方法是parse_index,这也是recipes必须实现的唯一方法。该方法的目标是通过分析索引页的内容,返回一个稍微复杂一些的数据结构(稍后介绍)。这个数据结构定义了整个电子书的内容和内容组织顺序。
整体属性设置
在类的开头,定义了一些全局属性:
title = 'Git Pocket Guide'description = ''cover_url = 'http://akamaicovers.oreilly.com/images/0636920024972/lrg.jpg'url_prefix = 'http://chimera.labs.oreilly.com/books/1230000000561/'no_stylesheets = Truekeep_only_tags = [{ 'class': 'chapter' }] 查看全部
抓取网页生成电子书(Windows,OSX及Linux操作系统或mobi格式的在线阅读
)
自从我买了kindle,我就一直在想如何最大限度地发挥它的功效。虽然可供购买的书籍很多,网上也有很多免费的电子书,但还是有很多网页形式的有趣内容。例如,O'Reilly Atlas 提供了很多电子书,但只提供免费在线阅读;此外,许多材料或文件只是网络形式。所以我希望能以某种方式将这些网上资料转成epub或mobi格式,以便在kindle上阅读。本文文章介绍了如何使用calibre并编写少量代码来实现这一目标。
Calibre 简介
Calibre 是一款免费的电子书管理工具,兼容 Windows、OS X 和 Linux。令人欣慰的是,除了GUI,calibre 还提供了很多命令行工具。ebook-convert 命令可以基于用户编写的食谱。该文件(实际上是python代码)抓取指定页面的内容,生成mobi等格式的电子书。爬取行为可以通过编写recipe来定制,以适应不同的网页结构。
安装口径
Calibre的下载地址是,您可以根据自己的操作系统下载相应的安装程序。
如果是Linux操作系统,也可以通过软件仓库安装:
Archlinux:
pacman -S calibre
Debian/Ubuntu:
apt-get install calibre
红帽/Fedora/CentOS:
yum -y install calibre
请注意,如果您使用 OSX,则需要单独安装命令行工具。
抓取网页以生成电子书
下面以Git Pocket Guide为例,说明如何通过calibre从网页中生成电子书。
找到索引页
要爬取整本书,首先要找到索引页。这个页面通常是目录,也就是目录页面,其中每个目录链接都连接到相应的内容页面。在生成电子书时,索引页会指导抓取哪些页面以及内容组织的顺序。在这个例子中,索引页是。
写食谱
Recipes 是一个带有配方扩展名的脚本。内容其实是一段python代码,定义了calibre爬取页面的范围和行为。以下是爬取 Git Pocket Guide 的秘籍:
from calibre.web.feeds.recipes import BasicNewsRecipeclass Git_Pocket_Guide(BasicNewsRecipe): title = 'Git Pocket Guide' description = '' cover_url = 'http://akamaicovers.oreilly.com/images/0636920024972/lrg.jpg' url_prefix = 'http://chimera.labs.oreilly.com/books/1230000000561/' no_stylesheets = True keep_only_tags = [{ 'class': 'chapter' }] def get_title(self, link): return link.contents[0].strip() def parse_index(self): soup = self.index_to_soup(self.url_prefix + 'index.html') div = soup.find('div', { 'class': 'toc' }) articles = [] for link in div.findAll('a'): if '#' in link['href']: continue if not 'ch' in link['href']: continue til = self.get_title(link) url = self.url_prefix + link['href'] a = { 'title': til, 'url': url } articles.append(a) ans = [('Git_Pocket_Guide', articles)] return ans
代码的不同部分解释如下。
整体结构
一般来说,一个recipe是一个python类,但是这个类必须继承calibre.web.feeds.recipes.BasicNewsRecipe。
解析索引
整个recipe的核心方法是parse_index,这也是recipes必须实现的唯一方法。该方法的目标是通过分析索引页的内容,返回一个稍微复杂一些的数据结构(稍后介绍)。这个数据结构定义了整个电子书的内容和内容组织顺序。
整体属性设置
在类的开头,定义了一些全局属性:
title = 'Git Pocket Guide'description = ''cover_url = 'http://akamaicovers.oreilly.com/images/0636920024972/lrg.jpg'url_prefix = 'http://chimera.labs.oreilly.com/books/1230000000561/'no_stylesheets = Truekeep_only_tags = [{ 'class': 'chapter' }]
抓取网页生成电子书(全篇的实现思路分析网页学会使用BeautifulSoup库爬取并导出参考资料 )
网站优化 • 优采云 发表了文章 • 0 个评论 • 77 次浏览 • 2021-12-02 06:11
)
爬行动物的成因
官方文档或手册虽然可以查阅,但如果变成纸质版是不是更容易阅读和记忆。如果你只是简单地复制和粘贴,你不知道什么时候会完成。所以我开始考虑爬下官方的Android手册。
整篇文章实现思路分析网页学习使用BeautifulSoup库抓取导出
参考资料:
* 将廖雪峰的教程转成PDF电子书
* 请求文件
*美丽的汤文件
配置
Ubuntu下使用Pycharm运行成功
要转换为 PDF,您需要下载 wkhtmltopdf
具体流程网页分析
对于这样的网页,您只需获取网页的正文和标题,以及左侧导航栏中的所有网址
如下:
下一个工作是找到这些标签......
关于Requests的使用
详见文档,这里只是简单使用Requests获取html并使用代理翻墙(网站不能直接访问,需要VPN)
proxies={
"http":"http://vpn的IP:port",
"https":"https://vpn的IP:port",
}
response=requests.get(url,proxies=proxies)
美汤的使用
参考资料中有一个 Beautiful Soup 文档。看完就知道讲了两件事:一是找标签,二是修改标签。
这篇文章需要做的是:
1. 获取title和所有url,这涉及到找标签
#对标签进行判断,一个标签含有href而不含有description,则返回true
#而我希望获取的是含有href属性而不含有description属性的<a>标签,(且只有a标签含有href)
def has_href_but_no_des(tag):
return tag.has_attr('href') and not tag.has_attr('description')
#网页分析,获取网址和标题
def parse_url_to_html(url):
response=requests.get(url,proxies=proxies)
soup=BeautifulSoup(response.content,"html.parser")
s=[]#获取所有的网址
title=[]#获取对应的标题
tag=soup.find(id="nav")#获取第一个id为"nav"的标签,这个里面包含了网址和标题
for i in tag.find_all(has_href_but_no_des):
s.append(i['href'])
title.append(i.text)
#获取的只是标签集,需要加html前缀
htmls = ""
with open("android_training_3.html",'a') as f:
f.write(htmls)
解析上面得到的URL,获取文本,将图片保存到本地;它涉及查找标签和修改属性
#网页操作,获取正文及图片
def get_htmls(urls,title):
for i in range(len(urls)):
response=requests.get(urls[i],proxies=proxies)
soup=BeautifulSoup(response.content,"html.parser")
htmls=""+str(i)+"."+title[i]+""
tag=soup.find(class_='jd-descr')
#为image添加相对路径,并下载图片
for img in tag.find_all('img'):
im = requests.get(img['src'], proxies=proxies)
filename = os.path.split(img['src'])[1]
with open('image/' + filename, 'wb') as f:
f.write(im.content)
img['src']='image/'+filename
htmls=htmls+str(tag)
with open("android_training_3.html",'a') as f:
f.write(htmls)
print(" (%s) [%s] download end"%(i,title[i]))
htmls=""
with open("android_training_3.html",'a') as f:
f.write(htmls)
转换为 PDF
这一步需要下载wkhtmltopdf,在windows下执行程序总是报错..ubuntu是可以的
def save_pdf(html):
"""
把所有html文件转换成pdf文件
"""
options = {
'page-size': 'Letter',
'encoding': "UTF-8",
'custom-header': [
('Accept-Encoding', 'gzip')
]
}
pdfkit.from_file(html, "android_training_3.pdf", options=options)
最终效果图
查看全部
抓取网页生成电子书(全篇的实现思路分析网页学会使用BeautifulSoup库爬取并导出参考资料
)
爬行动物的成因
官方文档或手册虽然可以查阅,但如果变成纸质版是不是更容易阅读和记忆。如果你只是简单地复制和粘贴,你不知道什么时候会完成。所以我开始考虑爬下官方的Android手册。
整篇文章实现思路分析网页学习使用BeautifulSoup库抓取导出
参考资料:
* 将廖雪峰的教程转成PDF电子书
* 请求文件
*美丽的汤文件
配置
Ubuntu下使用Pycharm运行成功
要转换为 PDF,您需要下载 wkhtmltopdf
具体流程网页分析
对于这样的网页,您只需获取网页的正文和标题,以及左侧导航栏中的所有网址
如下:
下一个工作是找到这些标签......
关于Requests的使用
详见文档,这里只是简单使用Requests获取html并使用代理翻墙(网站不能直接访问,需要VPN)
proxies={
"http":"http://vpn的IP:port",
"https":"https://vpn的IP:port",
}
response=requests.get(url,proxies=proxies)
美汤的使用
参考资料中有一个 Beautiful Soup 文档。看完就知道讲了两件事:一是找标签,二是修改标签。
这篇文章需要做的是:
1. 获取title和所有url,这涉及到找标签
#对标签进行判断,一个标签含有href而不含有description,则返回true
#而我希望获取的是含有href属性而不含有description属性的<a>标签,(且只有a标签含有href)
def has_href_but_no_des(tag):
return tag.has_attr('href') and not tag.has_attr('description')
#网页分析,获取网址和标题
def parse_url_to_html(url):
response=requests.get(url,proxies=proxies)
soup=BeautifulSoup(response.content,"html.parser")
s=[]#获取所有的网址
title=[]#获取对应的标题
tag=soup.find(id="nav")#获取第一个id为"nav"的标签,这个里面包含了网址和标题
for i in tag.find_all(has_href_but_no_des):
s.append(i['href'])
title.append(i.text)
#获取的只是标签集,需要加html前缀
htmls = ""
with open("android_training_3.html",'a') as f:
f.write(htmls)
解析上面得到的URL,获取文本,将图片保存到本地;它涉及查找标签和修改属性
#网页操作,获取正文及图片
def get_htmls(urls,title):
for i in range(len(urls)):
response=requests.get(urls[i],proxies=proxies)
soup=BeautifulSoup(response.content,"html.parser")
htmls=""+str(i)+"."+title[i]+""
tag=soup.find(class_='jd-descr')
#为image添加相对路径,并下载图片
for img in tag.find_all('img'):
im = requests.get(img['src'], proxies=proxies)
filename = os.path.split(img['src'])[1]
with open('image/' + filename, 'wb') as f:
f.write(im.content)
img['src']='image/'+filename
htmls=htmls+str(tag)
with open("android_training_3.html",'a') as f:
f.write(htmls)
print(" (%s) [%s] download end"%(i,title[i]))
htmls=""
with open("android_training_3.html",'a') as f:
f.write(htmls)
转换为 PDF
这一步需要下载wkhtmltopdf,在windows下执行程序总是报错..ubuntu是可以的
def save_pdf(html):
"""
把所有html文件转换成pdf文件
"""
options = {
'page-size': 'Letter',
'encoding': "UTF-8",
'custom-header': [
('Accept-Encoding', 'gzip')
]
}
pdfkit.from_file(html, "android_training_3.pdf", options=options)
最终效果图
抓取网页生成电子书(行行网电子书多线程爬取-撸代码代码非常简单-写在前面 )
网站优化 • 优采云 发表了文章 • 0 个评论 • 74 次浏览 • 2021-12-02 06:11
)
星星网电子书的多线程爬取-写在前面
最近想找几本电子书看,然后找到一本叫周都网站,网站很好看,简单清爽,书很多,就是百度。网盘可以直接下载,更新速度也可以接受,所以在爬。这篇文章文章刚学习,这么好的分享网站,尽量不要爬,不会影响别人访问的速度,想要数据的可以评论我的博客我会发给你,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个多线程,但是这样很容易导致其他人的服务器瘫痪。因此,必须限制并发数。下面的代码,你试着把它放在指定的位置。
sema = asyncio.Semaphore(5)
# 为避免爬虫一次性请求次数太多,控制一下
async def x_get_source(url):
with(await sema):
await get_content(url)
第2步
为了处理获取的网页的源代码并提取我们想要的元素,我添加了一个新方法,使用 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("插入成功!")
星星网电子书多线程爬取-运行代码,查看结果
因为这可能涉及到从别人的服务器获取重要数据,代码不会上传到github,有需要的可以留言,我会单独发给你
查看全部
抓取网页生成电子书(行行网电子书多线程爬取-撸代码代码非常简单-写在前面
)
星星网电子书的多线程爬取-写在前面
最近想找几本电子书看,然后找到一本叫周都网站,网站很好看,简单清爽,书很多,就是百度。网盘可以直接下载,更新速度也可以接受,所以在爬。这篇文章文章刚学习,这么好的分享网站,尽量不要爬,不会影响别人访问的速度,想要数据的可以评论我的博客我会发给你,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个多线程,但是这样很容易导致其他人的服务器瘫痪。因此,必须限制并发数。下面的代码,你试着把它放在指定的位置。
sema = asyncio.Semaphore(5)
# 为避免爬虫一次性请求次数太多,控制一下
async def x_get_source(url):
with(await sema):
await get_content(url)
第2步
为了处理获取的网页的源代码并提取我们想要的元素,我添加了一个新方法,使用 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("插入成功!")
星星网电子书多线程爬取-运行代码,查看结果
因为这可能涉及到从别人的服务器获取重要数据,代码不会上传到github,有需要的可以留言,我会单独发给你
抓取网页生成电子书(快速指南发送一个-html的方便就是(图))
网站优化 • 优采云 发表了文章 • 0 个评论 • 95 次浏览 • 2021-12-02 01:10
安装
安装很简单,直接执行:
pip install requests-html
就是这样。
分析页面结构
通过浏览器查看元素,可以发现这本电子书网站是用WordPress搭建的。主页列表上的元素非常简单和规则。
所以我们可以搜索 .entry-title> a 得到所有书籍详情页的链接,然后我们进入详情页找到下载链接,如下图
可以发现.download-links>a中的链接就是本书的下载链接。回到列表页面,可以发现该站点有700多个页面,因此我们可以遍历列表以获取所有下载链接。
请求-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/pyth ... 39%3B, '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 多个电子书案例。我希望它会对你有所帮助。如果您有任何问题,请给我留言。小编会及时回复您。非常感谢大家支持找教程网网站! 查看全部
抓取网页生成电子书(快速指南发送一个-html的方便就是(图))
安装
安装很简单,直接执行:
pip install requests-html
就是这样。
分析页面结构
通过浏览器查看元素,可以发现这本电子书网站是用WordPress搭建的。主页列表上的元素非常简单和规则。

所以我们可以搜索 .entry-title> a 得到所有书籍详情页的链接,然后我们进入详情页找到下载链接,如下图

可以发现.download-links>a中的链接就是本书的下载链接。回到列表页面,可以发现该站点有700多个页面,因此我们可以遍历列表以获取所有下载链接。
请求-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/pyth ... 39%3B, '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 个评论 • 119 次浏览 • 2021-12-01 19:11
)
网络图书抓取器主要用于抓取网络小说生成文本文件。它可以提取和调整指定小说目录页面的章节信息,然后按照章节顺序抓取小说内容,然后进行合并。抓取过程可以随时中断,关闭程序后可以继续上一个任务。
软件特点
1、 章节调整:提取目录后,可以进行移动、删除、倒序等调整操作。调整会直接影响最终的书籍,也会以调整后的章节顺序输出。
2、自动重试:在爬取过程中,由于网络因素,可能会出现爬取失败的情况。程序可能会自动重试直到成功,也可以暂时中断爬取(中断后关闭程序不影响进度),等网络好了再试。
3、停止和恢复:可以随时停止抓取过程,退出程序后不影响进度(章节信息会保存在记录中,运行程序后可以恢复抓取下一次。注意:您需要先使用停止按钮中断然后退出程序,如果直接退出,将不会恢复)。
4、 一键抓取:又称“哑模式”,基本可以实现自动抓取合并功能,直接输出最终的文本文件。前面可能需要输入最基本的网址、保存位置等信息(会有明显的操作提示),调整章节后也可以使用一键抓取,抓取合并操作会自动完成.
5、适用网站:已输入10个适用网站(选择后可以快速打开网站找到您需要的书),并自动应用相应的代码, 也可以测试其他小说网站,如果一起使用,可以手动添加到设置文件中以备后用。
6、 制作电子书方便:可以在设置文件中添加每个章节名称的前缀和后缀,为后期制作电子书的目录带来极大的方便。
查看全部
抓取网页生成电子书(《后期制作》软件特色制作流程及应用
)
网络图书抓取器主要用于抓取网络小说生成文本文件。它可以提取和调整指定小说目录页面的章节信息,然后按照章节顺序抓取小说内容,然后进行合并。抓取过程可以随时中断,关闭程序后可以继续上一个任务。

软件特点
1、 章节调整:提取目录后,可以进行移动、删除、倒序等调整操作。调整会直接影响最终的书籍,也会以调整后的章节顺序输出。
2、自动重试:在爬取过程中,由于网络因素,可能会出现爬取失败的情况。程序可能会自动重试直到成功,也可以暂时中断爬取(中断后关闭程序不影响进度),等网络好了再试。
3、停止和恢复:可以随时停止抓取过程,退出程序后不影响进度(章节信息会保存在记录中,运行程序后可以恢复抓取下一次。注意:您需要先使用停止按钮中断然后退出程序,如果直接退出,将不会恢复)。
4、 一键抓取:又称“哑模式”,基本可以实现自动抓取合并功能,直接输出最终的文本文件。前面可能需要输入最基本的网址、保存位置等信息(会有明显的操作提示),调整章节后也可以使用一键抓取,抓取合并操作会自动完成.
5、适用网站:已输入10个适用网站(选择后可以快速打开网站找到您需要的书),并自动应用相应的代码, 也可以测试其他小说网站,如果一起使用,可以手动添加到设置文件中以备后用。
6、 制作电子书方便:可以在设置文件中添加每个章节名称的前缀和后缀,为后期制作电子书的目录带来极大的方便。

抓取网页生成电子书(后续就是怎么去请求网络了,解析网页html标签(组图))
网站优化 • 优采云 发表了文章 • 0 个评论 • 63 次浏览 • 2021-11-29 04:05
Github 博文地址,这里更新可能不是很及时。1.背景
最近发现算法和数据结构掉了不少(其实大学没好好学习,囧rz)。考虑到最近的项目结构越来越复杂,就用它来实践自己的想法,打算复习一下数据结构和算法。. 结合最近的英语学习,然后自己干脆用英语。然后选择一本参考书《Java 中的数据结构和算法》。
起初,它非常费力,所以请慢慢来。因为之前有翻书的习惯,所以去书所附的官网,发现所附的PDF文件其实还不错,图文并茂。是很好的理解资料,所以要果断下载。不过,尼玛,原来还有很多。一个一个的救他们,真的很可怕。想想如何下载它们。
2.实现
考虑到目前你所学和理解的所有语言,可以用来实现,并按以下顺序排列层次:
Java/Android 熟悉 C# 熟悉 Python 熟悉语法 Javascript 熟悉一些 C/C++ 熟悉语法
为了实现这一点,它当然是最简单、最快和最好的。考虑到大学一直在使用C#,为什么不使用它呢?但是发现OSX平台只能使用Mono,不得不重新熟悉一下。考虑到所需的时间,Java 实现并不快。我对Javascript不熟悉,好像可以用node.js来写(atom用的)。陌生。C/C++很多年没用了,要实现的代码很多,特别麻烦。考虑到前段时间正好在Codecademy学了语法,就用它来练习吧。
好的,我肯定会使用 Python。后续就是如何请求网络,解析网页的html标签,提取下载链接,下载文件。虽然我不明白这些在Python中是如何实现的,但过程是确定的。按照流程到网站找一个现成的。原理这里不研究,实现功能即可。
下一步就是用各种搜索引擎搜索东西,谷歌可以,百度也可以(不同的引擎有不同的侧重点)。不要忘记目的是什么,搜索相关信息。
好的,搜索之后,一定要从web请求web下载请求,BeautifulSoup解析html,解压下载链接BeautifulSoup,下载文档(stackoverflow里找到了一段下载文件的代码)。
然后他们将它们组合在一起。组合后的代码如下:
1 #file-name: pdf_download.py
2 __author__ = 'rxread'
3 import requests
4 from bs4 import BeautifulSoup
5
6
7 def download_file(url, index):
8 local_filename = index+"-"+url.split('/')[-1]
9 # NOTE the stream=True parameter
10 r = requests.get(url, stream=True)
11 with open(local_filename, 'wb') as f:
12 for chunk in r.iter_content(chunk_size=1024):
13 if chunk: # filter out keep-alive new chunks
14 f.write(chunk)
15 f.flush()
16 return local_filename
17
18 #http://ww0.java4.datastructures.net/handouts/
19 root_link="http://ww0.java4.datastructure ... ot%3B
20 r=requests.get(root_link)
21 if r.status_code==200:
22 soup=BeautifulSoup(r.text)
23 # print soup.prettify()
24 index=1
25 for link in soup.find_all('a'):
26 new_link=root_link+link.get('href')
27 if new_link.endswith(".pdf"):
28 file_path=download_file(new_link,str(index))
29 print "downloading:"+new_link+" -> "+file_path
30 index+=1
31 print "all download finished"
32 else:
33 print "errors occur."
查看代码
运行以下代码将所有pdf文档下载到本地。
1 python pdf_download.py
查看代码
3.优化
30多行代码,全部搞定。它真的简洁明了。果然,用Python做一些脚本任务还是不错的。使用它下载了41个文件。
一开始下载的文件没有序列号,看的时候不知道顺序,所以在文件名前面加了一个序列号。
其他优化部分可以参考如下:
考虑到当前函数的一些异常错误没有处理,需要稍后处理。功能未完全封装,不支持下载的文件类型。这可以根据您将来的需要进行扩展。这样在下载的文件少的时候可能没问题,但是如果文件多,就需要使用多线程(合适的数量)或者线程池来下载,加快下载速度。有的写可能不符合python语法规范,当然写和不写的区别已经是0和1了。其他的细节,比如pdf可能是大写的PDF。4.附录“Java 中的数据结构和算法”(Michael T. Goodrich、Roberto Tamassia)下载或
下面两个网站是好书下载网站。如果可能,您应该购买正版书籍以支持作者。
一般我会先下载电子书,如果合适再买纸质版。Python 语法入门
就是这样。
本文来自RxRead的博客,欢迎转载,如转载请注明。
欢迎共同探讨。
转载于: 查看全部
抓取网页生成电子书(后续就是怎么去请求网络了,解析网页html标签(组图))
Github 博文地址,这里更新可能不是很及时。1.背景
最近发现算法和数据结构掉了不少(其实大学没好好学习,囧rz)。考虑到最近的项目结构越来越复杂,就用它来实践自己的想法,打算复习一下数据结构和算法。. 结合最近的英语学习,然后自己干脆用英语。然后选择一本参考书《Java 中的数据结构和算法》。
起初,它非常费力,所以请慢慢来。因为之前有翻书的习惯,所以去书所附的官网,发现所附的PDF文件其实还不错,图文并茂。是很好的理解资料,所以要果断下载。不过,尼玛,原来还有很多。一个一个的救他们,真的很可怕。想想如何下载它们。
2.实现
考虑到目前你所学和理解的所有语言,可以用来实现,并按以下顺序排列层次:
Java/Android 熟悉 C# 熟悉 Python 熟悉语法 Javascript 熟悉一些 C/C++ 熟悉语法
为了实现这一点,它当然是最简单、最快和最好的。考虑到大学一直在使用C#,为什么不使用它呢?但是发现OSX平台只能使用Mono,不得不重新熟悉一下。考虑到所需的时间,Java 实现并不快。我对Javascript不熟悉,好像可以用node.js来写(atom用的)。陌生。C/C++很多年没用了,要实现的代码很多,特别麻烦。考虑到前段时间正好在Codecademy学了语法,就用它来练习吧。
好的,我肯定会使用 Python。后续就是如何请求网络,解析网页的html标签,提取下载链接,下载文件。虽然我不明白这些在Python中是如何实现的,但过程是确定的。按照流程到网站找一个现成的。原理这里不研究,实现功能即可。
下一步就是用各种搜索引擎搜索东西,谷歌可以,百度也可以(不同的引擎有不同的侧重点)。不要忘记目的是什么,搜索相关信息。
好的,搜索之后,一定要从web请求web下载请求,BeautifulSoup解析html,解压下载链接BeautifulSoup,下载文档(stackoverflow里找到了一段下载文件的代码)。
然后他们将它们组合在一起。组合后的代码如下:


1 #file-name: pdf_download.py
2 __author__ = 'rxread'
3 import requests
4 from bs4 import BeautifulSoup
5
6
7 def download_file(url, index):
8 local_filename = index+"-"+url.split('/')[-1]
9 # NOTE the stream=True parameter
10 r = requests.get(url, stream=True)
11 with open(local_filename, 'wb') as f:
12 for chunk in r.iter_content(chunk_size=1024):
13 if chunk: # filter out keep-alive new chunks
14 f.write(chunk)
15 f.flush()
16 return local_filename
17
18 #http://ww0.java4.datastructures.net/handouts/
19 root_link="http://ww0.java4.datastructure ... ot%3B
20 r=requests.get(root_link)
21 if r.status_code==200:
22 soup=BeautifulSoup(r.text)
23 # print soup.prettify()
24 index=1
25 for link in soup.find_all('a'):
26 new_link=root_link+link.get('href')
27 if new_link.endswith(".pdf"):
28 file_path=download_file(new_link,str(index))
29 print "downloading:"+new_link+" -> "+file_path
30 index+=1
31 print "all download finished"
32 else:
33 print "errors occur."
查看代码
运行以下代码将所有pdf文档下载到本地。


1 python pdf_download.py
查看代码
3.优化
30多行代码,全部搞定。它真的简洁明了。果然,用Python做一些脚本任务还是不错的。使用它下载了41个文件。
一开始下载的文件没有序列号,看的时候不知道顺序,所以在文件名前面加了一个序列号。
其他优化部分可以参考如下:
考虑到当前函数的一些异常错误没有处理,需要稍后处理。功能未完全封装,不支持下载的文件类型。这可以根据您将来的需要进行扩展。这样在下载的文件少的时候可能没问题,但是如果文件多,就需要使用多线程(合适的数量)或者线程池来下载,加快下载速度。有的写可能不符合python语法规范,当然写和不写的区别已经是0和1了。其他的细节,比如pdf可能是大写的PDF。4.附录“Java 中的数据结构和算法”(Michael T. Goodrich、Roberto Tamassia)下载或
下面两个网站是好书下载网站。如果可能,您应该购买正版书籍以支持作者。
一般我会先下载电子书,如果合适再买纸质版。Python 语法入门
就是这样。
本文来自RxRead的博客,欢迎转载,如转载请注明。
欢迎共同探讨。
转载于:
抓取网页生成电子书(实体书太贵买?网上找书找到崩溃?知道了这些网站,3个步骤5分钟就可以解决)
网站优化 • 优采云 发表了文章 • 0 个评论 • 59 次浏览 • 2021-11-28 04:34
实体书太贵买不起?
网上找书找死机?
知道这些网站,3步5分钟就能解决你对电子书资源的需求,然后开启学习模式。
第 1 步:Kumo 搜索书籍
网站链接:/
一个知名的网站,资源丰富,下载源大部分是各种网盘和书籍网站。
打开网站,搜索你需要的书名,一般都会出现。
第二步:百度搜索“title+pdf”
如果你在云搜搜不到你需要的书,可以直接按照“书名+pdf”的形式开启全网搜索模式。
例如,如果我想找到“如何阅读一本书”这本书,只需在搜索栏中输入“如何阅读一本书PDF”即可。会弹出相关的网盘资源,点击下载。
第三步:主要资源网站疯狂搜索模式
如果经过以上2步,还是没有找到你需要的书,那么你就需要开始第三步了。
一般来说,完成以上两个步骤后,基本上能找到的所有电子书资源都可以找到。
如果还是找不到,可能是因为书太旧或太新,没有电子书资源,或者书太小众了。
不过,如果你还不放弃,还可以进行下面的步骤,疯狂搜索模式!
某某网站里总藏着一本书,也许是多搜几遍才出现的?
这是我用过的电子书搜索的网站:
PDF主页
网址链接:/jsjyhlw/
网站分享了很多分类的书籍,也有教材。电脑书籍应该是最多的。
2、陶连科,又名万千和记.com
网址链接:/s/
万千采集站集成了大学、考研等各类教材的网盘下载链接,种类非常齐全。
3、图书馆创世纪
4、BookZZ
网站链接:/
它被称为超过 200 万本书和超过 5000 万篇论文,可供免费下载。
5、ITbook
网址链接:itbook.download/
随着版权意识的兴起,越来越多的电子书被要求下架,许多搜索书籍网站被关闭。
更难找到您需要的电子书资源。
所以,努力赚钱买书吧!
免费不一定便宜,找书的机会成本也不低。
我开了这座山,种下了这棵树。如果你想从现在开始生活,请竖起大拇指!!! 查看全部
抓取网页生成电子书(实体书太贵买?网上找书找到崩溃?知道了这些网站,3个步骤5分钟就可以解决)
实体书太贵买不起?
网上找书找死机?
知道这些网站,3步5分钟就能解决你对电子书资源的需求,然后开启学习模式。
第 1 步:Kumo 搜索书籍
网站链接:/
一个知名的网站,资源丰富,下载源大部分是各种网盘和书籍网站。
打开网站,搜索你需要的书名,一般都会出现。

第二步:百度搜索“title+pdf”
如果你在云搜搜不到你需要的书,可以直接按照“书名+pdf”的形式开启全网搜索模式。
例如,如果我想找到“如何阅读一本书”这本书,只需在搜索栏中输入“如何阅读一本书PDF”即可。会弹出相关的网盘资源,点击下载。
第三步:主要资源网站疯狂搜索模式
如果经过以上2步,还是没有找到你需要的书,那么你就需要开始第三步了。
一般来说,完成以上两个步骤后,基本上能找到的所有电子书资源都可以找到。
如果还是找不到,可能是因为书太旧或太新,没有电子书资源,或者书太小众了。
不过,如果你还不放弃,还可以进行下面的步骤,疯狂搜索模式!
某某网站里总藏着一本书,也许是多搜几遍才出现的?
这是我用过的电子书搜索的网站:
PDF主页
网址链接:/jsjyhlw/
网站分享了很多分类的书籍,也有教材。电脑书籍应该是最多的。

2、陶连科,又名万千和记.com
网址链接:/s/
万千采集站集成了大学、考研等各类教材的网盘下载链接,种类非常齐全。

3、图书馆创世纪
4、BookZZ
网站链接:/
它被称为超过 200 万本书和超过 5000 万篇论文,可供免费下载。
5、ITbook
网址链接:itbook.download/
随着版权意识的兴起,越来越多的电子书被要求下架,许多搜索书籍网站被关闭。
更难找到您需要的电子书资源。
所以,努力赚钱买书吧!
免费不一定便宜,找书的机会成本也不低。
我开了这座山,种下了这棵树。如果你想从现在开始生活,请竖起大拇指!!!
抓取网页生成电子书(内手动下载多本提示会IP代理池的朋友可以帮忙验证下)
网站优化 • 优采云 发表了文章 • 0 个评论 • 159 次浏览 • 2021-11-27 13:14
突然发现这个网站,可以下载很多kindle电子书。观察了一下,有点像我前段时间写的爬行头条。
网站链接首页:,这次爬取排行榜链接:,打开观察发现排行榜的实际分页规则是,其中num代表页数。
具体代码如下:
#-*- coding: utf-8 -*-
import re
from requests.exceptions import RequestException
from bs4 import BeautifulSoup
import requests
from multiprocessing import Pool
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0',
'Content-Type': 'application/x-www-form-urlencoded',
'Connection': 'Keep-Alive',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
}
# 获取页面信息
def get_page_index(page_num):
url = 'https://bookset.me/page/'+ str(page_num) + '?rating=douban'
print(url)
try:
response = requests.get(url, headers = headers)
if response.status_code == 200:
return response.text
return None
except RequestException:
print('请求索引出错')
return None
# 获取当页所有书的URL
def parse_page_index(html):
pattern = re.compile(r'class="thumb-img focus"> ', re.S)
items = re.findall(pattern, html)
print(items)
print(type(items))
for item in items:
yield {
'href': item[0],
'title': item[1]
}
# 获取详情页信息
def get_page_detail(url):
try:
response = requests.get(url, headers = headers)
if response.status_code == 200:
return response.text
return None
except RequestException:
print('请求详情页出错', url)
return None
# 获取页面详情
def parse_page_detail(html, title):
soup = BeautifulSoup(html, 'lxml')
#匹配包含书链接的标签,而且取最后一个下载链接,以mobi格式下载为主
book_link_tag = soup.find_all("a", class_ = "mbm-book-download-links-link")[-1]
book_link_pattern = re.compile(r'href="(.*?)"', re.S)
# 书下载链接直接用正则表达式死活匹配匹配不出来,故作了两次转换
book_link = re.search(book_link_pattern, str(book_link_tag)).group(1)
editors_tag = soup.select(".mbm-book-details-editors-data")
for editor in editors_tag:
editors = editor.get_text().replace(' ','-')
# 书的名字格式
book_name = editors + '-' + title
# 获取文件格式
book_format = book_link[-4:]
down_load_book(book_link, book_name, book_format)
print(book_name)
print(book_link)
print(book_format)
# 下载书文件
def down_load_book(book_link, book_name, book_format):
print('正在下载:', book_link)
try:
response = requests.get(book_link, headers = headers)
if response.status_code == 200:
save_bookes(response.content, book_name, book_format)
return None
except RequestException:
print('请求文件出错', book_link)
return None
# 存储书文件
def save_bookes(content, book_name, book_format):
# 保存到当前目录下
file_path = '{0}.{1}'.format(book_name, book_format)
with open(file_path, 'wb') as f:
f.write(content)
f.close()
def main(page_num):
html = get_page_index(page_num)
for i in parse_page_index(html):
content = get_page_detail(i['href'])
parse_page_detail(content, i['title'])
# 为了调试方便,只抓取每一页第一本,加了break跳出当页所有书链接的循环
break
if __name__ == '__main__':
# 利用多线程,同时请求前5页下载
groups = [x for x in range(1, 6)]
pool = Pool()
pool.map(main, groups)
爬取结果:
操作结果
下载并保存结果
遇到的问题: 返回书页详情,包括书下载链接标签如下:
<a class="mbm-book-download-links-link" target="_blank" href="http://download.bookset.me/2006/5/%5B美%5D-卡勒德·胡赛尼-追风筝的人-9787208061644.mobi" data-original-title="" title="">
mobi下载
正则表达式用来匹配书的链接,但是找不到匹配。写的正则表达式匹配方式为:
<p>page_pattern = re.compile(r' 查看全部
抓取网页生成电子书(内手动下载多本提示会IP代理池的朋友可以帮忙验证下)
突然发现这个网站,可以下载很多kindle电子书。观察了一下,有点像我前段时间写的爬行头条。
网站链接首页:,这次爬取排行榜链接:,打开观察发现排行榜的实际分页规则是,其中num代表页数。
具体代码如下:
#-*- coding: utf-8 -*-
import re
from requests.exceptions import RequestException
from bs4 import BeautifulSoup
import requests
from multiprocessing import Pool
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0',
'Content-Type': 'application/x-www-form-urlencoded',
'Connection': 'Keep-Alive',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
}
# 获取页面信息
def get_page_index(page_num):
url = 'https://bookset.me/page/'+ str(page_num) + '?rating=douban'
print(url)
try:
response = requests.get(url, headers = headers)
if response.status_code == 200:
return response.text
return None
except RequestException:
print('请求索引出错')
return None
# 获取当页所有书的URL
def parse_page_index(html):
pattern = re.compile(r'class="thumb-img focus"> ', re.S)
items = re.findall(pattern, html)
print(items)
print(type(items))
for item in items:
yield {
'href': item[0],
'title': item[1]
}
# 获取详情页信息
def get_page_detail(url):
try:
response = requests.get(url, headers = headers)
if response.status_code == 200:
return response.text
return None
except RequestException:
print('请求详情页出错', url)
return None
# 获取页面详情
def parse_page_detail(html, title):
soup = BeautifulSoup(html, 'lxml')
#匹配包含书链接的标签,而且取最后一个下载链接,以mobi格式下载为主
book_link_tag = soup.find_all("a", class_ = "mbm-book-download-links-link")[-1]
book_link_pattern = re.compile(r'href="(.*?)"', re.S)
# 书下载链接直接用正则表达式死活匹配匹配不出来,故作了两次转换
book_link = re.search(book_link_pattern, str(book_link_tag)).group(1)
editors_tag = soup.select(".mbm-book-details-editors-data")
for editor in editors_tag:
editors = editor.get_text().replace(' ','-')
# 书的名字格式
book_name = editors + '-' + title
# 获取文件格式
book_format = book_link[-4:]
down_load_book(book_link, book_name, book_format)
print(book_name)
print(book_link)
print(book_format)
# 下载书文件
def down_load_book(book_link, book_name, book_format):
print('正在下载:', book_link)
try:
response = requests.get(book_link, headers = headers)
if response.status_code == 200:
save_bookes(response.content, book_name, book_format)
return None
except RequestException:
print('请求文件出错', book_link)
return None
# 存储书文件
def save_bookes(content, book_name, book_format):
# 保存到当前目录下
file_path = '{0}.{1}'.format(book_name, book_format)
with open(file_path, 'wb') as f:
f.write(content)
f.close()
def main(page_num):
html = get_page_index(page_num)
for i in parse_page_index(html):
content = get_page_detail(i['href'])
parse_page_detail(content, i['title'])
# 为了调试方便,只抓取每一页第一本,加了break跳出当页所有书链接的循环
break
if __name__ == '__main__':
# 利用多线程,同时请求前5页下载
groups = [x for x in range(1, 6)]
pool = Pool()
pool.map(main, groups)
爬取结果:
操作结果
下载并保存结果
遇到的问题: 返回书页详情,包括书下载链接标签如下:
<a class="mbm-book-download-links-link" target="_blank" href="http://download.bookset.me/2006/5/%5B美%5D-卡勒德·胡赛尼-追风筝的人-9787208061644.mobi" data-original-title="" title="">
mobi下载
正则表达式用来匹配书的链接,但是找不到匹配。写的正则表达式匹配方式为:
<p>page_pattern = re.compile(r'
抓取网页生成电子书(通过Python和爬虫,可以完成怎样的小工具?|知乎 )
网站优化 • 优采云 发表了文章 • 0 个评论 • 57 次浏览 • 2021-11-27 07:08
)
总有同学问,在学习了Python基础之后,不知道自己可以做些什么来提高。今天我就用一个小例子来告诉大家通过Python和爬虫可以完成什么样的小工具。
在知乎上,你一定关注了一些不错的专栏(比如Crossin的编程课堂)。但如果有一天,你最喜欢的受访者在网上被喷,你一怒之下删帖,停止更新,你就看不到这些好内容了。虽然这是小概率事件(以前没有发生过),但你可以准备下雨天。您可以将关注的专栏导出为电子书,这样您就可以离线阅读,而不必担心不小心删除帖子。
只需要工具和源码的可以拉到文章底部获取代码。
【最终效果】
运行程序,输入列的id,即网页地址上的路径:
之后程序会自动抓取列中的文章,并根据发布时间合并导出为pdf文件。
【实现思路】
本方案主要分为三部分:
抓取栏目文章地址列表抓取每篇文章的详细内容文章导出PDF1.抓取列表
在之前的文章爬虫必备工具中,掌握了它就可以解决一半的问题,介绍了如何分析网页上的请求。根据方法,我们可以使用开发者工具的Network功能,找出栏目页面的请求,获取明细列表:
https://www.zhihu.com/api/v4/c ... icles
观察返回的结果,我们发现通过next和is_end的值,可以得到下一个列表请求的地址(相当于页面向下滚动的触发效果),判断是否所有文章都有已获得。
data中的id、title、url就是我们需要的数据。因为url可以用id拼写出来,所以没有保存在我们的代码中。
使用 while 循环直到 文章 的所有 id 和 title 都被捕获并保存在文件中。
while True:
resp = requests.get(url, headers=headers)
j = resp.json()
data = j['data']
for article in data:
# 保存id和title(略)
if j['paging']['is_end']:
break
url = j['paging']['next']
# 按 id 排序(略)
# 导入文件(略)
2. 抢 文章
有了文章的所有id/url,后面的爬取就很简单了。文章 主要内容在 Post-RichText 标签中。
需要花点功夫的是一些文字处理,比如原页面的图片效果会添加noscript标签和data-actual、src="data:image等属性,我们要去掉才能正常显示。
url = 'https://zhuanlan.zhihu.com/p/' id
html = requests.get(url, headers=headers).text
soup = BeautifulSoup(html, 'lxml')
content = soup.find(class_='Post-RichText').prettify()
# 对content做处理(略)
with open(file_name, 'w') as f:
f.write(content)
至此,所有的内容都已经抓取完毕,可以在本地读取了。
3. 导出 PDF
为了方便阅读,我们使用 wkhtmltopdf pdfkit 将这些 HTML 文件打包成 PDF。
wkhtmltopdf是一个将HTML转为PDF的工具,需要单独安装。详情请参阅其官方网站。
pdfkit 是为此工具打包的 Python 库,可以从 pip 安装:
pip install pdfkit
使用起来非常简单:
# 获取htmls文件名列表(略)
pdfkit.from_file(sorted(htmls), 'zhihu.pdf')
这样就完成了整列的导出。
不仅是知乎的栏目,几乎大部分信息网站,通过1.抓取列表2.抓取详细内容采集数据两步。所以这段代码只要稍加修改就可以用于许多其他的网站。只是有些网站需要登录才能访问,所以需要在headers中设置cookie信息。另外,不同网站的请求接口、参数、限制都不一样,具体问题还是要具体问题具体分析。
这些爬虫的开发技巧可以在我们的爬虫实战课中学习。需要的请回复公众号中的实际爬虫
【源码获取】
获取知乎的专栏下载器源码,请在公众号(Crossin的编程课堂)回复关键字知乎
除了代码,还有本专栏打包好的PDF,欢迎阅读分享。
====
其他 文章 和回答:
欢迎搜索关注:Crossin的编程课堂
查看全部
抓取网页生成电子书(通过Python和爬虫,可以完成怎样的小工具?|知乎
)
总有同学问,在学习了Python基础之后,不知道自己可以做些什么来提高。今天我就用一个小例子来告诉大家通过Python和爬虫可以完成什么样的小工具。
在知乎上,你一定关注了一些不错的专栏(比如Crossin的编程课堂)。但如果有一天,你最喜欢的受访者在网上被喷,你一怒之下删帖,停止更新,你就看不到这些好内容了。虽然这是小概率事件(以前没有发生过),但你可以准备下雨天。您可以将关注的专栏导出为电子书,这样您就可以离线阅读,而不必担心不小心删除帖子。
只需要工具和源码的可以拉到文章底部获取代码。
【最终效果】
运行程序,输入列的id,即网页地址上的路径:


之后程序会自动抓取列中的文章,并根据发布时间合并导出为pdf文件。

【实现思路】
本方案主要分为三部分:
抓取栏目文章地址列表抓取每篇文章的详细内容文章导出PDF1.抓取列表
在之前的文章爬虫必备工具中,掌握了它就可以解决一半的问题,介绍了如何分析网页上的请求。根据方法,我们可以使用开发者工具的Network功能,找出栏目页面的请求,获取明细列表:
https://www.zhihu.com/api/v4/c ... icles

观察返回的结果,我们发现通过next和is_end的值,可以得到下一个列表请求的地址(相当于页面向下滚动的触发效果),判断是否所有文章都有已获得。
data中的id、title、url就是我们需要的数据。因为url可以用id拼写出来,所以没有保存在我们的代码中。

使用 while 循环直到 文章 的所有 id 和 title 都被捕获并保存在文件中。
while True:
resp = requests.get(url, headers=headers)
j = resp.json()
data = j['data']
for article in data:
# 保存id和title(略)
if j['paging']['is_end']:
break
url = j['paging']['next']
# 按 id 排序(略)
# 导入文件(略)

2. 抢 文章
有了文章的所有id/url,后面的爬取就很简单了。文章 主要内容在 Post-RichText 标签中。
需要花点功夫的是一些文字处理,比如原页面的图片效果会添加noscript标签和data-actual、src="data:image等属性,我们要去掉才能正常显示。
url = 'https://zhuanlan.zhihu.com/p/' id
html = requests.get(url, headers=headers).text
soup = BeautifulSoup(html, 'lxml')
content = soup.find(class_='Post-RichText').prettify()
# 对content做处理(略)
with open(file_name, 'w') as f:
f.write(content)

至此,所有的内容都已经抓取完毕,可以在本地读取了。
3. 导出 PDF
为了方便阅读,我们使用 wkhtmltopdf pdfkit 将这些 HTML 文件打包成 PDF。
wkhtmltopdf是一个将HTML转为PDF的工具,需要单独安装。详情请参阅其官方网站。
pdfkit 是为此工具打包的 Python 库,可以从 pip 安装:
pip install pdfkit
使用起来非常简单:
# 获取htmls文件名列表(略)
pdfkit.from_file(sorted(htmls), 'zhihu.pdf')

这样就完成了整列的导出。
不仅是知乎的栏目,几乎大部分信息网站,通过1.抓取列表2.抓取详细内容采集数据两步。所以这段代码只要稍加修改就可以用于许多其他的网站。只是有些网站需要登录才能访问,所以需要在headers中设置cookie信息。另外,不同网站的请求接口、参数、限制都不一样,具体问题还是要具体问题具体分析。
这些爬虫的开发技巧可以在我们的爬虫实战课中学习。需要的请回复公众号中的实际爬虫
【源码获取】
获取知乎的专栏下载器源码,请在公众号(Crossin的编程课堂)回复关键字知乎
除了代码,还有本专栏打包好的PDF,欢迎阅读分享。
====
其他 文章 和回答:
欢迎搜索关注:Crossin的编程课堂

抓取网页生成电子书(大庆油田批量推广应用两万套革新产品怎样将网页制作成电子书?)
网站优化 • 优采云 发表了文章 • 0 个评论 • 52 次浏览 • 2021-11-26 16:27
kdomestic_1:大庆油田","k":"大庆油田","u":""}],"title":"大庆油田批量推广应用2万套创新产品。如何将网页制作成电子书?--->> 使用eBook_Workshop-v1.5,超级简单,有需要我会带的,传给你。
如何制作电子书的网页模板?--->> 您可以使用frontpage 来制作它。只学一点点。
如何制作电子书页面?--->> 这里有一些建议: 学习网页的工具有很多,Microsoft FrontPage 2000 DreamWeaver Fireworks Flash HomeSite 4.5HotMetal Pro 4.0 等等。1:我们先来看看HTML。教程,只做一些了解,不需要死记硬背。(网页是做什么的?文字是做什么的...
如何将网站上的内容制作成电子书?--->> 哈哈告诉你最简单的方法,比如:我现在打开一个网页,看到里面的文字内容很精彩,我想把那个文字弄下来但是不知道怎么做,先最重要的是,写下那个文本 先复制它,然后点击*开始*按钮/然后点击*so程序*/点击*附件*/再次点击*记事本,然后粘贴你想要的文本/粘贴完成/是的,一个文件(F)/保存(S)就可以了,简单,格式会自动变成电子书文件。我一直这样使用它。如果您认为可以使用我的方法,请采纳。我觉得可以!
如何制作 HTML 电子书.!! -?--->> 复制以下代码之间的电子书内容,保存为html格式,就可以了
有没有办法把网页做成电子书?--->> 一般使用chm格式将网页htm文件制作成电子书。您可以在 Internet 上找到免费软件。现在很多电子书制作软件都可以将网页转成chm、exe格式的电子书。以书籍为例,使用免费软件“Catalog Maker 2007 beta3”提供的htm转chm功能
怎么把下载的网页做成电子书?-?--->> 网上找了集成windows帮助文件的软件,记得有个软件缩写为HHW可以做到这一点。它可以将网页制作成Windows 帮助文件,可以作为电子书查看。哦
紧急!!!如何将带有链接的网页制作成电子书???-? --->> 尝试电子书工作坊。
如何将网页制作成TXT格式并在Android手机上作为电子书观看?--->> 打开一个空白的TXT,CTRL+A,然后CTRL+C,然后在TXT上CTRL+V,就可以了
如何制作电子书网页-?--->> 最简单的是创建一个文本并将文本更改为html。需要使用Dreamwhere的困难 查看全部
抓取网页生成电子书(大庆油田批量推广应用两万套革新产品怎样将网页制作成电子书?)
kdomestic_1:大庆油田","k":"大庆油田","u":""}],"title":"大庆油田批量推广应用2万套创新产品。如何将网页制作成电子书?--->> 使用eBook_Workshop-v1.5,超级简单,有需要我会带的,传给你。
如何制作电子书的网页模板?--->> 您可以使用frontpage 来制作它。只学一点点。
如何制作电子书页面?--->> 这里有一些建议: 学习网页的工具有很多,Microsoft FrontPage 2000 DreamWeaver Fireworks Flash HomeSite 4.5HotMetal Pro 4.0 等等。1:我们先来看看HTML。教程,只做一些了解,不需要死记硬背。(网页是做什么的?文字是做什么的...
如何将网站上的内容制作成电子书?--->> 哈哈告诉你最简单的方法,比如:我现在打开一个网页,看到里面的文字内容很精彩,我想把那个文字弄下来但是不知道怎么做,先最重要的是,写下那个文本 先复制它,然后点击*开始*按钮/然后点击*so程序*/点击*附件*/再次点击*记事本,然后粘贴你想要的文本/粘贴完成/是的,一个文件(F)/保存(S)就可以了,简单,格式会自动变成电子书文件。我一直这样使用它。如果您认为可以使用我的方法,请采纳。我觉得可以!
如何制作 HTML 电子书.!! -?--->> 复制以下代码之间的电子书内容,保存为html格式,就可以了
有没有办法把网页做成电子书?--->> 一般使用chm格式将网页htm文件制作成电子书。您可以在 Internet 上找到免费软件。现在很多电子书制作软件都可以将网页转成chm、exe格式的电子书。以书籍为例,使用免费软件“Catalog Maker 2007 beta3”提供的htm转chm功能
怎么把下载的网页做成电子书?-?--->> 网上找了集成windows帮助文件的软件,记得有个软件缩写为HHW可以做到这一点。它可以将网页制作成Windows 帮助文件,可以作为电子书查看。哦
紧急!!!如何将带有链接的网页制作成电子书???-? --->> 尝试电子书工作坊。
如何将网页制作成TXT格式并在Android手机上作为电子书观看?--->> 打开一个空白的TXT,CTRL+A,然后CTRL+C,然后在TXT上CTRL+V,就可以了
如何制作电子书网页-?--->> 最简单的是创建一个文本并将文本更改为html。需要使用Dreamwhere的困难
抓取网页生成电子书(网络书籍抓取器是一款能帮助用户下载指定网页的某)
网站优化 • 优采云 发表了文章 • 0 个评论 • 123 次浏览 • 2021-11-26 16:25
在线图书抓取器是一种可以帮助用户在指定网页上下载某本书和某章的软件。在线图书抓取器可以快速下载小说。同时软件支持断点续传功能,非常方便,很有必要。可以下载使用。
特征
您可以提取指定小说目录页的章节信息并进行调整,然后按照章节顺序抓取小说内容,然后以最合适的方式进行合并。抓取过程可以随时中断,关闭程序后可以继续上一个任务。
软件特点
1、 章节调整:提取目录后,可以进行移动、删除、倒序等调整操作。调整会直接影响最终的书籍,也会以调整后的章节顺序输出。
2、自动重试:在爬取过程中,由于网络因素,可能会出现爬取失败的情况。程序可能会自动重试直到成功,也可以暂时中断爬取(中断后关闭程序不影响进度),等网络好了再试。
3、停止和恢复:抓取过程可以随时停止,退出程序后不影响进度(章节信息会保存在记录中,运行程序后可以恢复抓取下一次。注意:您需要先使用停止按钮中断然后退出程序,如果直接退出,将不会恢复)。
4、 一键抓取:又称“哑模式”,基本可以实现自动抓取合并功能,直接输出最终的文本文件。前面可能需要输入最基本的网址、保存位置等信息(会有明显的操作提示),调整章节后也可以使用一键抓取,抓取合并操作会自动完成.
5、适用网站:已收录10个适用网站(选择后可以快速打开网站找到您需要的书),并自动应用相应的代码,也可以测试其他小说网站,如果一起使用,可以手动添加到设置文件中,以备后用。
6、 制作电子书方便:可以在设置文件中添加每个章节名称的前缀和后缀,为后期制作电子书的目录带来极大的方便。
指示
1、首先进入你要下载的小说的网页。
2、输入书名,点击目录提取。
3、设置保存路径,点击开始爬取开始下载。 查看全部
抓取网页生成电子书(网络书籍抓取器是一款能帮助用户下载指定网页的某)
在线图书抓取器是一种可以帮助用户在指定网页上下载某本书和某章的软件。在线图书抓取器可以快速下载小说。同时软件支持断点续传功能,非常方便,很有必要。可以下载使用。

特征
您可以提取指定小说目录页的章节信息并进行调整,然后按照章节顺序抓取小说内容,然后以最合适的方式进行合并。抓取过程可以随时中断,关闭程序后可以继续上一个任务。
软件特点
1、 章节调整:提取目录后,可以进行移动、删除、倒序等调整操作。调整会直接影响最终的书籍,也会以调整后的章节顺序输出。
2、自动重试:在爬取过程中,由于网络因素,可能会出现爬取失败的情况。程序可能会自动重试直到成功,也可以暂时中断爬取(中断后关闭程序不影响进度),等网络好了再试。
3、停止和恢复:抓取过程可以随时停止,退出程序后不影响进度(章节信息会保存在记录中,运行程序后可以恢复抓取下一次。注意:您需要先使用停止按钮中断然后退出程序,如果直接退出,将不会恢复)。
4、 一键抓取:又称“哑模式”,基本可以实现自动抓取合并功能,直接输出最终的文本文件。前面可能需要输入最基本的网址、保存位置等信息(会有明显的操作提示),调整章节后也可以使用一键抓取,抓取合并操作会自动完成.
5、适用网站:已收录10个适用网站(选择后可以快速打开网站找到您需要的书),并自动应用相应的代码,也可以测试其他小说网站,如果一起使用,可以手动添加到设置文件中,以备后用。
6、 制作电子书方便:可以在设置文件中添加每个章节名称的前缀和后缀,为后期制作电子书的目录带来极大的方便。
指示
1、首先进入你要下载的小说的网页。
2、输入书名,点击目录提取。
3、设置保存路径,点击开始爬取开始下载。