我想在已弃用(过时)的文学论坛e-bane.net中找到我的文章。一些论坛模块被禁用,我无法获得作者的文章列表。此外,该网站没有被 Google、Yndex 等搜索引擎收录。
找到我所有文章的唯一方法是打开网站的存档页面(图 1)。然后我必须选择特定的年份和月份 - 例如2013 年1 月(图 1)。然后我必须检查每篇文章(图2)是否在开头写了我的昵称-pa4080(图3)。但是有几千篇文章。
我已经阅读了以下几个主题,但没有一个解决方案适合我的需求:
我将发布我自己的解决方案。但对我来说很有趣: 有没有更优雅的方法来解决这个任务?
为了解决这个任务,我创建了下一个主要使用 CLI 工具的简单bash 脚本
wget
。该脚本具有三个功能:
第一个函数
get_url_map()
使用wget
as--spider
(这意味着它只会检查页面是否存在)并将创建具有深度级别的递归-r
URL 。(可以在此处找到另一个示例:将网站转换为 PDF)。在当前情况下,它包含大约 20 000 个 URL。$MAP_FILE
$TARGET_URL
-l2
$MAP_FILE
第二个功能
filter_url_map()
将简化$MAP_FILE
. 在这种情况下,我们只需要包含字符串的行(URL),article&sid
它们大约是 3000。更多的想法可以在这里找到:如何从文本文件的行中删除特定的单词?第三个函数
get_key_urls()
将使用wget -qO-
(作为命令curl
-示例)从 中输出每个 URL 的内容,$MAP_FILE
并尝试在其中查找任何$KEY_WORDS
内容。如果$KEY_WORDS
在任何特定 URL 的内容中建立了任何一个,则该 URL 将保存在$OUT_FILE
.在工作过程中,脚本的输出看起来如下图所示。如果有两个关键字,大约需要 63 分钟,如果只搜索一个关键字,大约需要42 分钟。
script.py
:requirement.txt
:这是脚本的 python3 版本(在 Ubuntu 17.10上的 python3.5 上测试)。
如何使用:
script.py
,包文件是requirement.txt
.pip install -r requirement.txt
。python3 script.py pa4080
它使用了几个库:
进一步开发程序需要知道的事情(除了所需包的文档):
这个怎么运作:
一些想法,因此可以进一步发展
这不是最优雅的答案,但我认为它比使用 bash 答案更好。
我根据@karel提供的答案重新创建了我的脚本。现在脚本使用而不是. 结果它变得明显更快。
lynx
wget
当前版本在有两个搜索关键字时执行相同的工作 15 分钟,如果我们只搜索一个关键字,则只需8 分钟。这比@dan提供的Python解决方案要快。
此外,还
lynx
可以更好地处理非拉丁字符。