一、前言
本贴仅用于学习交流方法。如有违规,请版主大大删除。
我写这篇帖子的灵感来自于看到了【waahah】大佬发布的某乎盐选文章下载器,其贴链接为:知乎盐选文章下载
https://www.52pojie.cn/thread-1718850-1-1.html
(出处: 吾爱破解论坛)
由于这位大佬只是把成品放了上了,没有给出其源代码,于是我这个小白就斗胆尝试分析了一波,下面我将分享我的学习过程。
如【waahah】大佬觉得不合适,请告知我,我会立即删帖,以示尊重。
二、思路分析
以下面的文章为例,可以看到这是一篇需要vip才可以看的文章
那么我们如何才能不花钱白嫖呢?这里就需要用到一个解析网站:https://mfyx.top/
在这里只要将文章的url地址粘贴进去就可以呈现出整篇文章。
那么接下来我需要做的是分析网页源代码,并把文章里面关键的标题、简介、段落等
有用的关键性的信息爬取出来就可以了。
三、实现过程
调出网页抓包工具,分析下会发现在将url地址粘贴并搜索之后,会出现一个之前没有的数据包search
发现里面的响应信息恰好是我们要看的这篇文章的相关内容
而之后在跳转到这篇文章后就会发现,无论是哪篇文章,其跳转后的地址都为https://mfyx.top/archives/10114这种类型
是不是会有些眼熟,这里的数字不就是search数据包里面的id么?接下来就迎刃而解了。
四、源代码
我这里为了方便一些,就把爬取到的数据直接写在txt文件中了。
[Python] 纯文本查看 复制代码 #!/usr/bin/env/ python
# -*- coding:utf-8 -*-
# [url=home.php?mod=space&uid=686208]@AuThor[/url] : zxy
import time
import requests
from lxml import etree
url = "https://mfyx.top/api/search"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36"
}
org_url = input("请输入知乎盐选文章的分享地址:")
data = {"url": [org_url]}
response = requests.post(url=url, json=data, headers=headers).json()
# print(response)
arc_id = response["id"]
title = response["title"].replace("?", "")
des = response["description"]
new_url = f"https://mfyx.top/archives/{arc_id}"
res = requests.get(new_url, headers=headers).text
# print(res)
# xpath://*[@id="lightgallery"]/p
html = etree.HTML(res)
p = html.xpath('//*[@id="lightgallery"]/p/text()')
# print(type(p), p)
print(f"小主为您找到文章的简介:\n{des}")
time.sleep(3)
start = time.time()
with open(f"{title}.txt", "w", encoding="utf-8") as f:
for each_line in p:
f.write(each_line + "\n")
end = time.time()
print(f"[{title}]文章下载完毕,共耗时{end - start:.2f}秒")
五、成品
因【waahah】大佬的帖子中已经有做好的成品了,且是下载为pdf格式的文件。我这里就不再打包了,如果有需要的就去【waahah】大佬的帖子:
https://www.52pojie.cn/thread-1718850-1-1.html 下载吧~~~ |