Количество страниц, найденных в поиске Google

Я ищу количество страниц, на которых встречается поисковый запрос «indieea». Посетил эту страницу:

https://www.google.com/search?q=%22indieea%22

Перейти на последнюю страницу результатов поиска. Вы получаете эту строку...

we have omitted some entries very similar to the 64 already displayed.

Функция должна вернуть 64, поскольку по данному поисковому запросу «indieea» имеется 64 страницы.

Код, который я пробовал:

import asyncio
import urllib.parse
from playwright.async_api import async_playwright  # 1.44.0

async def main():
    term = urllib.parse.quote_plus("टंकलेखन")
    url = f"https://www.google.com/search?q = {term}"

    async with async_playwright() as pw:
        browser = await pw.chromium.launch()
        page = await browser.new_page()
        await page.goto(url, wait_until = "domcontentloaded")

        # Find the <a> tag with aria-label = "Page 9" and class = "fl"
        link_element = page.locator('a[aria-label = "Page 9"].fl').first
        if await link_element.count() > 0:  # Check if the element exists
            # Get the outerHTML of the element to print the full source code of the link
            link_html = await link_element.evaluate('el => el.outerHTML')
            print("Source code of the link:", link_html)
        else:
            print("Element not found.")

        await browser.close()

if __name__ == "__main__":
    asyncio.run(main())

Потому что 5 долларов за 1000 запросов к API — это дорого. developers.google.com/custom-search/v1/overview

shantanuo 27.08.2024 06:29

Алгоритм двоичного поиска может быть более эффективным? Проверяйте страницы 1, 2, 4, 8, 16, 32, ... до тех пор, пока что-то не выйдет из строя, затем вернитесь и оштрафуйте конкретную страницу, на которой произошел сбой. Я не знаю, возможно ли это, но OpenSearch указывает параметр startIndex . Кроме того, я не часто пользуюсь Google, так что...

Anerdw 27.08.2024 07:20

Просто замените в коде термин «переменная» на «indieea». Мне нужно вернуть любое приблизительное число, которое возвращает Google. Меня устраивает результат <10 или >100.

shantanuo 27.08.2024 10:36
No. It is based on another stackoverflow question. <== Который вы тоже написали и явно сгенерирован ИИ, верно?
Barry the Platipus 27.08.2024 11:30

Все методы программирования, которые я пробовал до сих пор, возвращали на первой странице 12 или 15 результатов, а не 64.

Luke L 31.08.2024 02:27

Кроме того, я не вижу упомянутой вами строки, когда выполнял поиск вручную. Возможно, дело в каких-то настройках?

Luke L 31.08.2024 02:29

Ни алгоритмами, ни ручным поиском такой строки просто нет.

Luke L 31.08.2024 02:29
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
7
127
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Не уверен, что это что-то дает, но если вы нажмете кнопку «инструменты» в Google, вы увидите, сколько результатов было найдено. Если вы используете поисковый запрос с «», он будет искать точные совпадения. Я вижу 913 просмотров.

Фактически, эта точка данных находится в возвращенном HTML-коде, и вы можете выполнить поиск на возвращенной странице:

document.getElementById("result-stats").innerText

или через ваш любимый пакет синтаксического анализа HTML Python.

На данный момент это возвращает:

About 918 results (0.21 seconds)

Можете ли вы автоматизировать нажатие кнопки инструментов в скрипте Python?

shantanuo 30.08.2024 06:08

Есть несколько способов сделать это. Я перечислю два лучших способа здесь:

  1. Используйте googlesearch API Python:
import googlesearch as gsearch


query = 'indieea'

for i, u in enumerate(gsearch.search(query, lang='en')):
    print(i, u)

print(f'query "{query}" returns {i} results') # outputs: query "indieea" returns 144 results

Вы также можете добавить параметры stop, start, pause или num. Вот краткий обзор того, что делают эти параметры:

  • stop: остановка поиска при достижении индекса stop.
  • start: возвращать результаты только после индекса start.
  • pause: Интервал ожидания между поисками.
  • num: Возвращается количество URL-адресов при каждом «поиске». По умолчанию библиотека каждый раз возвращает 10 URL-адресов, продолжая до тех пор, пока результаты не исчерпаются или не достигнут stop.
  1. Используйте Python API serpapi:
from serpapi import GoogleSearch
query = "indieea"
search = GoogleSearch({
    "q": "indieea",
    "api_key": "<your api key>"
  })
result = search.get_dict()
print(f'query "{query}" returns {len(result)} results')

Однако для того, чтобы этот подход работал, вам необходимо зарегистрировать личную учетную запись, но есть бесплатная опция. После регистрации получите свой личный ключ API с веб-сайта и замените на него "<your api key>".

Вы также можете создать в каталоге файл среды .env со строкой SERPAPI_KEY=<your api key> и загрузить файл .env с помощью библиотеки os.

Другие вопросы по теме