Python 爬虫_正则表达式

Posted 你是不夜星空

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 爬虫_正则表达式相关的知识,希望对你有一定的参考价值。

用来对字符串操作的一种逻辑方式, 对字符串的一种过滤逻辑。
表达式全集: http://tool.oschina.net/uploads/apidocs/jquery/regexp.html

1. 

1. re.match ==>尝试从字符串的起始位置匹配一个模式,如果第一个字符不嫩匹配,则不能正常匹配
        re.match(pattern,sring,flags=0)

2. 匹配目标:

import re
        content=Hello 1234567 world_this is a regex demo
        result=re.match(^Hellos(d+)sworld.*demo$,content)    #正则表达式
        print(result.group(1))    #输出第一个括号的内容
        print(result.span())     #输出输出字符串的数量

3. 贪婪匹配:

import re
        content=Hello 1234567 world_this is a regex demo
        result=re.match(^He.*(d+)sworld.*demo$,content)    
        print(result.group(1))    #只能输出7
#非贪婪匹配
        import re
        content=Hello 1234567 world_this is a regex demo
        result=re.match(^He.*?(d+).*demo$,content)    
        print(result.group(1))     #输出1234567
#匹配模式:
        import re
        content=‘‘‘Hello 1234567 world_this 
        is a regex demo
        ‘‘‘
        result=re.match(^He.*?(d+).*?demo$,content,re.s)    #re.s 是匹配换行符的
        print(result.group(1))    #输出1234567

4. 转义: 特殊字符需要转义

import re
        content=price is $500
        result=re.match(price is $500‘,content)     #转义之后才能匹配

5. re.search: 扫描字符串,返回第一个匹配的字符,能用search就不用match

import re
        content=Hello 1234567 world_this is a regex demo
        result=re.search(Hellos(d+)sworld.*demo$,content)     #输出全部字符串

6. re.findall

results=re.findall(正则表达式,html,re.S)
        for result in results:
        print(result)
        print(result[1],result[2]...)

7. re.sub: 字符串替换

import re
        content=Hello 1234567 world_this is a regex demo extra stings
        content=re.sub(d+,‘‘,content)

8. re.compile: 把字符串编译成正则表达式

import re
        content=‘‘‘Hello 1234567 world_this 
        is a regex demo
        ‘‘‘
        result=re.compile(hello.*demo,re.s)    #re.s 是匹配换行符的
        result=re.match(pattern,content)
#实战练习:
        import requests
        import re
        content=requests.get(http://book.doubancom/).text
        patten=re.compile(<li,*cover.*?href="(.*?)".*?title="(.*?)".*?more-meta.*?author>(.*?)</span>.*?year>(.*?)</span>.*?</li>,re.S)
        results=re.findall(pattern.content)
        #print (results)
        for result in results
            url, name,author,date=result
            author=re.sub(s,‘‘,author)
            date=re.sub(s,‘‘,date)
            print(url,name,author,date)

 


以上是关于Python 爬虫_正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

Python爬虫_正则表达式

python 爬虫004-使用urllib2与正则表达式扒取糗事百科新鲜页首页帖子

python爬虫 正则表达式 re.finditer 元字符 贪婪匹配 惰性匹配

Python 爬虫_正则表达式

python网络爬虫

Python3 爬虫09_正则表达式(re.math()re.search()re.sub()全局匹配函数)