Очистите несколько макетов блоков ответов Google с помощью Python
В этом сообщении в блоге рассказывается, как очищать: погоду, акции, конвертер, калькулятор, номер телефона, адрес, население, перевод, словарь, совпадения, рейсы, формулы и органические результаты с несколькими макетами ответов с помощью Python.
Примечание. Здесь рассматриваются не все возможные макеты. Некоторые из них я мог просто не видеть.
вступление
Вы увидите использование if/elif/else
, try/except
, list
понимания, использование функции. Простые вещи, но если вы немного новичок в этом, обязательно посмотрите, что делают некоторые вещи, так как не будет никакого правильного объяснения. Будет показано альтернативное решение API.
Предпосылки
Знакомство с библиотеками beautifulsoup
, requests
, selenium
и селекторами CSS
.
Чтобы получить селекторы CSS
, взгляните на расширение SelectorsGadget для Chrome, чтобы легко получить селекторы CSS
, щелкнув нужный элемент в браузере. CSS
селекторов ссылка.
Очистить окно ответов калькулятора Google
Очистите окно ответов Google Weather
Очистите окно ответов Google Stock
В настоящее время существует два макета в зависимости от страны, из которой был инициирован поиск ('gl'='COUNTRY'
параметр запроса):
Очистите окно ответов Google Population
Очистить окно ответов Google Converter
Очистите окно ответа словаря Google
Очистите поле Google First Organic Answer Box
Очистите второе органическое окно ответов Google
Очистите третье поле органических ответов Google
Очистить окно ответов Google Translation
Очистите поля ответов Google Formula
В настоящее время я нашел два макета формул, этот и тот, что ниже. С первым все просто, со вторым немного сложнее.
Второй макет отличается тем, что при разборе таких формул ( скриншот ниже) в таком макете нет <img>
опции очистки, вместо этого это обычный текст, который не имеет никакого смысла.
Чтобы заставить его работать, мы можем сделать снимок экрана через .screenshot('filename.png')
и сделать запрос post
и обработать это изображение снимка экрана в код.
Примечание. Использование замедляет все достаточно сильно.
Скриншоты от Selenium
:
И несколько примеров реальных скриншотов:
Для преобразования изображений с помощью нам необходимо обработать изображение и преобразовать скриншоты в код Latex
.
- Сделайте авторизацию.
- Сделайте
post
запрос и пришлите уже сделанные скриншоты.
import requests
import json
r = requests.post("https://api.mathpix.com/v3/text",
files={"file": open("YOUR_IMAGE_FILE.png","rb")},
data={
"options_json": json.dumps({
"math_inline_delimiters": ["$", "$"],
"rm_spaces": True
})
},
headers={
"app_id": "APP_ID",
"app_key": "APP_KEY"
}
)
print(json.dumps(r.json(), indent=4, sort_keys=True))
Получить ответ:
{
"auto_rotate_confidence": 0.0046418966250847404,
"auto_rotate_degrees": 0,
"confidence": 0.9849104881286621,
"confidence_rate": 0.9849104881286621,
"is_handwritten": true,
"is_printed": false,
"latex_styled": "f(x)=\\left\\{\\begin{array}{ll}\nx^{2} & \\text { if } x<0 \\\\\n2 x & \\text { if } x \\geq 0\n\\end{array}\\right.",
"request_id": "bd02af63ef187492c085331c60151d98",
"text": "$f(x)=\\left\\{\\begin{array}{ll}x^{2} & \\text { if } x<0 \\\\ 2 x & \\text { if } x \\geq 0\\end{array}\\right.$"
}
...
Примечание: возможно, использование mathpix
будет достаточно для вашей задачи, но если это не так, используйте вместо этого Wolfram Alpha
, это их предметная область.
Посмотрите другие доступные параметры запроса и описание формата. Их цена API.
Очистите блоки ответов Google Flights
Очистить окна ответов Google Matches
Очистите поле ответа адреса Google
Очистка окна ответов Google с помощью SerpApi
SerpApi — это платный API с бесплатным планом.
Отличие в том, что все, что было сделано выше и даже больше, уже присутствует по умолчанию и нет необходимости поддерживать парсер со временем, если что-то в верстке HTML изменится и сломает парсер.
Вместо этого единственное, что действительно нужно сделать, — это перебрать структурированный JSON и быстро получить нужные данные.
Пример кода для всех упомянутых макетов, кроме второго макета формулы:
Ссылки
Код в онлайн-среде разработки • Google Direct Answer Box API • Mathpix • Wolfram Alpha
Outro
Если у вас есть какие-либо вопросы, или что-то работает неправильно, или у вас есть какие-либо предложения, не стесняйтесь оставлять комментарии в разделе комментариев или через Twitter на @serp_api. Если вы нашли ошибку при использовании SerpApi, пожалуйста, добавьте эту ошибку на Форум SerpApi.
Ваш,
Дмитрий и остальные члены команды SerpApi.
Первоначально опубликовано на https://serpapi.com 29 сентября 2021 г.