Программно исключать / включать сайты из Google Custom Search JSON API - PullRequest
0 голосов
/ 03 апреля 2020

Я использую API пользовательского поиска Google JSON для получения результатов поиска в формате json.

Проблема заключается в том, что запросы допускают только 10 результатов за раз. Поэтому нам нужно сделать несколько вызовов, чтобы извлечь больше результатов.

Однако, когда я повторяю вызов, как я могу исключить результаты, которые я уже получил в предыдущем вызове?

Один ручной способ добавить каждую строку в поиске, но есть ли способ сделать это программно?

Ответы [ 2 ]

1 голос
/ 06 апреля 2020

Возможно, я неправильно понял вопрос, но параметр 'start' - это то, как вы разбираете результаты См https://developers.google.com/custom-search/v1/cse/list

1 голос
/ 03 апреля 2020

Представьте следующее как output из API:

from bs4 import BeautifulSoup

html = """
<a class="result" href="www.test1.com" </a>
<a class="result" href="www.test1.com" </a>
<a class="result" href="www.test2.com" </a>
<a class="result" href="www.test2.com" </a>
<a class="result" href="www.test3.com" </a>
<a class="result" href="www.test3.com" </a>
"""


soup = BeautifulSoup(html, 'html.parser')


urls = [url.get("href") for url in soup.findAll("a", class_="result")]

print(set(urls))

Вывод:

{'www.test3.com', 'www.test2.com', 'www.test1.com'}

Как видите, set фактически удаляет дубликаты но это не заботится о заказе.

Но если вы заботитесь о заказе. поэтому используйте list как следующее:

items = []

for item in soup.findAll("a", class_="result"):
    item = item.get("href")
    if item not in items:
        items.append(item)

print(items)

Выход:

['www.test1.com', 'www.test2.com', 'www.test3.com']

Таким образом, вы можете l oop над calls до API и add установить или от append до list.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...