我正在为我的学校做一个项目,我想在其中比较诈骗邮件。我找到了这个网站: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(使用前将#替换为@)