常见正则规则
- . : 匹配任意字符,换行符\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在找到要找的信息后就不会再向下找
原文链接:懒人之正则表达式,转载请注明来源!