python实现对淘宝指定商品的价格,名称进行爬取

#!/usr/bin/env python
# -*- coding:utf-8 -*- 
#Author: feng
import requests
import re
from prettytable import PrettyTable
from colorama import Fore,init,Back


def getHtmlText(url):
try:
r=requests.get(url)
r.raise_for_status()
r.encoding=r.apparent_encoding
return r.text
except:
print("Wrong!!")
return ""


def getProductPrice(itl,html):
name_regx=re.compile(r'"raw_title":"(.+?)"')
bag_name=re.findall(name_regx,html)
price_regx=re.compile(r'"view_price":"(\d+?.00)"')
price_name=re.findall(price_regx,html)
for i in range(len(bag_name)):
itl.append([bag_name[i],float(price_name[i])])
return itl


def PrintAllPrice(plist):
header=("序号 价格 商品").split()
pt=PrettyTable()
pt._set_field_names(header)
plist=sorted(plist,key=lambda x:x[1])
for index,i in enumerate(plist):
pt.add_row([Fore.RED+str(index)+Fore.RESET,Fore.LIGHTCYAN_EX+str(i[1])+Fore.RESET,Back.GREEN+i[0]+Back.RESET])
print(pt)


def main():
good="iphone"#商品的全拼
depth=2#爬取的深度
start_url="https://s.taobao.com/search?q="+good
infoList=[]
for i in range(depth):
try:
url=start_url+"&s={}".format(44*i)
Text=getHtmlText(url)
getProductPrice(infoList,Text)
except:
continue
PrintAllPrice(infoList)


if __name__=="__main__":
main()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值