Количество страниц, найденных в поиске 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())

🤔 А знаете ли вы, что...
Python используется в разработке мобильных приложений с использованием Kivy.


127
2

Ответы:

Решено

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

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

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

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

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

About 918 results (0.21 seconds)

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

  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.