采集阿里巴巴商品模块主要由三部分组成,第一部分是逐条读取商品url,第二部分是提取商品页面的有用内容,第三部分是把保存起来。

我这边保存商品url用的是txt格式,于是采用line = f.readline() 方法来逐条读取:

f = open("/Users/gaotiansong/Desktop/custom_shirt/urllist.txt")
line = f.readline() #逐条读取

提取商品页面的有用内容,我这里使用的是正则。正则模块是python3自带的,只需要import re 就可以正常使用了。

第三部分是保存。采集内容是为了导入网站,一般网站都支持csv格式导入,所以我们直接保存为csv格式。这里需要用到csv库,同样,csv库是python3自带的,import csv就可以了。

思路说完了,下面直接分享代码:

import requests,re,os,csv

'''采集方法开始'''
def caiji(url,n):
    target = url
    req = requests.get(url=target) #抓取到的内容
    html=req.text #转化为字符串
    mo=re.compile('.*logo\.(jpg|png)') #匹配图片地址模式
    mo1=re.compile('<title>.* -')#匹配标题模式
    mocs=re.compile('\/\/sc[0-9]{2}\.alicdn\.com\/kf\/.*?50x50\.jpg')
    moprice=re.compile('(\$[0-9]*\.[0-9]{2}){1}') #匹配价格
    
    price=moprice.findall(html)
    if price==[]:#商品不存在则跳过
        print('该商品不存在')
        return '错误'
    #price=price[0]#获取价格
    price=price[0]
    imgurl=mocs.findall(html)
    title=mo1.findall(html)
    title=title[0] #/把数组变成字符串,sub只能处理字符串
    mo2=re.sub(('<title>'),'',title) #删除‘<title>’
    h1=re.sub(' -','',mo2) #删除' -'
    print('采集:',h1)
    #处理图片链接问题
    url=set(imgurl) #把列表变成集合,删除重复项
    url=list(url) #把集合变成列表,方便处理
    url=','.join(url) #把列表中的项以“,”链接起来,转化为字符串
    url=re.sub('_50x50.jpg','',url)#查找_50x50.jpg替换成空,即删除
    url=re.sub('//','https://',url)#查找//替换成https://

    fileHeader=['标题','价格','图片地址'] #设置表单每列标题
    file=[h1,price,url]
    csvFile=open('/Users/gaotiansong/Desktop/custom_shirt/custom_shirt_pro.csv','a')
    writer=csv.writer(csvFile)
    if n==1:
        writer.writerow(fileHeader)
        writer.writerow(file)
    else:
        writer.writerow(file)
        csvFile.close()  
'''采集方法结束'''
#获取网址列表
f = open("/Users/gaotiansong/Desktop/custom_shirt/urllist.txt")
line = f.readline() #逐条读取
n=0
while line:
    url=line
    n=n+1
    caiji(url,n) #调用采集方法
    print('成功采集',n,'条')
    line = f.readline()
f.close() #关闭文件

如果你也喜欢python3 ,喜欢网络爬虫,欢迎一起交流。