"""
文本处理是当下计算机处理的主要任务,从文本中找到某些有用的信息,
挖掘出某些信息是现在计算机程序大部分所做的工作。而python这中轻量型、小巧的语言包含了很多处理的函数库,
这些库的跨平台性能很好,可移植性能很强。
在Python中re模块提供了很多高级文本模式匹配的功能,以及相应的搜索替换对应字符串的功能。
"""
"""
正则表达式符号和特殊字符
re1|re2 -----> 匹配正则表达式的re1或者re2
. -----> 可以匹配任何字符,但是除了换行符之外
^ -----> 匹配字符创的开始 ^Dear
$ -----> 匹配字符串的结尾 /bin/*sh$
* -----> 匹配前面出现的正则表达式零次或者多次 [A-Za-z0-9]*
+ -----> 匹配前面出现的正则表达式一次或者多次 [A-Za-z0-9]+ [a-z]+\.com
? -----> 匹配前面出现的正则表达式零次或者一次 goo?
{N} -----> 匹配前面出现的正则表达式N次 [0-9]{N}
{M,N} -----> 匹配重复出现M次到N次的正则表达式 [0-9]{3,5}
[...] -----> 匹配字符组中出现的任意一个字符 [aeiou]
[...x-y...]-----> 匹配从字符x到y中的任意一个字符 [0-9],[A-Za-z]
[^...] -----> 不匹配此字符集中出现的任何一个字符,包括某个范围的字符 [^A-Za-z0-9_]
(*|+|?|{})? -----> 用于上面出现的任何"非贪婪版本"重复匹配的次数符号 .*?[a-z]
(...) -----> 匹配封闭括号中正则表达式(RE),并保存为字数组 ([0-9]{3})?,f(oo|u)bar
"""
import re
p=re.compile('ab*');
print p;
r1=r'\d{3,4}-?\d{8}';
print re.findall(r1,'010-12345678');
print re.findall(r1,'010-00000000');
r2=re.compile(r'[Cc][Ss][Vv][Tt]');
r3=re.compile(r'csvt',re.I);
print r3.findall('cSvT');
test_r=r'(abc/[0-9]{8,8}$)';
print re.findall(test_r,'abc/12345678');
"""
使用正则表达式进行一个网页爬虫
"""
headers={
'Connection': 'Keep-Alive',
'Accept': 'text/html, application/xhtml+xml, */*',
'Accept-Language': 'en-US,en;q=0.8,zh-Hans-CN;q=0.5,zh-Hans;q=0.3',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko'
};
import urllib2
url='http://blog.csdn.net/berguiliu';
req=urllib2.Request(url);
req.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko');
Browser=urllib2.urlopen(req);
data = Browser.read();
re_blog_list=re.compile(r'href="(/berguiliu/article/details/[0-9]{8,8})">');
url_list=re.findall(re_blog_list,data);
import cookielib
def makeMyOpener(head):
cj=cookielib.CookieJar();
opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cj));
header=[]
for key, value in head.items():
elem=(key, value)
header.append(elem)
opener.addheaders=header;
return opener
oper = makeMyOpener(headers);
uop = oper.open('http://www.baidu.com/', timeout = 1000);
data = uop.read();
print data;
import time;
for subUrl in url_list:
new_Url='http://blog.csdn.net'+subUrl;
print new_Url;
oper = makeMyOpener(headers);
uop = oper.open(new_Url, timeout = 1000);
data = uop.read();
time.sleep(3)
这个程序主要是通过抓取网页,分析一下网页信息,找到自己感兴趣的部分, 就可以找到其对应的信息,进行相应的操作!