对上一节学习笔记的代码稍作修改,就可以抓取淘宝商品中的销量并保存在txt文件中。
程序步骤:
- 提交商品搜索请求,循环获取页面
- 对每个页面,提取商品名称、价格信息和销量
- 将信息输出txt文件
代码如下:
import requests import re #获取网页 def getHTMLText(url): try: r = requests.get(url) r.raise_for_status() r.encoding = r.apparent_encoding return r.text except: return "" #使用正则表达式匹配需要的内容 """ 可以在网站源码中看到价格的标签是:"view_sales":"424人付款" 其正则表达式可以表示为:\"view_sales"\:\"[\d]*\人付款\" 或者使用数字加汉子匹配,汉子匹配方式如下: [\u4E00-\u9FA5\\s]+ 多个汉字,包括空格 [\u4E00-\u9FA5]+ 多个汉字,不包括空格 [\u4E00-\u9FA5] 一个汉字 """ def parsePage(ilt,html): try: plt = re.findall(r'\"view_price\"\:\"[\d\.]*\"',html) tlt = re.findall(r'\"raw_title\"\:\".*?\"',html) vlt = re.findall(r'\"view_sales"\:\"[\d]*[\u4E00-\u9FA5]+\"',html) for i in range(len(plt)): price = eval(plt[i].split(':')[1]) title = eval(tlt[i].split(':')[1]) sales = eval(vlt[i].split(':')[1]) ilt.append([price,title,sales]) except: print("") #输出文本内容,这里我将它写入txt文件保存了起来。 def printGoodList(ilt): tplt = "{:4}\t{:8}\t{:10}\t{:16}" with open('bag.txt','w+') as f: f.write(tplt.format("序号","价格","销量","商品名") + '\n') count = 0 for g in ilt: count = count +1 f.write(tplt.format(count,g[0],g[2],g[1]) + '\n') def main(): goods = '书包' depth = 2 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) except: continue printGoodList(infoList) main()