Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从电子邮件中检索超链接并访问它?_Python_Email_Hyperlink_Beautifulsoup - Fatal编程技术网

Python 如何从电子邮件中检索超链接并访问它?

Python 如何从电子邮件中检索超链接并访问它?,python,email,hyperlink,beautifulsoup,Python,Email,Hyperlink,Beautifulsoup,我正在尝试使用此python代码,该代码将从我来自和居住的法国的imap.laposte.net检索我的电子邮件,然后按照邮件中给出的链接进行操作,然后将指定页面之一发送回电子邮件地址。 工作的第一部分已经可以了;我在网上找到了几个关于使用imaplib检索和选择所需内容的示例;我相信,学习如何发送我将访问的页面也会很容易。 但问题是,给定电子邮件中的链接,我如何选择它并访问给定页面? 我在数据[0].split中以字符串的形式检索到了电子邮件,我使用Beauty Soup处理该字符串,就像处理

我正在尝试使用此python代码,该代码将从我来自和居住的法国的imap.laposte.net检索我的电子邮件,然后按照邮件中给出的链接进行操作,然后将指定页面之一发送回电子邮件地址。 工作的第一部分已经可以了;我在网上找到了几个关于使用imaplib检索和选择所需内容的示例;我相信,学习如何发送我将访问的页面也会很容易。 但问题是,给定电子邮件中的链接,我如何选择它并访问给定页面? 我在数据[0].split中以字符串的形式检索到了电子邮件,我使用Beauty Soup处理该字符串,就像处理网页一样,以便从中提取电子邮件中包含的url:

import imaplib, rfc822, sys
from bs4 import BeautifulSoup
server  ='imap.laposte.net'
username='username'
password='VeryStrong'
M = imaplib.IMAP4(server)
M.login(username, password)
M.select()
typ, data = M.search(None, 'ALL')
for num in data[0].split():
    typ, data = M.fetch(num, '(RFC822)')
    pos1=data[0][1][0:1000].find('entre-infideles')
    if pos1 != -1: 
        print '06ReadImap: Message %s' % (num)
        pos2=data[0][1][pos1:].find('Subject')
        pos3=data[0][1][pos1+pos2:].find('Subject: <PUB>')
        pos4=data[0][1][pos1+pos2+pos3:].find('votre profil')
        if pos4 != -1:
            print '06ReadImap: Pos4(votre profil)=%i' % (pos2+pos3+pos4)
            print data[0][1][pos1+pos2+pos3:pos1+pos2+pos3+pos4+12]
            soup=BeautifulSoup(data[0][1])
            for link in soup.find_all('a'):
                print(link.get('href'))
            sys.exit(0)
问题是,它给了我很多链接,当然,所有这些都包含在电子邮件中,但它们是不完整的,我不能使用它们作为URL来“获取”带有任何HTLM内容的页面;它指出:

$ python ./S.py
06ReadImap: Message 8
06ReadImap: Pos4(votre profil)=625
Subject: <PUB> salma311 a =?utf-8?Q?visit=C3=A9?= votre profil
3D"http://fr.supe=
3D"h=
3D"htt=
3D"http://fr.superboxy.me/tracking_unitary/2/111740993/=
3D"http://fr.super=
3D"http://fr.superboxy.me/tracking_unitary/2/111740993/=
...
..
.
如何从电子邮件中的链接检索完整的URL? 非常感谢,,
David

您需要先撤消邮件的内容传输编码。这一个似乎是引用的可打印编码,这让您的HTML解析器感到困惑

        # quoted_printable_decode python
        result = quopri.decodestring(data[0][1])
        #
        soup=BeautifulSoup(result)
        print "\n---------------- Extracting all the URLs found within page 1’s <a> tags :".encode('utf8')
        i=0
        for link in soup.find_all('a'):
            i=i+1
            print(link.get('href'))
就这样,
D.

确定要包括用户名和密码吗?谢谢jonrsharpe;我只是检查了它是否像我描述的那样工作,我确实粘贴了所有内容。如果它们是真实的凭据,请注意它们仍然可以在编辑历史记录中看到,因此应该无效。我甚至不知道如何做…更改您的密码?抱歉,我什么都不懂;我只是读了一两次关于内容传输编码的书,但我不知道如何处理它;你能给我一个线索吗?一旦你下载了你的邮件,你会想用pythons邮件库来解析它;再见