这里使用非贪婪模式re.findall(r’ (.*?) ) 直接获取信息的列表,可以省去去引号的操作.
直接运行是无法成功的,要自己登录淘宝F12,获取cookies信息,粘贴到cookies =’ ’ 中.
cookies转换成字典操作见:https://blog.csdn.net/sfwwdd/article/details/108906081.
import requests
import re
import time
def getHTMLText(url):#获得网页信息
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36'}#使用浏览器header
try:
cookies = 'thw=cn; hng=CN%7Czh-CN%7CCNY%7C156; cna=JVhlEUOo6TsCAXPVTc+F7MCQ; '#开发者工具获取cookies
cookies = dict([c.split('=',1) for c in cookies.split(';')])#转换成键值对的字典
r = requests.get(url,cookies=cookies,headers=headers,timeout=40) #放入请求头
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.text
except:
return ""
def parsePage(ilt, html):#对所得页面进行解析
try:
nSales = []
plt = re.findall(r'"view_price":"(.*?)"',html) #非贪婪模式得到名称
tlt = re.findall(r'"raw_title":"(.*?)"',html) #非贪婪模式得到价格
sales = re.findall(r'"view_sales":"(.*?)人付款"',html) #非贪婪模式得到销量
for sale in sales:
n_sale = re.sub(r'[\.\+]','',re.sub(r'万\+','0000',sale))#列表不能替换,要遍历成字符串,注意转义
nSales.append(int(n_sale))#必须将字符串转纯数字才能排序
for i in zip(plt,tlt,nSales): #打包到一个列表,内部是元组
ilt.append(i)
except:
print("")
def printGoodsList(ilt):#信息输出显示到屏幕上
tplt = "{0:<4}\t{1:<8}\t{2:{4}^30}\t{3:<12}\t{4:^10}"#对齐方式
print(tplt.format("序号", "价格", "商品名称", "销量",chr(12288)))#加入补齐空格
for index,g in enumerate(ilt):#带索引遍历
print(tplt.format(index+1, g[0],g[1],g[2],chr(12288)))
def main():
goods = '书包'
depth = 3 # 要爬取几页
start_url = 'https://s.taobao.com/search?q=' + goods
infoList = []
for i in range(depth):
try:
url = start_url + '&s=' + str(44*i)
html = getHTMLText(url)
parsePage(infoList, html)
time.sleep(1)
except:
continue
infoList = sorted(infoList,key=lambda infoList:infoList[2],reverse=True) #对销量进行排序
printGoodsList(infoList)
main()
所得结果: 在idle中执行,对齐会更好看点.
序号 价格 商品名称 销量
1 59.00 双肩包男士大容量商务出差电脑背包女旅游旅行包高中初中学生书包 400000
2 59.00 迪士尼书包小学生男童女童儿童三到六年级一二护脊减负轻便超轻 250000
3 49.00 大容量双肩包男士时尚潮流初中高中小学生书 150000
4 239.00 CONVERSE匡威官方 经典LOGO双肩背包男女潮流百搭书包100205 150000
5 59.80 儿童书包小学生男女一二三到六年级韩版减负护脊贵族书包轻便防水 100000
6 139.00 瑞士军士刀双肩包男士大容量旅行电脑背包高中初中学生书包大学生 100000
7 39.90 书包韩版原宿ulzzang女背包高中学生初中生百搭ins风男情侣双肩包 100000
8 69.90 森马双肩包女大容量韩版高中简约背包男大学生书包中学生 初中生 9000
9 129.00 KK剑桥树书包小学生男孩一二三到六年级儿童6-12岁男童双肩包减负 8500
10 59.00 背包男士双肩包大容量电脑旅行时尚潮流大学生高中生初中学生书包 8000
11 129.00 KK树书包小学生女孩6-12岁儿童一二三到六年级女童双肩包护脊减负 7500
12 59.00 可爱书包女ins韩版高中学生软妹日系初中生小学生大容量双肩背包 7500
13 49.00 双肩包女2020新款韩版牛津布小背包女士百搭时尚大容量帆布书包包 7500
14 69.00 复古男士帆布双肩包高中大学生书包潮流休闲大容量旅行包背包男包 6500
15 69.00 巴布豆小学生书包男孩1-3-4-6年级双肩护脊减负6-12周岁儿童书包 6000
16 85.00 2020新款Nike耐克背包男女高中学生校园书包运动旅游双肩包大容量 6000
17 37.90 儿童书包小学生护脊三到六男童轻便幼儿园一年级女童二定制印logo 6000
18 129.00 花花公子男士双肩包大学生电脑书包高中初中学生旅行休闲潮流背包 6000
19 88.00 迪士尼书包男小学生一二到三五六年级儿童双肩护脊减负轻便背包女 5000
20 129.00 书包小学生轻便女三四年级6-12岁潮护脊减负男孩儿童双肩背包一二 5000
21 58.00 双肩包女2020新款潮韩版百搭时尚软皮女士背包网红旅行书包女小包 5000
22 58.00 双肩包女2020新款潮韩版百搭时尚软皮女士背包网红旅行书包女小包 5000
23 58.00 小学生通用书包拉杆架男女孩三轮爬楼梯可折叠背包拖拉杆车架配件 4809
24 69.00 新款书包小学生女童一二三到六年级护脊儿童2020女孩韩版轻便减负 4788
25 39.00 小学生书包儿童一二三到六年级男孩双肩包男童背包超轻便护脊减负 4691
26 195.02 国家地理背包女运动户外时尚双肩包男牛津布旅行防水学生情侣书包 4493
27 195.02 国家地理背包女运动户外时尚双肩包男牛津布旅行防水学生情侣书包 4493
28 59.90 初中生双肩包女韩版高中学生小学生书包男时尚潮流旅行大容量背包 4487
29 49.90 双肩包男背包简约时尚潮流大容量休闲旅行电脑包轻便大学生书包 4455
30 199.00 电视剧款JanSport杰斯伯经典双肩包时尚潮女书包男大容量电脑背包 4432
31 88.00 迪士尼儿童书包女小学生三到四五六年级女童2020新款轻便护脊减负 4406
32 25.99 小学生书包1-3-4-6年级男童女儿童双肩减负超轻背包6-12周岁男孩 4402
33 99.90 森马双肩包男新款大容量商务旅行包男士背包时尚潮流女大学生书包 4344
34 98.00 迪士尼书包小学生女童一三六年级公主女孩轻便儿童护脊减负双肩包 4058
35 78.00 儿童拉杆书包 小学生男孩1-3-5-6年级女生防水减负大容量6-12周岁 3764
36 58.00 2020新款双肩包男士旅行休闲书包中学生初中生潮大学生电脑背包男 3742
37 58.00 2020新款双肩包男士旅行休闲书包中学生初中生潮大学生电脑背包男 3742
38 59.90 森马双肩包男大学生帆布背包学生书包ins休闲旅行小包女潮电脑包 3713
39 179.00 kk剑桥树儿童拉杆书包小学生男孩1-6年级拉杆箱书包男童防水爬楼 3571
40 59.00 新款书包小学生女童1-3-6年级儿童减负护脊背包女孩公主轻便6-12 3563
41 59.00 新款书包小学生女童1-3-6年级儿童减负护脊背包女孩公主轻便6-12 3563
42 128.00 KK树书包小学生女孩一二三六年级儿童6-12周岁双肩背包护脊减负韩 3483
43 74.99 儿童书包小学生女生一二三到六年级超轻护脊防水减负男孩轻便双肩 3447
44 55.00 儿童书包小学生男女一二三到六年级四五防水护脊双肩背包轻便减负 3298
45 76.00 书包小学生中学生初中生韩版高中生ins大容量双肩包女潮简约背包 3279
46 39.90 书包女中学生初中生韩版原宿ulzzang时尚潮流大学生ins双肩背包男 3262
47 68.80 小学生拉杆书包女公主男生可拆卸两用1-3-6年级防水爬楼六轮背包 3217
48 59.00 双肩包男士背包休闲大容量电脑旅行包高中初中学生书包女时尚潮流 3147
49 109.00 迪士尼小学生书包减负轻便儿童超轻一二三到六年级日本护脊女男童 3093
50 39.50 北包包2020新款潮书包韩版帆布百搭男女时尚双肩包森系大学生背包 3084
51 79.00 巴布豆小学生书包女童孩一二年级减负护脊超轻679-12岁儿童背书包 3049
52 69.00 英伦双肩包男时尚潮流初中大学生书包潮牌旅行男士轻便背包女休闲 3045
53 119.00 Skechers斯凯奇书包男大学生女同款大容量双肩背包运动休闲书包 2986
54 69.00 2020新款书包男女韩版原宿ulzzang背包学生初高中生中学生双肩包 2983
55 59.00 儿童书包男小学生一二三四五六年级护脊减负耐磨背包时尚潮双肩包 2690
56 129.00 双肩包女2020新款时尚韩版百搭大容量牛津布简约旅行防盗背包书包 2619
57 59.00 木村耀司背包男士双肩包休闲大容量电脑旅行包高中学生大学生书包 2585
58 59.00 木村耀司背包男士双肩包休闲大容量电脑旅行包高中学生大学生书包 2585
59 499.00 fjallraven瑞典北极狐双肩包kanken书包女电脑旅行背包官方23510 2574
60 159.00 ZUNDI儿童书包小学生男一二三到六年级护脊减负女孩双肩背包轻便 2353
61 99.00 爱迪生中学生书包男大容量少年双肩包初中生高中生减负防水背包男 2330
62 138.00 书包ins风中学生大学生韩版高中初中双肩大容量女生简约电脑背包 2245
63 138.00 书包ins风中学生大学生韩版高中初中双肩大容量女生简约电脑背包 2245
64 159.00 双肩包男士背包应急雨衣大容量出差旅行17寸笔记本电脑包商务书包 2078
65 98.00 穆斯科袋鼠男士背包学生书包潮流休闲大容量电脑包双肩包旅行背包 1980
66 119.00 商务电脑背包男士双肩包时尚潮流简约书包休闲出差旅行2020年新款 1936
67 79.00 七匹狼背包男电脑双肩包2020年新款大容量高中初中学生书包大学生 1931
68 79.00 七匹狼背包男电脑双肩包2020年新款大容量高中初中学生书包大学生 1931
69 199.00 (薇娅推荐)JanSport杰斯伯双肩包2020年新款女学生书包INS潮包 1923
70 79.00 迪士尼小学生书包男童三到六年级四五超轻便减负护脊男孩儿童大童 1914
71 169.00 双肩包男士包包多功能商务17寸电脑包休闲书包大容量出差旅行背包 1838
72 59.00 小学生拉杆书包6-12周岁女孩1-3-5-6年级三轮儿童拉杆箱书包防水2 1670
73 359.00 MYD双肩包女书包韩版中学生初中生高中大学生ins风肩包电脑背包男 1591
74 69.00 书包男生小学生四5五6六高年级青少年大容量初一男孩初中生双肩包 1580
75 88.00 迪士尼幼儿园书包男童蜘蛛侠美国队长小孩学前班宝宝儿童双肩背包 1555
76 79.00 七匹狼双肩包男士大容量旅行电脑背包2020年新款初中大学生书包潮 1532
77 128.00 拉杆书包小学生儿童一年级三到六女孩防水拉杆背两用男童爬楼男孩 1497
78 298.00 Colins Keirs双肩包男商务休闲大容量电脑背包男士旅行包书包潮牌 1420
79 69.00 UEK书包小学生男轻便书包1-3一4-6年级减负护脊超轻儿童书包女二5 1366
80 115.64 瑞士军士刀双肩包男大容量休闲商务旅行电脑背包男士初中学生书包 1345
81 188.00 瑞士军刀双肩包男休闲大容量书包瑞士军士刀男士电脑商务旅行背包 1113
82 228.00 中学生书包男初中生高中生大容量双肩包牛津大学潮流休闲减负背包 1078
83 175.00 迪士尼儿童手拉拉杆书包小学生中学生男孩六轮大容量防水拖拉箱女 1065
84 249.00 NIKE耐克双肩背包手提包男女包旅行包运动休闲书包豆沙粉包BA6173 1050
85 298.00 牛津布双肩包女2020新款韩版百搭时尚学生书包大容量旅行背包小包 1015
86 89.00 南极人英伦小学生书包女孩一二三到六年级护脊减负儿童贵族背包轻 963
87 220.00 手提双肩包包女2020新款韩版百搭女包时尚大容量书包旅游旅行背包 885
88 168.00 杰斯伯JanSport正品校园豹纹男女学生双肩包书包背包国庆客服休息 884
89 158.00 电脑双肩包男时尚潮流大容量大学生书包校园旅行简约休闲男士背包 862
90 89.00 花花公子男士书包2020年新款休闲旅行双肩包时尚潮流电脑背包潮牌 861
91 89.00 花花公子男士书包2020年新款休闲旅行双肩包时尚潮流电脑背包潮牌 861
92 258.00 桥志 阿玛尼男士背包双肩包男时尚潮流休闲旅行包真皮大容量书包 834
93 249.00 90分牛津帆布包休闲双肩包男时尚潮流背包书包男女韩版百搭电脑包 806
94 268.00 背包男双肩包时尚潮流书包男大学生机车健身骑行旅行电脑双肩背包 721
95 76.00 凯蒂猫书包幼儿园女童3-6岁可爱女孩学前班大班宝宝儿童双肩背包5 706
96 148.00 耐克迷你双肩包幼儿园小学生韩版儿童书包少女背包nike男潮ba5559 686
97 235.00 2020新款书包女韩版原宿ulzzang背包高中学生初中生大容量双肩包 680
打包的用法参考:
p=[]
g =['g0','g1','g2']
t = ['t0','t1','t2']
for i in zip(g,t):
p.append(i)
print(p)
[(‘g0’, ‘t0’), (‘g1’, ‘t1’), (‘g2’, ‘t2’)]