【问题标题】:How to get all emails from a page individually如何分别从一个页面获取所有电子邮件
【发布时间】:2021-04-01 14:30:28
【问题描述】:

我正在尝试从特定页面获取所有电子邮件并将它们分成一个单独的变量,甚至更好的字典。这是一些代码。

import requests
import re
import json
from bs4 import BeautifulSoup
page = "http://www.example.net"
info = requests.get(page)
if info.status_code == 200:
    print("Page accessed")
else:
    print("Error accessing page")
code = info.content
soup = BeautifulSoup(code, 'lxml')
allEmails = soup.find_all("a", href=re.compile(r"^mailto:"))
print(allEmails)
sep = ","
allEmailsStr = str(allEmails)
print(type(allEmails))
print(type(allEmailsStr))
j = allEmailsStr.split(sep, 1)[0]
print(j)

请原谅可怜的变量名,因为我把它放在一起,所以它本身就可以了。示例网站的输出将类似于

[<a href="mailto:k@domain.xyz">k</a>, <a href="mailto:russia@siberia.net">kolyma</a>, <a href="mailto:house@chinatown.com">location</a>, <a href="mailto:sophia@bulgaria.cf">balkans</a>]

所以如果我运行问题,它只会返回

[<a href ="mailto:k@domain.xyz">k</a>

但如果我希望它单独返回那里的每封电子邮件,我该怎么做?

【问题讨论】:

    标签: python python-3.x beautifulsoup python-re


    【解决方案1】:

    要获取电子邮件字符串,您可以尝试:

    emails = []
    
    for email_link in allEmails:
        emails.append(email_link.get("href").replace('mailto:', ''))
    
    print(emails)
    

    【讨论】:

      【解决方案2】:

      根据你的预期输出,你可以使用BeautifulSoupunwrap函数

      allEmails = soup.find_all("a", href=re.compile(r"^mailto:"))
      for Email in allEmails:
         print(Email.unwrap()) #This will print the whole element along with tag
                               # <a href="mailto:k@domain.xyz">k</a>
      

      【讨论】:

        猜你喜欢
        • 2017-09-16
        • 2016-04-16
        • 2016-04-06
        • 1970-01-01
        • 1970-01-01
        • 2012-11-16
        • 2014-09-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多