標籤:Regex python 爬蟲
"""
文本處理是當下電腦處理的主要任務,從文本中找到某些有用的資訊,
挖掘出某些資訊是現在電腦程式大部分所做的工作。而python這中輕量型、小巧的語言套件含了很多處理的函數庫,
這些庫的跨平台效能很好,可移植效能很強。
在Python中re模組提供了很多進階文字模式匹配的功能,以及相應的搜尋替換對應字串的功能。
"""
"""
Regex符號和特殊字元
re1|re2 -----> 匹配Regex的re1或者re2
. -----> 可以匹配任何字元,但是除了分行符號之外
^ -----> 匹配字元創的開始 ^Dear
$ -----> 匹配字串的結尾 /bin/*sh$
* -----> 匹配前面出現的Regex零次或者多次 [A-Za-z0-9]*
+ -----> 匹配前面出現的Regex一次或者多次 [A-Za-z0-9]+ [a-z]+\.com
? -----> 匹配前面出現的Regex零次或者一次 goo?
{N} -----> 匹配前面出現的RegexN次 [0-9]{N}
{M,N} -----> 匹配重複出現M次到N次的Regex [0-9]{3,5}
[...] -----> 匹配字元組中出現的任意一個字元 [aeiou]
[...x-y...]-----> 匹配從字元x到y中的任意一個字元 [0-9],[A-Za-z]
[^...] -----> 不匹配此字元集中出現的任何一個字元,包括某個範圍的字元 [^A-Za-z0-9_]
(*|+|?|{})? -----> 用於上面出現的任何"非貪婪版本"重複匹配的次數符號 .*?[a-z]
(...) -----> 匹配封閉括弧中Regex(RE),並儲存為字數組 ([0-9]{3})?,f(oo|u)bar
"""
import rep=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');
"""
使用Regex進行一個網頁爬蟲
"""
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 urllib2url='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 cookielibdef 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)
這個程式主要是通過抓取網頁,分析一下網頁資訊,找到自己感興趣的部分, 就可以找到其對應的資訊,進行相應的操作!
python使用Regex編寫網頁小爬蟲