一、知识回顾                                                                                               

python 全栈开发,Day32(知识回顾,网络编程基础)

正则模块
正则表达式
元字符 :
    .    匹配除了回车以外的所有字符
    \w   数字字母下划线
    \d   数字
    \n \s \t 回车 空格 和 tab
    ^    必须出现在一个正则表达式的最开始,匹配开头
    $    必须出现在一个正则表达式的最后,匹配结尾
    |  或
         a|b   要么取左边的要么取右边的
         ()|() 分组中的或 一定是长的在前面 短的在后面
    []   在同一个位置上可能出现的所有字符都放在组里
    [^]  在同一个位置上不能出现的所有字符都放在组里
    ()   对于一整个组做量词约束 ; python 分组优先
量词 :
    *   0次或多次
    +   1次或多次
    ?  0次或1次
    {}  具体的 {n},{n,m},{n,}
问号的用法
惰性匹配 : 量词+? 表示使用惰性匹配
分组优先 findall split  ;取消分组优先 (?:。。。)
分组命名 (?P<name>...)

匹配整数                                                                                                                                                           

import re
ret=re.findall(r"\d+","1-2*(60+(-40.35/5)-(-4*3))")
print(ret)

执行输出:

 ['1', '2', '60', '40', '35', '5', '4', '3']

结果是不对的,因为它把小数也拆分了,得到['40','35']

有的时候 不想要的内容需要被匹配出来
你不想要的东西包含着你想要的东西

 

匹配小数

import re
ret=re.findall(r"-?\d+\.\d*","1-2*(60+(-40.35/5)-(-4*3))")
print(ret)

执行输出: ['-40.35']

匹配小数或者整数

import re
ret=re.findall(r"-?\d+\.\d*|-?\d+","1-2*(60+(-40.35/5)-(-4*3))")
print(ret)

执行输出:

['1', '-2', '60', '-40.35', '5', '-4', '3']

加括号,优先匹配数字

['1', '-2', '60', '', '5', '-4', '3']

执行输出:

['1', '-2', '60', '', '5', '-4', '3']

删除空格

import re
ret=re.findall(r"-?\d+\.\d*|(-?\d+)","1-2*(60+(-40.35/5)-(-4*3))")
ret.remove('')
print(ret)

执行输出:

['1', '-2', '60', '5', '-4', '3']

 

数字匹配                                                                                                                                                                  

1、 匹配一段文本中的每行的邮箱
      http://blog.csdn.net/make164492212/article/details/51656638

2、 匹配一段文本中的每行的时间字符串,比如:‘1990-07-12’;

   分别取出1年的12个月(^(0?[1-9]|1[0-2])$)、
   一个月的31天:^((0?[1-9])|((1|2)[0-9])|30|31)$

3、 匹配qq号。(腾讯QQ号从10000开始)  [1,9][0,9]{4,}

4、 匹配一个浮点数。       ^(-?\d+)(\.\d+)?$   或者  -?\d+\.?\d*

5、 匹配汉字。             ^[\u4e00-\u9fa5]{0,}$ 或者..

6、 匹配出所有整数

爬虫练习                                                                                                                                                                  

先看一下,爬虫的过程

python 全栈开发,Day32(知识回顾,网络编程基础)

https://movie.douban.com/top250

豆瓣电影 Top 250

import requests

import re
import json

def getPage(url):

    response=requests.get(url)
    return response.text

def parsePage(s):
    
    com=re.compile('<div class="item">.*?<div class="pic">.*?<em .*?>(?P<id>\d+).*?<span class="title">(?P<title>.*?)</span>'
                   '.*?<span class="rating_num" .*?>(?P<rating_num>.*?)</span>.*?<span>(?P<comment_num>.*?)评价</span>',re.S)

    ret=com.finditer(s)
    for i in ret:
        yield {
            "id":i.group("id"),
            "title":i.group("title"),
            "rating_num":i.group("rating_num"),
            "comment_num":i.group("comment_num"),
        }

def main(num):

    url='https://movie.douban.com/top250?start=%s&filter='%num
    response_html=getPage(url)
    ret=parsePage(response_html)
    print(ret)
    f=open("move_info7","a",encoding="utf8")

    for obj in ret:
        print(obj)
        data=json.dumps(obj,ensure_ascii=False)
        f.write(data+"\n")

if __name__ == '__main__':
    count=0
    for i in range(10):
        main(count)
        count+=25
View Code

相关文章:

  • 2021-10-17
  • 2021-04-17
  • 2021-07-16
  • 2021-08-01
  • 2022-12-23
  • 2021-07-22
猜你喜欢
  • 2022-03-09
  • 2021-05-30
  • 2021-07-24
  • 2022-03-07
  • 2022-12-23
  • 2021-08-04
相关资源
相似解决方案