编写一个 python 脚本,递归地遍历页面上的链接

2024-02-26

我正在为我的学校做一个项目,我想在其中比较诈骗邮件。我找到了这个网站:http://www.419scam.org/emails/ http://www.419scam.org/emails/现在我想做的是将每个骗局保存在单独的文档中,然后我可以分析它们。 到目前为止,这是我的代码:

import BeautifulSoup, urllib2

address='http://www.419scam.org/emails/'
html = urllib2.urlopen(address).read()
f = open('test.txt', 'wb')
f.write(html)
f.close()

这以文本格式保存了整个 html 文件,现在我想删除该文件并将 html 链接的内容保存到诈骗中:

<a href="2011-12/01/index.htm">01</a> 
<a href="2011-12/02/index.htm">02</a> 
<a href="2011-12/03/index.htm">03</a>

etc.

如果我明白了,我仍然需要更进一步并打开保存另一个 href。知道如何在一个 python 代码中做到这一点吗?

谢谢你!


您在 BeautifulSoup 中选择了正确的工具。从技术上讲,您可以在一个脚本中完成所有操作,但您可能想要对其进行分段,因为看起来您将处理数以万计的电子邮件,所有这些都是单独的请求 - 这将需要一段时间尽管。

这一页 http://www.crummy.com/software/BeautifulSoup/bs4/doc/会对您有很大帮助,但这里只是一个帮助您入门的小代码片段。这将获取作为电子邮件索引页的所有 html 标记,提取其 href 链接并在 url 前面附加一些内容,以便可以直接访问它们。

