Python爬虫 #008 爬虫之数据清洗

大多情况下爬虫爬取到的数据是比较乱的,这里介绍几种常用的数据清洗方法

1. re方法

# 缺点:数据会连成一句话
# 适用于列表中只有一条有用数据(即一个元素),其他为空白字符
import re
data_list = ["\n \t    data1 \n \r ","\n \t    data2 \n \r "]
data_list = "".join(data_list)
data_list = re.sub(r"\s","",data_list)
print(data_list)

>>> data1data2

2. split

# 缺点:数据会被封装成列表,需要再一次提取数据
# 适用于列表中有多条数据(即多个元素),其他为空白字符
data_list = ["\n \t    data1 \n data2  \n  data3  \r ", "\n \t    data4 \n \r "]
data_list = "".join(data_list).split()
print(data_list)

>>> ['data1', 'data2', 'data3', 'data4']

3.map

import re
data_list = ["\n \t    data1\r ", "\n \t    data4 \n  "]
# 遍历data_list中的每一个元素,每一个元素都执行re.sub方法
data_list = list(map(lambda x:re.sub(r"\s","",x),data_list))
print(data_list)

>>> ['data1', 'data4']

4. strip

data_list = ["\n \t    data1 \n \r ","\n \t    data2 \n \r "]
for data in data_list:
    # strip() 去掉空白字符,也可指定strip('\n')只去掉回车
    data = data.strip()
    print(data)
    
>>>:
data1
data2

5. for循环

# 适用于数据比较固定(每一条数据含有的关键字固定)
dic = {}
list = []
datas = ['\n \t','\n \t 2020年','\n \t 地址:江西九江','\n  \r  \t']
for data in datas:
    if "年" in data:
        dic['time'] = data.split()[0]
        list.append(data.split()[0])
    elif "地址" in data:
        dic['address'] = data.split()[0]
        list.append(data.split()[0])
        
print(dic)
print(list)

>>> {'time': '2020年', 'address': '地址:江西九江'}
>>> ['2020年', '地址:江西九江']

6.保存图片

from urllib import request
# 图片地址后缀为jpg,png......无后缀保存出错
url = 'https://car3.autoimg.cn/cardfs/product/g3/M08/5D/99/240x180_0_q95_c42_autohomecar__ChcCRV2J-teAYMC3AAah0O0frSA485.jpg'

# request.urlretrieve 方法能把图片地址保存为图片
# 后面设置文件保存的路径,和文件名
request.urlretrieve(url, r"C:\Users\ASUS PC\Desktop\1.jpg")
posted @ 2023-06-28 22:55  枫_Null  阅读(194)  评论(0)    收藏  举报