IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 【Python】爬虫------数据解析之re解析 -> 正文阅读

[Python知识库]【Python】爬虫------数据解析之re解析

前言:许多情况下,我们不需要整个网页的内容,只需要部分的数据,所以我们需要将提取到的数据解析。

一、re解析

RegularExpression-----正则表达式,是一种使用表达式的方式对字符串进行匹配的语法规则。优点是速度快、效率高、准确性高,缺点是新手上手难。

1.正则表达式语法

元字符:

?量词:控制前面元字符出现的次数。

?贪婪匹配和惰性匹配:

2.正则表达式在python中的实现

  • findall():查找所以,返回list。
import re
lst = re.findall("\d+", "今天6点,我跑了15000m")
print(lst)#['6', '15000']
  • search():会进行匹配,但是如果匹配到了第一个结果,就会返回这个结果,如果匹配不到返回None。
import re
lst = re.search("\d+", "今天6点,我跑了15000m").group()
print(lst)#6
  • match():只能从字符串的开头进行匹配。
import re
lst = re.match("\d+", "今天6点,我跑了15000m").group()
print(lst)#报错
  • finditer():和findall差不多,只不过它返回的是迭代器。
import re
lst = re.finditer("\d+", "今天6点,我跑了15000m")
for i in lst:
    print(i.group())
  • compile():预加载正则表达式。
import re
obj = re.compile("\d+")
lst = obj.findall("今天6点,我跑了15000m")
print(lst)#['6', '15000']
  • re.S:让元字符"."匹配换行符。
  • (?P<组名>):为正则表达式分组,调用grop("组名")函数输出命名为该组名的表达式。

二、上手试试

1.爬取豆瓣排行榜数据?

▼▼▼要解析的数据▼▼▼

import re
import requests
import  csv

page = input("请输入页码(0=1,25=2,50=3...):")
header = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36"
}
url = f"https://movie.douban.com/top250?start={page}&filter="

# 拿取页面源代码
res = requests.get(url=url,headers=header)
res_text = res.text

#解析数据
obj = re.compile(r'<li>.*?<span class="title">(?P<name>.*?)</span>'
                 r'.*?<br>(?P<year>.*?)&nbsp'
                 r'.*?<span class="rating_num" property="v:average">(?P<score>.*?)</span>'
                 r'.*?<span>(?P<views>.*?)人评价',re.S)
result = obj.finditer(res_text)

#打开csv文件
f = open("video.csv", mode="w")
#创建写入内容对象
csvwiter = csv.writer(f)
for i in result:
    dic = i.groupdict()
    dic['year'] = dic['year'].strip()#为year单独设置跳过空格
    csvwiter.writerow(dic.values())#写入内容为dic里的数据
    #print(i.group("name"))
    #print(i.group("year").strip())#跳过空格
    #print(i.group("score"))。
    #print(i.group("views"))
f.close()
print("done!")

效果:


  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-11-15 15:49:40  更:2021-11-15 15:49:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 23:40:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码