您的位置:首页 > 编程语言 > Python开发

Python实例之抓取淘宝商品数据(json型数据)并保存为TXT

2017-05-29 18:17 936 查看
本实例实现了抓取淘宝网中以‘python’为关键字的搜索结果,经详细查看数据存储于html文档中的js脚本中,数据类型为JSON

具体实现代码如下:

import requests
import re
import json
from urllib.parse import urlencode
from bs4 import BeautifulSoup
finalstr = ''
count = 0                   #初始化页码对应参数,0为首页
test = 0                    #初始化数据总条数
for j in range(0,100):           #共搜索100页数据
count = 44*j                  #每跳一页参数值增加44
data = {
'q':'python',
'imgfile':'',
'js':'1',
'stats_click':'search_radio_all:1',
'initiative_id':'staobaoz_20170529',
'ie':'utf8',
'bcoffset':'4',
'ntoffest':'4',
'p4ppushleft':'1,48',
's':count
}                               #浏览器地址的get参数,只有's'会随着页码改变而改变
url = 'https://s.taobao.com/search?' + urlencode(data)         #浏览器地址
req = requests.get(url)
pattern = re.compile('g_page_config = (.*?);\n    g_srp_loadCss()')    #正则表达式匹配数据
result = pattern.search(req.text)
# result.group(1)
jsres = json.loads(result.group(1))       #匹配后获得的json数据深度比较大,需要层层剖析
sedata = jsres['mods'][ 'itemlist']['data']['auctions']     #经过剖析后的json数据
for i in range(0,len(sedata)):
rt = '标题:'+sedata[i]['raw_title']+'\n'
finalstr += rt
rp = '价格:'+sedata[i]['view_price']+'\n'
finalstr += rp
rn = '卖家:'+sedata[i]['nick']+'\n'
finalstr += rn
rd = '地址:'+sedata[i]['item_loc']+'\n\n'
finalstr += rd
print('当前正在读取第'+str(j+1)+"页的第"+str(i+1)+'条数据...')
test += 1
f = open('淘宝搜索python时的商品数据,共'+str(test)+'条.txt','w',1,'UTF-8')    #保存数据到TXT
f.write(finalstr)
print('正在保存。。。')
f.close()
print('保存完毕!共'+str(test)+'条数据')
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: