羽中飞人
2021-05-28 19:50
采纳率: 55.6%
浏览 156

python爬取网站被识别如何解决

爬取一个医药电商网站,爬取几页后,就不能获取到数据,后面发现只要把参数里的token手动更新一下,就又可以继续爬取,但过段时间又不能获取了,重复往返,很是烦人

代码缩减如下,异步获取第100类,供应商编号为2447,页码为1的商品数据

url = 'https://dian.ysbang.cn/wholesale-drug/sales/getWholesaleList/v4270'
ysb_cookies = {"__guid": "140493094.3233647003393036000.1603696496870.0378", "Token": "a8e89ec3b1174c72ada65a5ca1b63470"}
headers =  { "User-Agent": "Mozilla/5.0(WindowsNT10.0;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/86.0.4240.198Safari/537.36"}
param = {'classify_id': 100, 'pagesize': '60', 'page': 1, 'provider_id': 2447, 'token': 'a8e89ec3b1174c72ada65a5ca1b63470'}
res = requests.post(url, headers=headers, cookies=ysb_cookies, data=json.dumps(param), timeout=10)
res.raise_for_status()
res.encoding = res.apparent_encoding
root_data = res.json()['data']
raw_datas = root_data['wholesales']


关于自动获取token,本人通过requests自动登录来获取cookies试过了,提示要手机短信验证码

所以如何能够自动获取token,或者能够得到找到计算token的逻辑,或者绕过token来获取数据呢

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • 家铭didphp 2021-05-29 09:10
    已采纳

    结合 selenium 库来操作。selenium 取到的 cookie 保存成文件,然后你这边 requests 请求的时候,去这个文件里读取最新的  token 值。

    已采纳该答案
    打赏 评论
  • cup319 2021-05-29 14:41

    别想了,这个一般性token用md5加密的,

    两种方法 一种是楼上的,简单方便。

    还有一个是高大上的 分析对应的js文件,找到对应的js函数进行处理,从而获取token。

     

     

    打赏 评论
  • 或许你可以在每一次爬取请求之间加一个等待时长,防止封爬虫?

    打赏 评论

相关推荐 更多相似问题