鱼C论坛

 找回密码
 立即注册
查看: 1222|回复: 6

[已解决]爬取页数大了报错

[复制链接]
发表于 2021-8-26 16:35:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
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)
最佳答案
2021-8-27 15:06:57

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


  2. if __name__ == '__main__':
  3.     headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'}
  4.     url = 'http://scxk.nmpa.gov.cn:81/xk/itownet/portalAction.do?method=getXkzsList'
  5.     data = {
  6.         'on': 'true',
  7.         'page': 51,
  8.         'pageSize': '15',
  9.         'productName': '',
  10.         'conditionType': '1',
  11.         'applyname': '',
  12.         'applysn': ''
  13.     }
  14.     r = requests.post(url=url, headers=headers, data=data)
  15.     print(r.text)
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-8-26 18:16:56 From FishC Mobile | 显示全部楼层
数据流非json格式
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-26 21:02:15 | 显示全部楼层
本帖最后由 suchocolate 于 2021-8-27 09:21 编辑

line超过50之后就会爬不出json了,你核实一下页面有没有那么多页吧。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-27 00:33:14 | 显示全部楼层
suchocolate 发表于 2021-8-26 21:02
line超过50之后就会爬不出json了,你合适一下页面有没有那么多页吧。

有379页
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-27 00:33:49 | 显示全部楼层
wp231957 发表于 2021-8-26 18:16
数据流非json格式

没有看懂
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-27 15:06:57 | 显示全部楼层    本楼为最佳答案   

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


  2. if __name__ == '__main__':
  3.     headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'}
  4.     url = 'http://scxk.nmpa.gov.cn:81/xk/itownet/portalAction.do?method=getXkzsList'
  5.     data = {
  6.         'on': 'true',
  7.         'page': 51,
  8.         'pageSize': '15',
  9.         'productName': '',
  10.         'conditionType': '1',
  11.         'applyname': '',
  12.         'applysn': ''
  13.     }
  14.     r = requests.post(url=url, headers=headers, data=data)
  15.     print(r.text)
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-28 00:29:54 | 显示全部楼层
suchocolate 发表于 2021-8-27 15:06
page50能拿到数据,page51开始就拿不到了,你去手工核实一下51页之后的数据,我这无法登陆这个网页。

是的,网站上第49页往后面就看不了了,点下一页没有数据异常
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-19 09:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表