python django通过正则搜索页面上的email地址的代码

本文介绍了一个使用Python Django和正则表达式从网页上查找Email地址的方法。代码首先下载指定URL的内容,然后在该内容中查找包含“联系”或“关于我们”的链接,进一步在这些页面上搜索Email地址。
如下代码是关于python django通过正则搜索页面上的email地址的代码,应该对码农有一些好处。

import re
from django.shortcuts import render
from pattern.web import URL, DOM, abs, find_urls

def index(request):
  """
  find email addresses in requested url or contact page
  """
  error = ''
  emails = set()
  url_string = request.GET.get('url', '')
  EMAIL_REGEX = re.compile(r'[A-Z0-9._%+-]+@[A-Z0-9.-]+.[A-Z]{2,6}', re.IGNORECASE)
  # use absolute url or domain name 
  url = URL(url_string) if url_string.startswith('http') else URL(domain=url_string,protocol='http')
  if url_string:
    try:
      dom = DOM(url.download(cached=True))
    except Exception, e:
      error = e
    else:
      contact_urls = { url.string }
      # search links of contact page
      for link in dom('a'):
        if re.search(r'contact|about', link.source, re.IGNORECASE):
          contact_urls.add(
            abs(link.attributes.get('href',''), base=url.redirect or url.string))

      for contact_url in contact_urls:
        # download contact page
        dom = DOM(URL(contact_url).download(cached=True))
        # search emails in the body of the page
        for line in dom('body')[0].content.split('n'):
          found = EMAIL_REGEX.search(line)
          if found:
            emails.add(found.group())

  data = {
    'url': url_string,
    'emails': emails,
    'error': error,
  }
  return render(request, 'index.html', data)                                                                                                                                            复制代码


转载于:https://juejin.im/post/5ca46cbf51882543f252e196

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值