首页 » 工具&API » 懒人之正则表达式

懒人之正则表达式

 

常见正则规则

  • . : 匹配任意字符,换行符\n除外
  • *:匹配前一个字符0次或无限次
  • ? :匹配前一个字符0次或1次
  • .*:贪心算法
  • .*?:非贪心算法
  • ():括号内的数据作为结果返回
  • \n, \r, \t 代表 换行,回车,制表符
  • \b...\b 匹配整个单词
  • \s\S 所有字符

有些网站是经常需要关注的、但是老是记不起来去看、
懒人就写抓取器,每天定时去抓取内容然后发送邮件给自己。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2017/2/13 下午3:17
# @Author  : Sahinn
# @File    : cp_news.py
import re
import urllib2


def url_get(url, timeout=30):
    i_headers = {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36",
                 "Referer": 'http://www.baidu.com'}
    req = urllib2.Request(url, headers=i_headers)
    result = urllib2.urlopen(req, timeout=timeout)
    content = result.read()
    return content


def zhcw_zygg_parser():
    base_url = 'http://www.zhcw.com'
    url = 'http://www.zhcw.com/xinwen/zhongyaogonggao/'
    ul_reg = u'<ul class="Nlistul">[\s\S]*?<\/ul>'
    li_reg = u'<li><span class="Nlink">.*?href="(.*?)".*?>(.*?)<\/a>[\s\S]*?Ntime">(.*?)</span><\/li>'
    content = url_get(url)
    ul_group = re.findall(ul_reg, content, re.S | re.M)
    li_group = re.findall(li_reg, ul_group[0], re.S | re.M)
    for li_line in li_group:
        print unicode(base_url + li_line[0], 'utf-8'), unicode(li_line[1], 'utf-8'), unicode(li_line[2], 'utf-8')
        check_save()


def check_save():
    pass


def send_mail():
    pass


def main():
    zhcw_zygg_parser()
    send_mail()


if __name__ == "__main__":
    main()

Python方法

  • findall: 匹配所有符合规律的内容,返回包含结果的列表
  • Search:匹配并提取第一个符合规律的内容,返回一个正则表达式对象(object)
  • Sub:替换符合规律的内容,返回替换后的值
  • Search在找到要找的信息后就不会再向下找


原文链接:懒人之正则表达式,转载请注明来源!

0