资源简介

爬取天猫(淘宝)在售物品的数据,包含产地、标价、名称、实际价格、评价、厂家等数据。输入需采集信息物品的名称、数据条数、页面数,可自动爬取。爬取结束后给出提示并将爬取数据存储在文件目录下。

资源截图

代码片段和文件信息

import re
import requests
import time#导入相关库


def getNowTime(form=‘%Y-%m-%d_%H-%M-%S‘):#输出csv文件的相关占位符,输出的csv文件会存储在文件目录下
    nowTime = time.strftime(form time.localtime())
    return nowTime#定义相关时间属性

# 搜索关键字
 #想搜啥搜啥,真男人当然看芭比娃娃。
searchKey = input(‘请输入要查找的物品:‘)#输入
# 输出文件编码(一般是utf-8,如果输出的csv文件发现会乱码,可以用ansi,反正就这两,其它咱也不知道。)
encode = ‘UTF_8‘
# keys是我要获取的物品信息属性分别是品牌名、价格、产地、售价、评论条数和生产公司。
keys = (‘raw_title‘‘view_price‘‘item_loc‘‘view_sales‘‘comment_count‘‘nick‘)

url = ‘https://s.taobao.com/search‘#链接地址从淘宝进入。
params = {‘q‘:searchKey ‘ie‘:‘utf8‘}
header = {
    “cookie“:“cna=EYnEFeatJWUCAbfhIw4Sd0GO; x=__ll%3D-1%26_ato%3D0; hng=CN%7Czh-CN%7CCNY%7C156; uc1=cookie14=UoTaHYecARKhrA%3D%3D; uc3=vt3=F8dBy32hRyZzP%2FF7mzQ%3D&lg2=U%2BGCWk%2F75gdr5Q%3D%3D&nk2=1DsN4FjjwTp04g%3D%3D&id2=UondHPobpDVKHQ%3D%3D; t=ad1fbf51ece233cf3cf73d97af1b6a71; tracknick=%5Cu4F0F%5Cu6625%5Cu7EA22013; lid=%E4%BC%8F%E6%98%A5%E7%BA%A22013; uc4=nk4=0%401up5I07xsWKbOPxFt%2BwuLaZ8XIpO&id4=0%40UOE3EhLY%2FlTwLmADBuTfmfBbGpHG; lgc=%5Cu4F0F%5Cu6625%5Cu7EA22013; enc=ieSqdE6T%2Fa5hYS%2FmKINH0mnUFINK5Fm1ZKC0431E%2BTA9eVjdMzX9GriCY%2FI2HzyyntvFQt66JXyZslcaz0kXgg%3D%3D; _tb_token_=536fb5e55481b; cookie2=157aab0a58189205dd5030a17d89ad52; _m_h5_tk=150df19a222f0e9b600697737515f233_1565931936244; _m_h5_tk_enc=909fba72db21ef8ca51c389f65d5446c; otherx=e%3D1%26p%3D*%26s%3D0%26c%3D0%26f%3D0%26g%3D0%26t%3D0; l=cBa4gFrRqYHNUtVvBOfiquI8a17O4IJ51sPzw4_G2ICP9B5DeMDOWZezto8kCnGVL6mpR3RhSKO4BYTKIPaTlZXRFJXn9MpO.; isg=BI6ORhr9X6-NrOuY33d_XmZFy2SQp1Ju1qe4XLjXJRHsGyp1IJ9IG0kdUwfSA0oh“
    “referer“:“https://detail.tmall.com/item.htm“
    “user-agent“:“Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML like Gecko) Chrome/55.0.2883.87 UBrowser/6.2.4098.3 Safari/537.36“
}#后台cookie,主要发挥代码作用的,从主页面后台代码获得。因为淘宝反爬取,一般网址链接获取数据不理想,用cookie效果最好。
startPage = 1 # 起始页面
pageTotal = 3 # 爬取多少页,可以按需求改,不要太大,血的教训啊。泪目,泪目。
waitTime = 2 # 等待时间(如果爬的速度太快会被封,要慎重啊。爬取不规范,情人两行泪。)
rowWrited = 0
startTime = time.time()#重写

print(‘启动爬取\n{} | 初始化存储文件...‘.format(getNowTime()))#准备爬取信号
fileName = r‘tmall_{}_{}_{}_{}.csv‘.format(searchKey startPage pageTotal getNowTime())#输出csv文件的格式
with open(fileName ‘w‘ encoding=encode) as saveFile:
    saveFile.write(‘‘.join(keys) + ‘\n‘)#准备存储

print(‘关键词:{} 起始页面:{} 爬取页面数:{} 开始执行..‘.format(searchKey startPage pageTotal))#开始爬取信号
for page in range(startPage pageTotal+1):
    print(‘\npage{}: 获取数据...‘.format(page))
    time.sleep(waitTime)#获取页面数据
    params[‘s‘] = str(page * 44) if page > 1 else ‘1‘#定义爬取页数和条数最少一页
    resp = requests.get(url params headers=header)#依次获取url、parms、header
    results = [re.findall(r‘“{}“:“([^“]+)“‘.format(key) resp.text.replace(‘\n‘‘‘).replace(‘\r‘‘‘).replace(‘‘‘‘).strip() re.I) for key in keys]
    print(‘page{}: 正在写入数据...‘.format(page))#写入数据
    with open(fileName ‘a‘ encoding=encode) as saveFile:
        for row in range(len(results[0])):
            print(‘\r写入第{}条..‘.format(row+1) end=‘‘)#写入数据条数
     

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        4310  2020-07-08 16:16  tmall.py
     文件        3899  2020-07-08 16:18  tmall.TXT
     文件         111  2020-07-08 16:06  说明.TXT

评论

共有 条评论