干货教程:5118站长工具箱:SEO数据分析浏览器插件
优采云 发布时间: 2022-11-01 07:41干货教程:5118站长工具箱:SEO数据分析浏览器插件
站长都知道,玩网站除了技术和资源外,最重要的就是创作内容。比如技术就像网站的骨架,内容就是它的皮肤。能不能让百度蜘蛛点赞,转化后让访问者经常回访,当然首先要看的是外在美!一般来说,你要么可以写出高质量的原创文章,要么有能力获取高质量的文章。不......
摩天大楼内容助手:TF-IDF关键词布局分析优化工具
摩天内容助手是一款基于搜索引擎核心关联算法,综合分析网页质量短板的单页SEO排名的强大工具。最新AI智能算法,中英文深度定制,兼容主流搜索引擎,纯白帽子排名稳定!摩天后台系统对竞争对手的数据进行五道处理,包括中文分词、TFIDF关键词权重计算、综合内容...
斗牛SEO工具:收录、排名查询、关键词挖矿工具
SEO工具是一款经典的SEO工具,提供批量查询采集、关键词排名查询、关键词挖掘、索引检查、站群索引检查、关键词挖掘、状态码查询、分词工具等功能。该工具具有批处理速度快、多线程运行、智能原创设置、无需安装Net和JAVA环境等特点。这就是站长的力量...
干货教程:一键下载:将知乎专栏导出成电子书
总有同学问,学了 Python 的基础知识后,不知道能做些什么来提高它。今天就用一个小例子来告诉大家,通过Python和爬虫可以完成什么样的小工具。
在知乎,你一定关注过一些不错的专栏(比如Crossin的编程课堂)
)。但万一哪天,你喜欢的答主被喷在网上,你一气之下删帖停止更新,这些好内容就看不到了。虽然这是小概率事件(但不会发生),但要注意,可以将关注的栏目导出为电子书,这样可以离线阅读,不怕误删帖。
如果只需要工具和源码,可以拉到文章底部获取代码。
【最终效果】
运行程序,输入列的id,就是网页地址上的路径:
之后程序会自动抓取列中的文章,并根据发布时间合并导出为pdf文件。
【实现思路】
本方案主要分为三个部分:
爬取列文章地址列表
抓取每个文章的详细内容
导出 PDF
1. 获取列表
如何分析网页上的请求在前面的 文章 中有所描述。按照方法,我们可以利用开发者工具的Network功能,找出栏目页面的请求,得到明细列表:
https://www.zhihu.com/api/v4/columns/crossin/articles
观察返回的结果可以发现,通过next和is_end的值,可以得到下一个列表请求的地址(相当于向下滚动页面的触发效果),判断是否全部文章已获得。
data中的id、title、url就是我们需要的数据。因为 url 可以用 id 拼出,所以我们的代码中没有保存。
使用 while 循环,直到 文章 的所有 id 和标题都被捕获并保存在文件中。
while True:
resp = requests.get(url, headers=headers)
j = resp.json()
data = j['data']<br /> for article in data:<br /> # 保存id和title(略)
if j['paging']['is_end']:<br /> break
url = j['paging']['next']<br /> # 按 id 排序(略)<br /> # 导入文件(略)
2. 抓取 文章
有了 文章 的所有 ids/urls,后面的抓取就很简单了。文章正文内容在 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()<br /># 对content做处理(略)<br />with open(file_name, 'w') as f:
<p>
f.write(content)</p>
至此,所有内容都已经爬取完毕,可以在本地读取了。
3.导出PDF
为了方便阅读,我们使用 wkhtmltopdf + pdfkit 将这些 HTML 文件打包成 PDF。
wkhtmltopdf 是一个 HTML to PDF 工具,需要单独安装。详情请参考其官网介绍。
pdfkit 是一个包装了这个工具的 Python 库,可以从 pip 安装:
pip install pdfkit
使用简单:
# 获取htmls文件名列表(略)<br />pdfkit.from_file(sorted(htmls), 'zhihu.pdf')
这样就完成了整个列的导出。
不仅是知乎列,几乎大部分信息类型网站,都是通过1.抓取列表2.抓取详细内容这两个步骤的采集数据。所以这段代码稍加修改就可以用在很多其他的网站s上。只是有些网站需要登录才能访问,那么就需要在headers中设置cookie信息。另外,不同网站的请求接口、参数、限制等都不一样,具体问题还是需要分析的。
这些爬虫的开发技巧可以在我们的爬虫实战课程中学习。如有需要请在公众号回复实际爬虫
【源码下载】
获取知乎栏目下载器源码,请在公众号(Crossin的编程课堂)回复关键字知乎
除了代码,还提供了本专栏的打包PDF,欢迎阅读和分享。
如果您想了解更多视频课程、问答群等服务,请对号码中的回复码进行操作
代码相关问题可以在论坛发帖