python爬取化妆品成分进行高效比对

作为一个CV工程师(Ctrl+C,Ctrl+V),面向百度谷歌github编程是基本素养了。
就算不懂化妆品,互联网会告诉我们一切

那就面向百度看下,护肤品什么比较好

面向百度
ok,找到了一个可以用的网站,我们稍微点进去看下里面的数据

在这里插入图片描述
在这里插入图片描述

随便一搜我们就能看到各种各样的美妆用品的成分作用和安心度之类的数据

到这一步,相信大家应该就都会做了,数据嘛,嘿嘿

因为这里做了页面显示数量限制,所以我并没有拿到全部的数据,不过简单的几百条就足够用了

先通过搜索,把每个页面里面的指向各个产品的成分的url给整出来

#coding=utf-8
from urllib import request
import re
#1.搜索API
URL = 'http://www.cosdna.com/chs/product.php?q=%E8%BA%AB%E4%BD%93%E4%B9%B3&sort=featured&p='

def geturl(URL):
    UA = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36'}
    URL = request.Request(URL,headers=UA)
    A = request.urlopen(URL,timeout = 5)                 
    B = A.read().decode('utf-8')
    C = re.split(r'<table class="table table-hover">|</table>',B)
    D = re.split(r'<td class="px-0">|<td class="pl-0">|</td>|<td class="text-muted text-nowrap">',C[1])
    data = ''
    for d in D:
        E = re.split(r'<a href=|<span|</tr>|</a>|>|<td|<tr',d)
        for e in E :
            if e != '' and '<div' not in e and '</div' not in e and 'title=' not in e:
                data = data + e.strip() +'\n'
    return data

data = ''
for i in range(1,13):
    urli = URL + str(i)
    data = data + geturl(urli)

print(data)
f = open('urldata.txt', 'w',encoding='utf-8')
f.write(str(data))
f.close()

简单整理下获取到的url数据,
这里因为懒得写代码,直接用@分隔开数据

import re
f = open('urldata.txt', 'r',encoding='utf-8')

A = f.read()
f.close()
B = re.split('\n|"',A)
data = ''
for a in range(0,len(B)):
    if B[a] !='' and B[a] !=' ' and '.jpg' not in B[a]:
        if 'html' in B[a] and 'html' not in B[a+1]:
            B[a] = 'http://www.cosdna.com'+B[a]
            data = data  + B[a]+'@'+B[a+2]+'@'+B[a+4]+'\n'
f = open('urldata2.txt', 'w',encoding='utf-8')
f.write(str(data))
f.close()

然后到excel里面用数据分列功能直接拆开就行
最后这样:
在这里插入图片描述
分列之后名字放一列,链接放一列,复制到txt里面,当然,如果你的文件没被加密系统加密的话,直接读excel也影响不大

准备一个用来获取成分数据的函数

#coding=utf-8
from urllib import request
import re
#1.搜索API
URL = 'http://www.cosdna.com/chs/cosmetic_b2ff463399.html'


def readurl(name,URL):
    UA = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36'}
    URL = request.Request(URL,headers=UA)
    A = request.urlopen(URL,timeout = 100)                 
    B = A.read().decode('utf-8')
    C = re.split(r'<tbody class="chem-list">|</tbody>',B)
    D = re.split(r'<',C[1])
    data = ''
    for d in D:
        if 'class="small text-muted ml-2 mt-2px"' in d:
            data = data +'\n' +name+'\t'+ d.replace('\n','').split('>')[-1].strip() +'\t'
        elif 'class="small-85 text-vampire align-middle"' in d or 'a href=' in d or 'title="安心度"' in d:
            data = data +d.replace('\n','').replace(" ", '').split('>')[-1].strip() +'\t'
    return data

然后再遍历通过这个函数获取所有链接的数据

import re
from read import readurl
f = open(r'身体乳/url.txt', 'r',encoding='utf-8')

A = f.readlines()

f.close()
Data = {}
for a in A:
    b = re.split('\t',a)
    Data[b[0]]=b[1].replace('\n','')
Datas = ''
for a,b in Data.items():
    Datas = Datas + readurl(a,b) +'\n'

f = open('身体乳成分.xls', 'w',encoding='utf-8')
f.write(str(Datas))
f.close()


这样下来,我们就可以得到一份关于近百款相同性质产品的成分说明

在这里插入图片描述

根据网站数据的格式稍微整理一下,再提取下关键词记录出现频次
当然这个全部直接用python实现也是可以的,就是界面没有这么直观

在这里插入图片描述

最后经过简单的汇总,到这里你知道该选什么来送礼了吗?

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

isSamle

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值