python — Ошибка при парсинге сайтов на pycharm
При попытке достать код сайта вылезает множество ошибок, но если поменять сайт то всё заработает, код ошибки ниже
Traceback (most recent call last): File "C:\Users\Костьян\Desktop\Projects\venv\lib\site-packages\urllib3\connectionpool.py", line 703, in urlopen httplib_response = self._make_request( File "C:\Users\Костьян\Desktop\Projects\venv\lib\site-packages\urllib3\connectionpool.py", line 449, in _make_request six.raise_from(e, None) File "<string>", line 3, in raise_from File "C:\Users\Костьян\Desktop\Projects\venv\lib\site-packages\urllib3\connectionpool.py", line 444, in _make_request httplib_response = conn.getresponse() File "D:\Projects. Pycharm\Python\lib\http\client.py", line 1374, in getresponse response.begin() File "D:\Projects. Pycharm\Python\lib\http\client.py", line 318, in begin version, status, reason = self._read_status() File "D:\Projects. Pycharm\Python\lib\http\client. py", line 287, in _read_status raise RemoteDisconnected("Remote end closed connection without" http.client.RemoteDisconnected: Remote end closed connection without response During handling of the above exception, another exception occurred: Traceback (most recent call last): File "C:\Users\Костьян\Desktop\Projects\venv\lib\site-packages\requests\adapters.py", line 489, in send resp = conn.urlopen( File "C:\Users\Костьян\Desktop\Projects\venv\lib\site-packages\urllib3\connectionpool.py", line 787, in urlopen retries = retries.increment( File "C:\Users\Костьян\Desktop\Projects\venv\lib\site-packages\urllib3\util\retry.py", line 550, in increment raise six.reraise(type(error), error, _stacktrace) File "C:\Users\Костьян\Desktop\Projects\venv\lib\site-packages\urllib3\packages\six.py", line 769, in reraise raise value.with_traceback(tb) File "C:\Users\Костьян\Desktop\Projects\venv\lib\site-packages\urllib3\connectionpool.py", line 703, in urlopen httplib_response = self._make_request( File "C:\Users\Костьян\Desktop\Projects\venv\lib\site-packages\urllib3\connectionpool.py", line 449, in _make_request six.raise_from(e, None) File "<string>", line 3, in raise_from File "C:\Users\Костьян\Desktop\Projects\venv\lib\site-packages\urllib3\connectionpool.py", line 444, in _make_request httplib_response = conn.getresponse() File "D:\Projects. Pycharm\Python\lib\http\client.py", line 1374, in getresponse response.begin() File "D:\Projects. Pycharm\Python\lib\http\client.py", line 318, in begin version, status, reason = self._read_status() File "D:\Projects. Pycharm\Python\lib\http\client.py", line 287, in _read_status raise RemoteDisconnected("Remote end closed connection without" urllib3.exceptions.ProtocolError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response')) During handling of the above exception, another exception occurred: Traceback (most recent call last): File "C:\Users\Костьян\Desktop\Projects\parsing\TEST PARSING. py", line 4, in <module> url = requests.get(url) File "C:\Users\Костьян\Desktop\Projects\venv\lib\site-packages\requests\api.py", line 73, in get return request("get", url, params=params, **kwargs) File "C:\Users\Костьян\Desktop\Projects\venv\lib\site-packages\requests\api.py", line 59, in request return session.request(method=method, url=url, **kwargs) File "C:\Users\Костьян\Desktop\Projects\venv\lib\site-packages\requests\sessions.py", line 587, in request resp = self.send(prep, **send_kwargs) File "C:\Users\Костьян\Desktop\Projects\venv\lib\site-packages\requests\sessions.py", line 701, in send r = adapter.send(request, **kwargs) File "C:\Users\Костьян\Desktop\Projects\venv\lib\site-packages\requests\adapters.py", line 547, in send raise ConnectionError(err, request=request) requests.exceptions.ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))
python — Ошибка парсинге сайта
Короче есть код для парсинга сайта, первый раз он почти спарсил всё что нужно, но потом при повторных перезапусках в строке 42 он может выдавать ошибку «occupations» или в 74 «workers», а может выдать одну из них отпарсив уже несколько страниц, хотя первые разы такого не было, в чем проблема? Строки с ошибками пометил комментариями
import json import time import requests from bs4 import BeautifulSoup import os from colorama import init, Fore, Back, Style def fetch(url,params): headers = params['headers'] body = params['body'] if params['method']=='GET': return requests.get(url,headers=headers) if params['method']=='POST': return requests.post(url,headers=headers,data=body) return requests main_page = fetch("https://uslugi.yandex.ru/api/213-moscow/get_home_rubrics?lr=213&workersCount=true", { "headers": { "accept": "application/json, text/plain, */*", "accept-language": "ru-RU,ru;q=0.9", "content-type": "application/json;charset=UTF-8", "sec-ch-ua": "\"Chromium\";v=\"102\", \"Opera GX\";v=\"88\", \";Not A Brand\";v=\"99\"", "sec-ch-ua-mobile": "?0", "sec-ch-ua-platform": "\"Windows\"", "sec-fetch-dest": "empty", "sec-fetch-mode": "cors", "sec-fetch-site": "same-origin", "x-app-version": "2.2447.0-15f89d2af056750a15086038994cba0e5bfeea51.0", "x-csrf-token": "da2f836cc33b86d110f223c0f134d10fd47f75e1:1656503032", "x-expected-puid": "", "x-requested-with": "XMLHttpRequest", "x-retpath-y": "https://uslugi.yandex.ru/213-moscow/catalog?rubric=%2Fkrasota", "cookie": "yandexuid=2585937781656503024; i=gWrntQ7lN3x3Uw5qP0Qz15+IdJQ5aqQRg67OJMWpzHPOsjah4cLe4bx1+Vp/twBpHbZv9BdJW9noXS+kKVTl8HPt7l0=; _yasc=2w/cmb9EmlLja6ze+YvsuHHaSC1fsXOTMKq4gKynm/cOzsMs; yuidss=2585937781656503024; ymex=1971863025. yrts.1656503025; gdpr=0; _ym_uid=1656503024996753070; _ym_d=1656503025; _ym_visorc=b; spravka=dD0xNjU2NTAzMDMyO2k9OTUuMzEuMTY0LjE0NztEPTkzRTg4RUU2M0VBMTg2NjNFNTQzNTNCREIyNEUzMTVFNjU1QTVGMjI1NzU2NDNGRjMxRTk3NTE2NEYyN0Y4Q0VBNzBCQ0M2NDt1PTE2NTY1MDMwMzI4NjY4NzEzNjk7aD0zYThmYTliZWYzNTU1NDMzZjk0MmM0NDMyNjAwYTk5Mg==; _ym_isad=2", "Referer": "https://uslugi.yandex.ru/213-moscow/catalog?rubric=%2Fkrasota", "Referrer-Policy": "strict-origin-when-cross-origin", 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.115 Safari/537.36 OPR/88.0.4412.65' }, "body": "{\"data\":{\"params\":{}}}", "method": "POST" }) for i in range(58): name_for_dir = main_page.json()['occupations'][8]['specializations'][i]['name'] # Ошибка occupations os.mkdir(f'{name_for_dir}') print('\t'+Fore.RED + main_page.json()['occupations'][8]['specializations'][i]['name']+Fore.RESET) krasota_specializations_id = main_page.json()['occupations'][8]['specializations'][i]['numberId'] krasota_specializations_seoID = 'https://uslugi. yandex.ru/api/213-moscow/category' + main_page.json()['occupations'][8]['specializations'][i]['seoId'] for page in range(10): print('\t'+Fore.RED+f'Page: {page} from 10'+Fore.RESET) workers = fetch(f"{krasota_specializations_seoID}--{krasota_specializations_id}?p={page}", { "headers": { "accept": "application/json, text/plain, */*", "accept-language": "ru-RU,ru;q=0.9", "sec-ch-ua": "\"Chromium\";v=\"102\", \"Opera GX\";v=\"88\", \";Not A Brand\";v=\"99\"", "sec-ch-ua-mobile": "?0", "sec-ch-ua-platform": "\"Windows\"", "sec-fetch-dest": "empty", "sec-fetch-mode": "cors", "sec-fetch-site": "same-origin", "x-app-version": "2.2447.0-15f89d2af056750a15086038994cba0e5bfeea51.0", "x-csrf-token": "5d9ba3e6858087eb66d56266930eee265a79cf3d:1656503276", "x-expected-puid": "", "x-requested-with": "XMLHttpRequest", "x-retpath-y": f"{krasota_specializations_seoID}--{krasota_specializations_id}?p={page}", "x-uslugi-apitargeturl": f"{krasota_specializations_seoID}--{krasota_specializations_id}?p={page}", "cookie": "yandexuid=2585937781656503024; i=gWrntQ7lN3x3Uw5qP0Qz15+IdJQ5aqQRg67OJMWpzHPOsjah4cLe4bx1+Vp/twBpHbZv9BdJW9noXS+kKVTl8HPt7l0=; yuidss=2585937781656503024; ymex=1971863025. yrts.1656503025; gdpr=0; _ym_uid=1656503024996753070; _ym_d=1656503025; _ym_visorc=b; spravka=dD0xNjU2NTAzMDMyO2k9OTUuMzEuMTY0LjE0NztEPTkzRTg4RUU2M0VBMTg2NjNFNTQzNTNCREIyNEUzMTVFNjU1QTVGMjI1NzU2NDNGRjMxRTk3NTE2NEYyN0Y4Q0VBNzBCQ0M2NDt1PTE2NTY1MDMwMzI4NjY4NzEzNjk7aD0zYThmYTliZWYzNTU1NDMzZjk0MmM0NDMyNjAwYTk5Mg==; _ym_isad=2; is_gdpr=0; is_gdpr_b=CNzDcxC+ew==; _yasc=/BObO2mO50Khb3LNMjsrTAvUhIW7wjC4qHpExN/rupJa65vp", "Referer": f"{krasota_specializations_seoID}--{krasota_specializations_id}?p={page}", "Referrer-Policy": "strict-origin-when-cross-origin", 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.115 Safari/537.36 OPR/88.0.4412.65' }, "body": None, "method": "GET" }) print(f"{krasota_specializations_seoID}--{krasota_specializations_id}?p={page}") persons = workers.json()['workers']['items'] # Ошибка workers for person in persons: person_name = persons[person]['personalInfo']['displayName'] try: person_description = persons[person]['personalInfo']['description']. strip() except: person_description = '' continue person_socialLinks_appointments = persons[person]['personalInfo']['socialLinks']['appointments'] person_socialLinks_messengers = persons[person]['personalInfo']['socialLinks']['messengers'] person_socialLinks_other = persons[person]['personalInfo']['socialLinks']['other'] person_socialLinks_appointments_list = {} person_socialLinks_messengers_list = {} person_socialLinks_other_list = {} for ln in person_socialLinks_appointments: first = ln second = person_socialLinks_appointments[ln] person_socialLinks_appointments_list[first] = second for ln in person_socialLinks_messengers: first = ln second = person_socialLinks_messengers[ln] person_socialLinks_messengers_list[first]= second for ln in person_socialLinks_other: first = ln second = person_socialLinks_other[ln] person_socialLinks_messengers_list[first]= second if person_socialLinks_appointments == {}: person_socialLinks_appointments = '' if person_socialLinks_messengers == {}: person_socialLinks_messengers = '' if person_socialLinks_other == {}: person_socialLinks_other = '' person_data = [] person_data. append( { 'Name: ':person_name, 'Appointments: ':person_socialLinks_appointments_list, 'Messangers: ': person_socialLinks_messengers_list, 'Other Links: ': person_socialLinks_other_list, 'Description: ': person_description } ) print(Fore.YELLOW+'Name: '+Fore.RESET+f'{person_name}\n\n'+Fore.YELLOW+'Links:\n'+Fore.GREEN+'Appointments: '+Fore.RESET+f'{person_socialLinks_appointments}\n'+ Fore.GREEN+'Messengers: '+Fore.RESET+f'{person_socialLinks_messengers}\n'+Fore.GREEN+'Other: '+Fore.RESET+f'{person_socialLinks_other}\n\n'+Fore.YELLOW+'Description: '+ Fore.RESET+f'{person_description}\n') print(Fore.RED+'----------------------'+Fore.RESET) with open(f'{name_for_dir}/page_{page+1}.json','a',encoding='utf-8') as file: json.dump(person_data,file,indent=4,ensure_ascii=False)
Что это такое и как их исправить
Вы работаете с электронной таблицей и хотите использовать функцию.
Вы пишете формулу, взволнованная получением результатов, затем вы видите «Ошибка синтаксического анализа формулы», оставляя вас в замешательстве и немного побежденном.
Давайте рассмотрим, что это на самом деле означает и что может привести к этому сообщению об ошибке.
Что такое ошибка синтаксического анализа формулы?
Ошибка синтаксического анализа формулы возникает, когда вы вводите формулу в ячейку, а программа для работы с электронными таблицами не может понять, что вы от нее хотите.
Это все равно, что пытаться говорить на другом языке, не тратя время на его изучение.
Программное обеспечение может понять, что вы говорите, но недостаточно хорошо, чтобы дать вам точный результат.
Возможны две причины этой ошибки: опечатка в формуле или неясный порядок операций.
Мы рассмотрим несколько примеров каждого из них, чтобы вы могли определить и исправить их в своих собственных формулах.
Распространенные ошибки синтаксического анализа формулы
Обычно ошибка синтаксического анализа формулы возникает из-за:
Неправильного синтаксиса – Например: ввод =+ вместо =, забывание заключать текстовые значения в кавычки, размещение двух операторов рядом друг с другом без каких-либо промежуточных значенийНеполный синтаксис – напр. Опуская скобки.
Другая причина, по которой вы можете получить эти ошибки, заключается в том, что вы пытаетесь использовать текстовые значения вместо чисел.
Давайте углубимся в конкретные типы ошибок, с которыми вы можете столкнуться:
Ошибка #Н/ДОдной из наиболее распространенных ошибок является ошибка #Н/Д. Это происходит, когда формула не может найти то, что ищет.
Например, если вы используете функцию ВПР для поиска значения в таблице, а искомого значения нет в таблице, вы получите ошибку #Н/Д.
#DIV/0 ОшибкаЭто происходит при попытке разделить число на ноль.
Например, если у вас есть формула =A17/B17 и значение в B17 равно 0, вы получите #DIV/0! ошибка.
#ССЫЛКА! ОшибкаЕсли формула содержит недопустимую ссылку на ячейку, вы получите это сообщение об ошибке.
Например, если у вас есть формула, которая ссылается на ячейки A17:A22, и вы удаляете строку 21, формула вернет ошибку #ССЫЛКА! ошибка, потому что у него больше нет действительной ссылки.
Ошибка #ЗНАЧОшибка #ЗНАЧ! ошибка возникает, когда формула содержит недопустимое значение.
Например, если у вас есть формула, которая умножает две ячейки, и одна из ячеек содержит текст вместо числа, вы получите эту ошибку.
#NAME ErrorЭта ошибка возникает, когда формула содержит недопустимое имя.
Например, если у вас есть именованный диапазон под названием «Цены», и вы случайно введете «цена» в свою формулу, вы получите ошибку #ИМЯ? ошибка.
#ЧИСЛО Ошибка#ЧИСЛО! ошибка возникает, когда формула содержит недопустимое число.
Допустим, у вас есть формула, которая делит две ячейки, и результат слишком велик для отображения, вы получите эту ошибку.
Теперь, когда мы знаем, что может вызвать ошибку синтаксического анализа формулы, давайте посмотрим, как мы можем ее исправить.
Как исправить ошибки синтаксического анализа формулы
Лучший способ избежать ошибок синтаксического анализа формулы — тщательно проверять синтаксис при вводе. Если вы не уверены, в каком порядке должны выполняться операции, вернитесь к порядку операций, предложенному используемым вами программным обеспечением.
Если вы получаете ошибки анализа формулы, вот несколько шагов, которые вы можете предпринять, чтобы исправить их:
- Проверьте правильность введенных формул.
- Используйте функцию ЕСЛИОШИБКА и отображайте другой результат в случае возникновения ошибки. Например. «Не найдено.»
- Проверьте правильность написания и убедитесь, что все скобки стоят на своих местах.
- Убедитесь, что вы используете правильные операторы.
- Используйте ссылки на ячейки вместо жестко закодированных значений в формулах.
- Если вы используете текстовые значения, убедитесь, что они заключены в кавычки.
Следуя этим шагам, вы сможете избежать ошибок при синтаксическом анализе формул и получить точные результаты из ваших формул.
Темы: Google Таблицы
Не забудьте поделиться этим постом!
Связанные статьи
- hubspot.com/marketing/how-to-lock-cells-in-google-sheets»>
Как обтекать текст в Google Sheets
17 мая 2023 г.
Как использовать vlookup в Google Sheets
10 мая 2023 г.
Как использовать массивы в Google Sheets
10 мая 2023 г.
Как использовать SumIf в Google Sheets
03 мая 2023 г.
hubspot.com/marketing/google-sheets-templates»>Как выделить дубликаты в Google Таблицах [шаг за шагом]
12 июля 2022 г.
hubspot.com/marketing/histogram-google-sheets»>30 ярлыков Google Sheets, которые нужно знать маркетологам
22 апр. 2022 г.
hubspot.com/marketing/how-to-sort-in-google-sheets»>
Как заблокировать ячейки в Google Таблицах
24 мая 2023 г.
21 из лучших бесплатных шаблонов Google Sheets на 2023 год
17 февраля 2023 г.
Как сделать гистограмму в Google Таблицах [5 шагов]
10 июня 2022 г.
Как сортировать в Google Sheets
15 апр. 2022 г.
6 способов исправить ошибку синтаксического анализа на устройстве Android
- Миниинструмент
- Центр новостей MiniTool
- 6 способов исправить ошибку синтаксического анализа на вашем устройстве Android
Стелла | Подписаться | Последнее обновление
Если вы хотите установить приложение на свой компьютер, вы можете обнаружить, что установка не удалась, и вы получили сообщение об ошибке синтаксического анализа. Эта ошибка синтаксического анализа Android может быть вызвана многими причинами, и решения могут быть различными. Теперь в этом посте MiniTool Software покажет вам, что такое ошибка синтаксического анализа и как эффективно избавиться от нее.
Что такое ошибка синтаксического анализа?
Ошибка синтаксического анализа — это сообщение об ошибке, которое вы можете получить на своем телефоне Android, когда не удается установить приложение. Это сообщение об ошибке не является сложным сообщением и может быть вызвано многими причинами.
Эта ошибка всегда следует за сообщением: Возникла проблема при синтаксическом анализе пакета . Когда вы видите эту ошибку анализа Android, вы можете знать, что ваш телефон Android не может установить текущее приложение по какой-то причине.
Проблема с ошибкой Parse Android всегда возникает, когда вы пытаетесь установить приложение, загруженное из стороннего источника, а не из официального магазина Google Play. В некоторых случаях вы также можете получить это сообщение об ошибке при попытке установить приложение, загруженное из Google Play Store.
Возможно, вам все же нужно установить это приложение и пользоваться им. В этом посте мы постараемся объяснить основные причины этой проблемы, а затем покажем вам некоторые возможные решения, которые могут эффективно избавиться от этой проблемы.
Причины ошибки синтаксического анализа Android
Основные причины ошибки синтаксического анализа на Android следующие:
- Приложение, которое вы хотите установить, несовместимо с вашим устройством Android.
- У вашего устройства нет разрешения на установку этого приложения.
- Файл приложения, которое вы хотите установить, поврежден, неполный или поврежден.
- Процесс установки заблокирован антивирусом или программой безопасности.
- Что-то не так с вашим Android-устройством.
- Приложение, которое вы хотите установить, было изменено.
Мы также ищем эту проблему в Интернете и собираем некоторые решения, которые можно использовать для ее полного устранения. Вы можете прочитать следующую часть, чтобы получить подходящую, чтобы избавиться от вашей реальной проблемы.
Как исправить ошибку синтаксического анализа на Android?
Если вы не знаете точную причину проблемы с ошибкой Android Parse, вы можете попробовать эти методы один за другим, пока не найдете подходящий.
Решение 1. Обновите Android
Возможно, приложение несовместимо с вашей старой ОС Android. Затем вы можете обновить Android до последней версии, чтобы увидеть, исчезла ли ошибка синтаксического анализа Android.
Решение 2. Изменить разрешение на Android
Если разрешение на установку приложений из неизвестных источников отключено, также может возникнуть ошибка синтаксического анализа Android.
Обычно, чтобы гарантировать безопасность вашего Android, вам лучше отключить такое разрешение, чтобы ваш Android не загружал вредоносные программы из сторонних источников, а также другие проблемы. Но если вы все еще хотите загрузить и использовать приложение, полученное из стороннего источника, вы можете временно включить это разрешение, а затем загрузить и установить его на свой компьютер.
Решение 3. Загрузите и снова установите приложение
Если файл приложения поврежден или неполный, вы можете снова загрузить и установить приложение, чтобы избавиться от ошибки анализа Android.
Вы можете использовать исходный источник загрузки или попробовать новый надежный источник. Кроме того, вы также можете попробовать новый браузер, чтобы получить APK-файл.
Решение 4. Временно отключите антивирусное программное обеспечение Android
Иногда антивирусное программное обеспечение Android рассматривает установочный файл приложения как вирус и не позволяет вам его установить. Таким образом, если вы уверены, что загружаемый файл безопасен, вы можете временно отключить антивирусное программное обеспечение Android, чтобы увидеть, исчезнет ли ошибка синтаксического анализа.
Решение 5. Включите отладку по USB
Некоторые пользователи считают, что ошибка синтаксического анализа исчезает после включения отладки по USB на устройстве Android. Итак, вы также можете попробовать этот метод на своем устройстве.
Решение 6. Восстановите заводские настройки Android
Если все вышеперечисленные решения не могут решить вашу проблему, восстановление заводских настроек Android будет последним средством.