前一段时间负责爬取淘宝的一些商品信息,本来接到爬取淘宝的任务的时候,下意识的就想用selenium(毕竟淘宝有点不好搞)。但是使用selenium时搜索页面也得需要登录,并且当使用selenium时不能使用本地浏览器缓存的cookie,这就有点恶心了。

但是我发现下面的接口携带的时搜索页面的数据,而且还是json数据,这就很开心了。

https://s.taobao.com/search?data-key=s&data-value=44&ajax=true&_ksTS=1574221181541_764&callback=jsonp765&q=搜索关键词&imgfile=&js=1&stats_click=search_radio_all%3A1&initiative_id=staobaoz_20191120&ie=utf8&bcoffset=3&ntoffset=0&p4ppushleft=1%2C48

有接口就什么都好说,这个接口里面决定数据的参数只有三个:

  1. _ksTS:时间戳 + “ _” + “一个数字(三位数或者四位数)”
  2. callback:_ksTS后面数字加1
  3. q:搜索关键词
  4. data-value:(页码 -1)*44

data-value的作用就是确定页码数量的,淘宝搜索页每页是44条数据,故而data-value的值就是(页码 -1)*44。

这里面主要的还是_ksTS参数后面的那个数字,通过多次对比观察也没有发现规律,最后就干脆也不管三位或者四位数字了,就从100~1999随机选择一个整数来使用,没想到竟然可以可以使用,真开心。接口解决了,剩下的就是带着cookie开始爬取数据了。

还有一点这个接口获取的数据,要先去除头部和尾部的多余数据,然后再转成json数据才行。

头部多余数据

尾部多余数据

这些去除之后便可以转json了。

话不多说直接上代码

import requests, time, random, re, json, xlwt
import time
from lxml import etreeclass TaoBao(object):def __init__(self):self.a = 1self.b = 1self.cb = random.randint(100, 1999)self._ksTS = str(int(time.time()*1000)) + '_' + str(self.cb)self.callback = 'jsonp' + str(self.cb + 1)]self.headers = {'Referer': 'https://detail.tmall.com/item.htm?','user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36','cookie':''}self.proxies = [{'HTTPS':'36.250.156.249:9999'},]def index(self):for x in range(1, 30):print('正在爬取第{}页'.format(x))url = 'https://s.taobao.com/search?data-key=s&data-value={}&ajax=true&_ksTS={}&callback={}&q=新疆一级灰枣&imgfile=&commend=all&ssid=s5-e&search_type=item&sourceId=tb.index&spm=a21bo.2017.201856-taobao-item.1&ie=utf8&initiative_id=tbindexz_20170306&bcoffset=3&p4ppushleft=1%2C48'.format(str((x - 1) * 44), self._ksTS, self.callback)response = requests.get(url, headers=self.headers, proxies=random.choice(self.proxies)).text.strip(');')response = re.sub(r'jsonp.*?\(', '', response)json_response = json.loads(response)goods_list = json_response['mods']['itemlist']['data']['auctions']for goods in goods_list:try:qwe = goods['icon'][0]['title']except:qwe = 'asdfa'if '掌柜热卖' not in qwe:# 价格price = goods['view_price']# 名称name = goods['raw_title']# 付款人数try:money_num = goods['view_sales']except:money_num = '没有数据'# 店家boss = goods['nick']# 地点site = goods['item_loc']print(price, name, money_num, boss, site)time.sleep(random.randint(5, 10))if __name__ == '__main__':t = TaoBao()t.index()

代码写的不规范,大家就这样看吧,里面有些我改了改,可能会不能直接运行,调试一下改改就好了。

提示:在淘宝改之前能用,如果淘宝改规则的话,就不能使用了。(至少写博客的时候是能用的)
关于详情页的数据,我这边也写了,但是写的有点low,就不贴出来了。

