Запросы Python не предоставили полного ответа - PullRequest
0 голосов
/ 14 июня 2019

Я сейчас изучаю утилизацию. Сегодня я попытался перебрать в поиске google.com. Когда я пытался выполнить запросы get с помощью библиотеки запросов Python, я не получил полного ответа.

Например, если я назову этот URL-адрес https://www.google.com/search?q=tea+meaning, чтобы получить значение для слова чай, то в полученном ответе он показывает только существительное, а не содержание глагола.

from bs4 import BeautifulSoup as bs
import requests as req

headers_Get = {
    'Host': 'www.google.com',
    'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/74.0.3729.169 Chrome/74.0.3729.169 Safari/537.36',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Language': 'en-US,en;q=0.5',
    'Accept-Encoding': 'gzip, deflate',
    'DNT': '1',
    'Connection': 'keep-alive',
    'Upgrade-Insecure-Requests': '1'
}

url = "https://www.google.com/search?q=tea+meaning"
response = req.get(url, headers=headers_Get)

data = response.text
soup = bs(data, "html.parser")

Вот проблема с этим супом. Он не содержит глагола. Почему это происходит?

enter image description here

Спасибо.

Ответы [ 2 ]

0 голосов
/ 20 июля 2019

Вы должны выбрать, какую <div> печатать. Вы получаете всю страницу.

import requests
from bs4 import BeautifulSoup
url = "https://www.google.com/search?q=tea+meaning"
header={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2227.0 Safari/537.36'}
page=requests.get(url,headers=header)

soup=BeautifulSoup(page.content,'html.parser')
result = soup.select_one('div.vmod').get_text()
print(result)

Этот код печатает все, включая глаголы. И эй, если вы хотите понять, есть хороший API на https://developer.oxforddictionaries.com/, попробуйте использовать его

0 голосов
/ 15 июня 2019

Проблема в том, что Google не отправляет результаты поиска одной страницей. Большинство вещей, которые вы видите в браузере в качестве результатов поиска, являются отдельными AJAX-запросами. Вы можете получить некоторые частичные данные в первоначальном запросе, но они не обязательно будут совпадать с данными обычного браузера.

Чтобы получить представление о том, что вы увидите в приложении Beautiful Soup and Requests, попробуйте открыть ссылку в браузере с отключенным JavaScript.

...