from bs4 import BeautifulSoup
import re
import urllib2
soup = BeautifulSoup(urllib2.urlopen("http://www.419scam.org/emails/"))
tags = soup.find_all(href=re.compile("20......../index\.htm")
links = []
for t in tags:
    links.append("http://www.419scam.org/emails/" + t['href'])

're' 是Python 的正则表达式模块。在第五行中,我告诉 BeautifulSoup 在 soup 中查找 href 属性与正则表达式匹配的所有标签。我选择此正则表达式是为了仅获取电子邮件索引页面,而不是该页面上的所有 href 链接。我注意到索引页面链接的所有 URL 都具有这种模式。

拥有所有正确的“a”标签后,我循环遍历它们,通过执行 t['href'] 从 href 属性中提取字符串,并将 URL 的其余部分附加到字符串的前面,以获取原始字符串 URL。

通读该文档,您应该了解如何扩展这些技术来抓取单独的电子邮件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

编写一个 python 脚本,递归地遍历页面上的链接 的相关文章

随机推荐

  • Chrome 中大图像的淡入淡出

    我在大图像中淡入淡出时遇到一些问题 但仅限于 Chrome 这是绝对基本的设置 document ready function var img new Image img hide load function this fadeIn 300
  • GWT:如何抑制超链接,以便它不会更改我的历史标记

    我想让我的超链接像按钮一样工作 仅响应 Click 事件 但是 当您单击它们时 它们会自动更改历史记录令牌 这会弄乱我的应用程序中的历史记录机制 有没有办法抑制超链接的默认行为 以便它不会更改历史标记 我尝试将 targetHistoryT
  • Javascript 数组排序是异步的吗? [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 Javascript Array sort 函数是异步的吗 我不这么认为 但是当我运行以下代码时 它似乎确实是 alph
  • vs code 终端每次都会更改为 powershell [重复]

    这个问题在这里已经有答案了 在 Vs code 更新 1 60 0 后 终端打开 powershell 但默认保持不变 git bash 如果我创建新终端 那么它会打开 git bash 当我启动应用程序时 它看起来像 然后我必须创建新的
  • Python初始化

    我有这个代码 def init self a b c d self a a self b b etc 我正在考虑将其替换为 def init self a b c d args locals for key in args self dic
  • ASP .NET MVC5 中的 CORS

    我有一个 MVC 项目 其中有几个想要公开跨域的 JSON 控制器方法 不是整个网站 只是这两种方法 我基本上想要这篇文章中针对 cors 所说的确切内容 http enable cors org server aspnet html ht
  • 过滤 fiddler 仅捕获特定域的请求

    我不确定如何修改 CustomRules js 文件以仅显示特定域的请求 有谁知道如何做到这一点 这很容易做到 在过滤器选项卡上 单击 仅在过滤器包含时显示 然后键入您的域
  • 如何使用 Enthought python (Canopy) 安装 CVXOPT

    在开始之前 让我为这篇文章添加替代标题 如何使用 Intel MKL 编译 CVXOPT 如何更改 CVXOPT 中的 init py 以使用 Intel MKL 进行编译 让我解释一下这个问题 我正在尝试使用 Enthought pyth
  • JUnit4 和 JUnit5 测试未在 IntelliJ 中运行

    我试图在 IntelliJ IDEA 2017 1 5 的同一个项目中使用 JUnit4 和 JUnit5 测试 到目前为止 所有测试都基于 JUnit4 我添加了jupiter platform and vintage对我的 pom xm
  • clang++ 和 O2 的未定义引用

    我正在一个项目上尝试 CLang 3 4 和 libc 但在发布模式下出现奇怪的链接错误 home wichtounet dev eddic src ast Operator cpp 17 error undefined reference
  • 如何调整规范模式来评估对象的组合?

    我知道规范模式描述了如何使用类的层次结构来实现ISpecification
  • Xcode 并排代码比较选项在哪里?

    从 Xcode 13 开始 代码比较默认不再是并排差异 一定还有办法做到这一点 我正在努力寻找选择 点击Code Review 屏幕截图上的蓝色按钮 一个箭头指向左侧 另一个箭头指向右侧 或在View Menu 然后 在第二个图标上 选择S
  • 关闭 Twitter Bootstrap Navbar 过渡动画

    就像http twitter github com bootstrap http twitter github com bootstrap 我现在工作的网站是响应式的 我想删除过渡动画 当我单击折叠的导航栏菜单按钮时 上图是我所问问题的截图
  • 如何使用 IIS 为 Amazon EC2 服务器启用 FTP 被动模式

    我最初在使用 pagelime 时遇到了问题 它要求用户使用被动模式并且不支持主动模式 让主动模式工作起来非常简单 但让被动工作模式需要付出更多的努力 我正在使用带有 IIS 的 Amazon EC2 服务器以及 FTP 站点 以下链接最终
  • 使用Composer的开发/生产切换时如何正确部署?

    Composer 可以选择仅在开发时加载多个依赖项 因此这些工具不会安装在生产环境中 在实时服务器上 理论上 这对于仅在开发中有意义的脚本非常方便 例如测试 假数据工具 调试器等 解决的方法是添加一个额外的require dev使用开发中所
  • 在循环中连接 PyQt4 中的槽和信号

    我尝试使用 PyQt4 构建一个计算器 但从按钮连接 clicked 信号无法按预期工作 我为 for 循环内的数字创建按钮 然后尝试连接它们 def init self for i in range 0 10 self numberBut
  • 类似于 C 中的宏的功能

    我试图理解像宏这样的函数的概念 但是有几点让我困惑 例如说我们有 define Max a b a gt b a b 我这样称呼它 int i Max 4 5 这将评估相当于的条件表达式a gt b 如果是则a 否则b 但我对 Max 函数
  • 在 JavaFX 中安全地关闭/删除 ImageView 文件

    我有一个 JavaFX 应用程序 它显示 VBox 中某个文件夹中的所有图像 VBox 的构建如下 try DirectoryStream
  • Android 应用程序谷歌地图显示灰色瓷砖而不是地图!

    我在这里完美地遵循了本指南 并再次浏览了一遍 但是当我在 google avd 上运行该程序时 页面加载 但只出现灰色图块 并且没有显示应有的地图 有人有什么想法吗 Thanks 几天前我遇到了同样的问题 并发现与 APK 签名相关的某些内
  • 编写一个 python 脚本,递归地遍历页面上的链接

    我正在为我的学校做一个项目 我想在其中比较诈骗邮件 我找到了这个网站 http www 419scam org emails http www 419scam org emails 现在我想做的是将每个骗局保存在单独的文档中 然后我可以分析