python使用requests爬取淘宝搜索页数据相关推荐

  1. python + selenium多进程爬取淘宝搜索页数据

    python + selenium多进程爬取淘宝搜索页数据 1. 功能描述 按照给定的关键词,在淘宝搜索对应的产品,然后爬取搜索结果中产品的信息,包括:标题,价格,销量,产地等信息,存入mongodb ...

  2. python 淘宝搜索_Python使用Selenium+BeautifulSoup爬取淘宝搜索页

    使用Selenium驱动chrome页面,获得淘宝信息并用BeautifulSoup分析得到结果. 使用Selenium时注意页面的加载判断,以及加载超时的异常处理. import json impo ...

  3. python+scrapy简单爬取淘宝商品信息

    python结合scrapy爬取淘宝商品信息 一.功能说明: 已实现功能: 通过scrapy接入selenium获取淘宝关键字搜索内容下的商品信息. 待扩展功能: 爬取商品中的全部其他商品信息. 二. ...

  4. python不登陆爬取淘宝数据_python登录并爬取淘宝信息代码示例

    本文主要分享关于python登录并爬取淘宝信息的相关代码,还是挺不错的,大家可以了解下. #!/usr/bin/env python # -*- coding:utf-8 -*- from selen ...

  5. selenium爬取淘宝商品基础数据以及商品详情(茶叶数据)

    selenium爬取淘宝商品基础数据以及商品详情 目录 网页分析 确定要爬取的数据 分析网页构成 爬取流程 登入 爬取基础数据以及商品详情 爬取基础数据 爬取商品详情 淘宝滑动验证码 保存EXCEL中 ...

  6. python实战项目一:requests爬取淘宝图片

    按关键词爬取淘宝的图片 ●实验过程遇到的问题: 1.      一开始我没注意,将文件名写为requests.py,但是运行时却出现了这个错误:module 'requests' has no att ...

  7. Python requests爬取淘宝商品信息

    作者:achen 联系方式:wh909077093 这里记一下大概的思路以及实现方法,有基础的小伙伴看了基本就能实现了,如果有业务需要可以联系我哈哈哈哈哈哈 本文代码参考猪哥66的思路 项目内容 指定 ...

  8. 爬取淘宝任意商品数据,你上你也行

    文章目录 构造url 分析页面结构 爬取多页数据 最后 构造url 第一页url https://s.taobao.com/search?q="面膜" 第二页url https:/ ...

  9. 如何爬取淘宝电商数据

    在爬取淘宝电商数据之前,请务必遵守淘宝的相关规则和政策,并获得合法的授权. 爬取淘宝数据的方法有很多种,这里介绍几种常见的方法. 使用淘宝开放平台的 API 接口.淘宝开放平台提供了许多 API 接口 ...

最新文章

  1. spark 序列化错误 集群提交时_【问题解决】本地提交任务到Spark集群报错:Initial job has not accepted any resources...
  2. java dagger2_从零开始搭建一个项目(rxJava+Retrofit+Dagger2) ---上
  3. 八数码问题及A*算法
  4. [NIOS] 如何Erase EPCS flash內容
  5. Perl默认的内部变量
  6. sublime php快捷键,分享Sublime Text 3快捷键精华版!
  7. 基于jQuery实现水平轮播效果
  8. 打游戏学习人工智能!不写代码|湾区人工智能
  9. 英特尓祭出开挖数据价值的“六脉神剑”!
  10. java 如何取01 zz_java中synchronized用法(zz)
  11. 已支持macOS Big Sur 的apple App更新列表
  12. 汇编语言编写Hello World
  13. CDA备考学习学习笔记——基础知识篇(一)
  14. 图灵学院:淘宝大秒系统设计详解
  15. 特大通知!!!CSDN和简书博客以后同步更新
  16. 如何用开源飞控PIXHAWK进行二次开发?
  17. android 大字体,大字体下载-大字体Big Font 3.21 安卓版-我游网
  18. 华为双前置摄像头_国产手机集体爱上“双打孔屏”,前置双摄像头将成2020年标配?...
  19. 网络数据的背后——网络日志的分析指标
  20. 排查处理Failed to find latest MicroserviceVersionMeta, appId=chw-apaas, microserviceName=fileservice

热门文章

  1. SPI DMA发送接收数据
  2. matlab 显示表格化,[转载]matlab窗口中显示excel表格的问题
  3. python rgb转换为gray
  4. Python设置断点breakpoint(免IDE)
  5. 物联网信息安全复习笔记
  6. SpringBoot banner图样
  7. Win10 升级使用 WSL2
  8. 显示农历天气时钟小部件下载_文字云时钟安卓版下载|文字云时钟app下载_v1.0
  9. win7计算机内存占用高,win7系统内存占用高的解决方法
  10. 华为服务器如何登录修改密码,服务器登录修改密码