Python web自动化从网页获取电子邮件

Python web自动化从网页获取电子邮件,python,Python,我想要一个python脚本,打开一个链接并打印该页面的电子邮件地址 例如 转到example.com之类的网站 在那搜索电子邮件 搜索该链接中的所有页面 我在密码下被试过 import requests from bs4 import BeautifulSoup r = requests.get('http://www.digitalseo.in/') data = r.text soup = BeautifulSoup(data) for rate in soup.find_all('@'

我想要一个python脚本,打开一个链接并打印该页面的电子邮件地址

例如

  • 转到example.com之类的网站
  • 在那搜索电子邮件
  • 搜索该链接中的所有页面
  • 我在密码下被试过

    import requests
    from bs4 import BeautifulSoup
    
    r = requests.get('http://www.digitalseo.in/')
    data = r.text
    soup = BeautifulSoup(data)
    
    for rate in soup.find_all('@'):
        print rate.text
    
    我把这个网站作为参考

    有人帮我找到这个吗?

    因为
    find_all()
    只会搜索标签。从文件:

    签名:
    find_all(名称、属性、递归、字符串、限制、**kwargs)

    find_all()

    因此,您需要添加一个关键字参数,如下所示:

    import re
    import requests
    from bs4 import BeautifulSoup
    
    def get_link_by_keyword(keyword):
        links = set()
        for i in soup.find_all(href=re.compile(r"[http|/].*"+str(keyword))):
            links.add(i.get('href'))
    
        for i in links:
            if i[0] == 'h':
                yield i
            elif i[0] == '/':
                yield link+i
            else:
                pass
    
    global link
    link = raw_input('Please enter a link: ')
    if link[-1] == '/':
        link = link[:-1]
    
    r = requests.get(link, verify=True)
    data = r.text
    soup = BeautifulSoup(data, "html.parser")
    
    for i in get_link_by_keyword(raw_input('Enter a keyword: ')):
        print i
    

    演示:

    contact@digitalseo.in
    contact@digitalseo.in
    


    从文件:

    任何无法识别的参数都将转换为标记属性之一的过滤器。如果为名为id的参数传入一个值,Beauty Soup将根据每个标记的“id”属性进行过滤:

    有关详细信息,请参见文档:


    如果您想从文档中查找电子邮件地址,
    regex
    是一个不错的选择

    例如:

    import re
    re.findall( '[^@]+@[^@]+\.[^@]+ ', text) # remember change `text` variable
    

    如果您想通过关键字在页面中找到链接,只需使用
    。获取如下内容:

    import re
    import requests
    from bs4 import BeautifulSoup
    
    def get_link_by_keyword(keyword):
        links = set()
        for i in soup.find_all(href=re.compile(r"[http|/].*"+str(keyword))):
            links.add(i.get('href'))
    
        for i in links:
            if i[0] == 'h':
                yield i
            elif i[0] == '/':
                yield link+i
            else:
                pass
    
    global link
    link = raw_input('Please enter a link: ')
    if link[-1] == '/':
        link = link[:-1]
    
    r = requests.get(link, verify=True)
    data = r.text
    soup = BeautifulSoup(data, "html.parser")
    
    for i in get_link_by_keyword(raw_input('Enter a keyword: ')):
        print i
    

    你试过了吗?你可以使用和来做这件事。是的。我试过用BeautifulSoup。但是我弄不到。你的密码是什么?错误消息是什么?输出是什么?从bs4导入请求import BeautifulSoup r=requests.get(')data=r.text soup=BeautifulSoup(数据)以获取soup中的速率。find_all('@'):print rate.text我没有得到任何输出。我把那个网站作为参考。好吧,因为
    find_all()
    函数将搜索标签,而不是电子邮件地址。我将发布一个答案来解释这一点。我认为你应该编辑你的问题并添加你的代码。这很有效。可以根据@符号查找邮件。否,这将搜索
    href=mailto
    。如果您检查HTML,您将看到类似于
    的内容。是否有任何方法可以根据@符号查找电子邮件。因为在某些情况下,将列出没有“是”的电子邮件地址,如果您希望在文档或字符串中搜索电子邮件地址,请使用regex而不是BeautifulSoup。让我编辑我的答案并添加它。好的,先生。非常感谢。这很有帮助。谢谢。
    import re
    re.findall( '[^@]+@[^@]+\.[^@]+ ', text) # remember change `text` variable
    
    import re
    import requests
    from bs4 import BeautifulSoup
    
    def get_link_by_keyword(keyword):
        links = set()
        for i in soup.find_all(href=re.compile(r"[http|/].*"+str(keyword))):
            links.add(i.get('href'))
    
        for i in links:
            if i[0] == 'h':
                yield i
            elif i[0] == '/':
                yield link+i
            else:
                pass
    
    global link
    link = raw_input('Please enter a link: ')
    if link[-1] == '/':
        link = link[:-1]
    
    r = requests.get(link, verify=True)
    data = r.text
    soup = BeautifulSoup(data, "html.parser")
    
    for i in get_link_by_keyword(raw_input('Enter a keyword: ')):
        print i