mrht

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

本实例实现了抓取淘宝网中以‘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)+\'条数据\')

 

分类:

技术点:

相关文章:

  • 2021-08-01
  • 2021-12-20
  • 2021-12-24
  • 2022-12-23
  • 2022-02-08
  • 2021-10-05
  • 2021-12-11
  • 2021-12-15
猜你喜欢
  • 2022-12-23
  • 2021-11-22
  • 2021-08-15
  • 2021-10-28
  • 2021-12-20
  • 2022-02-09
相关资源
相似解决方案