【实例简介】python爬取淘宝商品新信息,如果出现乱码,请加上如下代码:
import sys
reload(sys)
sys.setdefaultencoding('utf8')
【实例截图】
【核心代码】
#coding=utf-8
# 根据输入的关键字查询淘宝商品数据
# 淘宝编码是gbk
import re
import requests
import sys
reload(sys)
sys.setdefaultencoding('utf8')
url = 'https://s.taobao.com/search'
sp = input('请输入查询商品:')
page_num = input('请输入查询页码(以逗号隔开):')
ll = page_num.split(',')
if len(ll) == 2 :
pass
elif len(ll) < 2:
raise ValueError('请输入查询页码信息,格式如下:1,2')
payload = {'q': sp,'s': '1','ie':'utf8'} #字典传递url参数
# file = open('taobao_test.txt','w',encoding='utf-8')
for k in range(int(ll[0]),int(ll[1])): #100次,就是100个页的商品数据
# for k in range(int(1),100):
payload ['s'] = 44*k 1 #此处改变的url参数为s,s为1时第一页,s为45是第二页,89时第三页以此类推
resp = requests.get(url, params = payload)
print((resp.url)) #打印访问的网址
resp.encoding = 'utf-8' #设置编码
print(resp.text)
title = re.findall(r'"raw_title":"([^"] )"',resp.text,re.I) #正则保存所有raw_title的内容,这个是书名,下面是价格,地址
price = re.findall(r'"view_price":"([^"] )"',resp.text,re.I)
loc = re.findall(r'"item_loc":"([^"] )"',resp.text,re.I)
x = len(title) #每一页商品的数量
for i in range(0,x) : #把列表的数据保存到文件中
sp_name = ''
sp_price = 0
sp_loc = ''
sp_name = title[i]
if len(price) < x :
if i < len(price):
sp_price = price[i]
else:
sp_price = 0.00
else:
sp_price = price[i]
if len(loc) < x :
if i < len(loc):
sp_loc = loc[i]
else:
sp_loc = ' '
else:
sp_loc = loc[i]
print(str(k*44 i 1) '商品名称:' sp_name ' ' '价格:' sp_price ' ' '地址:' sp_loc ' ')
# file.write(str(k*44 i 1) '商名:' title[i] ' ' '价格:' price[i] ' ' '地址:' loc[i] ' ')
# file.close()