669021067 发表于 2021-8-26 16:35:11

爬取页数大了报错

import requests
import json
if __name__ == '__main__':
    # UA伪装
    headers = {
      'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36 Edg/92.0.902.78'
    }
    id_list = []#储存企业id
    all_data_list = []#储存企业详细数据
    # 批量获取不同企业的id值
    url ='http://scxk.nmpa.gov.cn:81/xk/itownet/portalAction.do?method=getXkzsList'
    #参数的封装
    for line in range(1,300):
      line = str(line)
      data ={
            'on': 'true',
            'page': line,
            'pageSize': '15',
            'productName':'',
            'conditionType': '1',
            'applyname':'',
            'applysn':''
      }

      json_ids =requests.post(url=url,headers=headers,data=data).json()
      for dic in json_ids['list']:
            id_list.append(dic['ID'])

    #获取企业详细数据
    post_url ='http://scxk.nmpa.gov.cn:81/xk/itownet/portalAction.do?method=getXkzsById'
    for id in id_list:
      data_s ={
            'id':id
      }
      detail_json = requests.post(url=post_url,headers=headers,data=data_s).json()
      #print(detail_json,'---------end----------')
      all_data_list.append(detail_json)
    #持久化储存
    fp = open('allData.json','w',encoding='utf-8')
    json.dump(all_data_list,fp=fp,ensure_ascii=False)
    print('爬取结束')



Traceback (most recent call last):
File "D:\pythonProject3\爬虫\药监总局相关数据爬取.py", line 25, in <module>
    json_ids =requests.post(url=url,headers=headers,data=data).json()
File "C:\Users\hasee\AppData\Local\Programs\Python\Python39\lib\site-packages\requests\models.py", line 910, in json
    return complexjson.loads(self.text, **kwargs)
File "C:\Users\hasee\AppData\Local\Programs\Python\Python39\lib\json\__init__.py", line 346, in loads
    return _default_decoder.decode(s)
File "C:\Users\hasee\AppData\Local\Programs\Python\Python39\lib\json\decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "C:\Users\hasee\AppData\Local\Programs\Python\Python39\lib\json\decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

wp231957 发表于 2021-8-26 18:16:56

数据流非json格式

suchocolate 发表于 2021-8-26 21:02:15

本帖最后由 suchocolate 于 2021-8-27 09:21 编辑

line超过50之后就会爬不出json了,你核实一下页面有没有那么多页吧。

669021067 发表于 2021-8-27 00:33:14

suchocolate 发表于 2021-8-26 21:02
line超过50之后就会爬不出json了,你合适一下页面有没有那么多页吧。

有379页

669021067 发表于 2021-8-27 00:33:49

wp231957 发表于 2021-8-26 18:16
数据流非json格式

没有看懂{:5_96:}

suchocolate 发表于 2021-8-27 15:06:57

669021067 发表于 2021-8-27 00:33
有379页

page50能拿到数据,page51开始就拿不到了,你去手工核实一下51页之后的数据,我这无法登陆这个网页。
import requests


if __name__ == '__main__':
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'}
    url = 'http://scxk.nmpa.gov.cn:81/xk/itownet/portalAction.do?method=getXkzsList'
    data = {
      'on': 'true',
      'page': 51,
      'pageSize': '15',
      'productName': '',
      'conditionType': '1',
      'applyname': '',
      'applysn': ''
    }
    r = requests.post(url=url, headers=headers, data=data)
    print(r.text)

669021067 发表于 2021-8-28 00:29:54

suchocolate 发表于 2021-8-27 15:06
page50能拿到数据,page51开始就拿不到了,你去手工核实一下51页之后的数据,我这无法登陆这个网页。

是的,网站上第49页往后面就看不了了,点下一页没有数据异常
页: [1]
查看完整版本: 爬取页数大了报错