Как передать строку поиска в поисковую систему Onesearch с помощью Python

Я пытаюсь получить количество результатов поиска в нескольких поисковых системах, и большинство из них принимают мою строку поиска, например:

search_engine_url = "https://www.google.com/search?q=" + query + "&num=" + str(number_result)
search_engine_url = "https://www.bing.com/search?q=" + query + "&num=" + str(number_result)
search_engine_url = "https://au.search.yahoo.com/search?q=" + query + "&num=" + str(number_result)

Однако, когда я передаю ту же структуру в onesearch:

search_engine_url = "https://www.onesearch.com/search?q=" + query

Я не получаю должного результата.

Если я вручную делаю поиск в поисковике — например, лекарственный сахар в крови, то выдаваемая им поисковая строка выглядит так:

https://www.onesearch.com/yhs/search;_ylt=AwrCxGGMcZJfaW0AdxzGnIlQ;_ylu=Y29sbwNiZjEEcG9zAzEEdnRpZAMEc2VjA3Fydw--?fr=yhs-ono-df&hsimp=yhs-df&hspart=ono&intl=us&ei=UTF-8&p=bpmCd4P8ioLi2Utwoqr03SXsAFCPzan7PchA19V1xcls5JfyiIr6dcI4epf%2FJJ5NiMNeZpWUeehFb4o680JW6IxaYKmqNhRrLtBltUGzULyKGCPCs3MPOAf0GuLqGRp%2B50Y4dd%2FRKPKYOuJGM5hzZRuACgcuFzq%2BevGv9ySwQz8%3D&fr2=12642&enct=p&encv=1_24&

Как передать правильную строку поиска для других запросов? Если это невозможно, то какие другие поисковые системы показывают количество результатов поиска на первой странице? До сих пор я нашел только «google», «bing» и «yahoo», которые делают это. Другие поисковые системы заставляют вас использовать следующую страницу, чтобы увидеть больше результатов, не указывая общее количество результатов исследования. Я знаю, что цифры ненастоящие, но я использую их только для того, чтобы решить, принадлежит ли поисковый запрос к той или иной группе, поэтому точность не важна — важен только относительный размер результатов поиска.

В настоящее время я не использую для этого API поисковых систем.

Я использую Python, но я думаю, что язык не имеет значения, поскольку речь идет о строке поиска.

            elif search_engine == 'onesearch':
                search_engine_url = "https://www.onesearch.com/search?q=" + query + "&num=" + str(number_result)

                try:
                    response = requests.get(search_engine_url, headers=rand_browser)  # requests.get(url, headers=headers).text
                except requests.exceptions.RequestException as e:  # NewConnectionError, MaxRetryError, ConnectionError
                    print(e)
                    search_engine = 'google'
                    continue

                soup = BeautifulSoup(response.text, "html.parser")
                divs = soup.find_all('span')  # <span>102,000,000 results</span>
    ```

person Fusion_Prog_Guy    schedule 26.10.2020    source источник


Ответы (1)


Вы можете использовать строку поиска, подобную следующей:

https://www.onesearch.com/yhs/search;_ylt=AwrEeSVn6b1fWhwAmAfJnIlQ;_ylc=X0kDRTBBS3lURXdMaklxUGNJZ3o0QjhXd0F2TUM0d0xnQUFBQUNTdWlfZgRfUwMxMzUxMTk1ODQ5BF9yAzIEYWN0bgNjbGsEY3NyY3B2aWQDRTBBS3lURXdMaklxUGNJZ3o0QjhXd0F2TUM0d0xnQUFBQUNTdWlfZgRmcgN5aHMtb25vLWRmBGZyMgNzYi10b3AEZ3ByaWQDBG5fcnNsdAMwBG5fc3VnZwMwBG9yaWdpbgN3d3cub25lc2VhcmNoLmNvbQRwb3MDMARwcXN0cgMEcHFzdHJsAzAEc2VjA3NlYXJjaARzbGsDYnV0dG9uBHQyA3NlYXJjaAR0NANidXR0b24EdF9zdG1wAzE2MDYyODE1ODUEdnRlc3RpZAM-?hspart=ono&hsimp=yhsm-df&intl=us&ei=UTF-8&pvid=E0AKyTEwLjIqPcIgz4B8WwAvMC4wLgAAAACSui_f&gprid=&fr=yhs-ono-df&q=your%20query&fr2=sb-top

Эта строка поиска безумно длинная, но она работает. Просто замените your%20query строкой, которую вы хотите найти, где %20 заменяет пробелы между словами. Например, показанный выше запрос ищет ваш запрос.

person aspergras    schedule 25.11.2020
comment
Разве requests не сделает это за вас, если вы передадите хвост URL с буквальными пробелами в нем? - person tripleee; 25.11.2020