w0923_- 2022-08-04 11:44 采纳率: 75%
浏览 92
已结题

疫情出行政策爬取报错

问题遇到的现象和发生背景

爬取疫情出行政策时通过抓包找到了返回数据的URL 用新页面复制该URL打开报错401
用爬虫访问也是一样

是通过这个URL抓包到数据返回的地址的
http://www.gov.cn/zhuanti/2021yqfkgdzc/index.htm#/

运行结果及报错内容

401

我的解答思路和尝试过的方法

尝试在pram里加入时间戳 反爬也做了

我想要达到的结果

可正常获取到返回的数据


import requests
import json
import time
#格林威治时间
times = time.time()
times = int(times)
#now_time = time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime(times))
#now_times = int(now_time)
print(times)
#print(now_time)
#获取疫情出行政策
cov19heades={
"Set-Cookie": "acw_tc=2760778616594257701925311ee694fc8d01ad5bf99a82936af6b477ae0ee0;path=/;HttpOnly;Max-Age=1800",
"Accept": "t??/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-??change;v=b3;q=0.9",
"Content-Type": "application/json",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36"

}
covurl= "http://bmfw.www.gov.cn/bjww/interface/interfaceJson"

parm = {
  "appId": "NcApplication",
  "paasHeader": "zdww",
  "timestampHeader": times,
  "nonceHeader": "123456789abcdefg",
  "signatureHeader": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  "code": "120000",
  "key": "6C3C60DC1BF54982A54D5A8CB4D1817D"
}
print(parm)
def cov19():
    cov = requests.post(covurl,parm,cov19heades)
    cov.encoding='utf-8'
    print(cov)
    cov.close()
cov19()
  • 写回答

1条回答 默认 最新

  • herosunly Python领域优质创作者 2022-08-04 12:41
    关注

    亲自运行了下程序,signatureHeader和key是根据ip等信息生成的(典型的反爬,signatureHeader用xxx表示是不行的),是加密后的。这部分要么逆向解出来,要么只能放弃静态爬虫了,用selenium吧。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 8月12日
  • 已采纳回答 8月4日
  • 修改了问题 8月4日
  • 赞助了问题酬金10元 8月4日
  • 展开全部

悬赏问题

  • ¥15 linux驱动,linux应用,多线程
  • ¥20 我要一个分身加定位两个功能的安卓app
  • ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
  • ¥15 IAR程序莫名变量多重定义
  • ¥15 (标签-UDP|关键词-client)
  • ¥15 关于库卡officelite无法与虚拟机通讯的问题
  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助