Я ищу количество страниц, на которых встречается поисковый запрос «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())
Алгоритм двоичного поиска может быть более эффективным? Проверяйте страницы 1, 2, 4, 8, 16, 32, ... до тех пор, пока что-то не выйдет из строя, затем вернитесь и оштрафуйте конкретную страницу, на которой произошел сбой. Я не знаю, возможно ли это, но OpenSearch указывает параметр startIndex . Кроме того, я не часто пользуюсь Google, так что...
Просто замените в коде термин «переменная» на «indieea». Мне нужно вернуть любое приблизительное число, которое возвращает Google. Меня устраивает результат <10 или >100.
No. It is based on another stackoverflow question.
<== Который вы тоже написали и явно сгенерирован ИИ, верно?
Все методы программирования, которые я пробовал до сих пор, возвращали на первой странице 12 или 15 результатов, а не 64.
Кроме того, я не вижу упомянутой вами строки, когда выполнял поиск вручную. Возможно, дело в каких-то настройках?
Ни алгоритмами, ни ручным поиском такой строки просто нет.
Не уверен, что это что-то дает, но если вы нажмете кнопку «инструменты» в Google, вы увидите, сколько результатов было найдено. Если вы используете поисковый запрос с «», он будет искать точные совпадения. Я вижу 913 просмотров.
Фактически, эта точка данных находится в возвращенном HTML-коде, и вы можете выполнить поиск на возвращенной странице:
document.getElementById("result-stats").innerText
или через ваш любимый пакет синтаксического анализа HTML Python.
На данный момент это возвращает:
About 918 results (0.21 seconds)
Можете ли вы автоматизировать нажатие кнопки инструментов в скрипте 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
.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
.
Потому что 5 долларов за 1000 запросов к API — это дорого. developers.google.com/custom-search/v1/overview