正则

  1. 引入模块
  2. import re
    1. s=re.match()  字符串匹配模型开头如果没有返回None
      1. s.group()返回结果
    2. s =re.search() 搜索整个字符串找到第一个所匹配的位置
    3. s = re.fullmatch()整个匹配字符串完全相同才返回 ,不同返回None
    4. re.findall() 返回列表多个匹配项
    5. re.split()  分割字符串 为列表
    6. re.sub(匹配的值,新值, 对象) 替换
    7. re.finditer() 将匹配到的内容放入迭代器
    8. re.compile()  返回迭代器
  • re.I : 匹配中大小写不敏感
  • re.M: “^”匹配字符串开始及\n之后“$”匹配\n之前以及字符串末尾  多行模式
  • re.S: "."匹配任意字符串,包括换行符  单行模式
  • 例子:
  • .:匹配单个字符 不包括换行
  • []:匹配[]中列举的字符
  • \d:匹配数字,0-9
  • \D:匹配非数字,即不是数字
  • \s:匹配空白, 空格(\n),tab键(\t)
  • \S:匹配非空白
  • \w:匹配单词字符  a-z,A-Z,0-9,-
  • \W:匹配非单词字符
  • * 匹配前一个字符出现0次或无限次 (可有可无)
  • +匹配前一个字符出现1次或无限次 (至少一次)
  • ?匹配前一个字符出现1次或者0次
  • {m}匹配前一个字符串出现M次
  • {m,}匹配前一个字符至少出现m次
  • {m,n}匹配前一个字符出现从m到n次
#正则获取文件数据
 with open('d:/abc.txt', encoding='utf8') as t:
     s = t.read()
     res = re.search('(.*?)', s, re.I).group(1)
     resd = re.findall('src="(.*?)"', s)
     href = re.findall('href="http(.*?)"', s)

     with open('d:/def.txt', 'w') as e:
         e.write('标题\n')
         e.write(res)
         e.write('图片\n')
         for i in resd:
             e.write('图片URL:' + i+'\n')
         e.write('链接\n')
         for h in href:
             e.write('链接:http'+h + '\n')
# 利用requests过去网页信息
import requests

num = 0
# 获取网页信息
request = requests.get('http://used.xcar.com.cn/')
# 正则匹配
pat = '(.*?)'
tu = 'src="(.*?).jpg"'
lj = 'href="(.*?)"'
# 获取正则指定的数据(标题)
result = re.search(pat, request.text, re.I).group(1)
# 获取指定的图片
result1 = re.findall(tu, request.text)
# 获取指定的链接
result2 = re.findall(lj,request.text )
# 遍历图片链接
for i in result1:
    # 拼接图片链接
    tu = i + '.jpg'
    # 获取随机数
    # num = random.randint(1, 200)
    num +=1
    num1 = str(num)
    # 指定保存的位置和名称
    bc = "D:/hq/" + num1 + ".jpg"
    # 打开文件
    with open(bc,'wb')as e:
        print("@@@",bc)
        # 获取图片
        q = requests.get(tu)
        print("################",q.content)
        # 写入文件
        e.write(q.content)
        print("下载完成啦。。。。。")
        # 关闭文件
        e.close()

 

你可能感兴趣的:(正则)