Ошибка Expecting value: line 1 column 1 (char 0) при парсинге сайта

zaivanza

Новичок
Пользователь
Дек 28, 2021
28
1
3
Я паршу сайт, но (скорее всего) из-за частоты запросов, мне постоянно выдает ошибку: Expecting value: line 1 column 1 (char 0)
Вот код:
Python:
result = []
async def x_get(session, t: str):
    url = f'...={t}'
    async with session.get(url, ssl=False) as resp:
        resp_json = await resp.json(content_type=None)
        result.append(resp_json)

async def x_scraper():
    items = ['RAMADA', 'BROOKLIN', 'NEO', 'RALF', 'QQQ', 'NEWYORK', 'ELON', 'DRAG', 'MOSCOW']
    async with aiohttp.ClientSession() as session:
        tasks = []
        for t in items:
            task = asyncio.create_task(x_get(session, t))
            tasks.append(task)
        await asyncio.gather(*tasks)

Как можно исправить ошибку, не замедляя код? Я пробовал замедлять через sleep, но все равно в 70% случаях выдает ошибку:

Python:
async def x_scraper():

    items1 = ['RAMADA', 'BROOKLIN', 'NEO', 'RALF', 'QQQ']
    items2 = ['NEWYORK', 'ELON', 'DRAG', 'MOSCOW']

    async with aiohttp.ClientSession() as session:
        tasks = []
        for t in items1:
            task = asyncio.create_task(x_get(session, t))
            tasks.append(task)
        await asyncio.sleep(1)
        for t in items2:
            task = asyncio.create_task(x_get(session, t))
            tasks.append(task)

        await asyncio.gather(*tasks)
 

Jerry

Пользователь
Пользователь
Июл 28, 2020
29
12
3
Интересно было бы увидеть traceback целиком.
Судя по ошибке дело не в том, что много запросов, поэтому вряд ли второй вариант чем-то поможет. В таких случаях скорее всего прилетел бы таймаут, закрытие соединения сервером или еще чего из 400-500 кодов.
Ну и код вызова x_scrapper можно заодно добавить.
 

zaivanza

Новичок
Пользователь
Дек 28, 2021
28
1
3
Интересно было бы увидеть traceback целиком.
Судя по ошибке дело не в том, что много запросов, поэтому вряд ли второй вариант чем-то поможет. В таких случаях скорее всего прилетел бы таймаут, закрытие соединения сервером или еще чего из 400-500 кодов.
Ну и код вызова x_scrapper можно заодно добавить.
Python:
Traceback (most recent call last):
  File "/Users/ivanburylov/PycharmProjects/scraper/xxx.py", line 1438, in <module>
    asyncio.run(x_scraper())
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/asyncio/runners.py", line 44, in run
    return loop.run_until_complete(main)
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/asyncio/base_events.py", line 641, in run_until_complete
    return future.result()
  File "/Users/ivanburylov/PycharmProjects/scraper/xxx.py", line 491, in x_scraper
    await asyncio.gather(*tasks)
  File "/Users/ivanburylov/PycharmProjects/scraper/xxx.py", line 219, in x_get
    resp_json = await resp.json(content_type=None)
  File "/Users/ivanburylov/PycharmProjects/scraper/venv/lib/python3.10/site-packages/aiohttp/client_reqrep.py", line 1119, in json
    return loads(stripped.decode(encoding))
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/json/__init__.py", line 346, in loads
    return _default_decoder.decode(s)
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/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)

Код вызова:
Python:
asyncio.run(x_scraper())
 

Форум IT Специалистов