Невозможно очистить заголовки новостей Google через их класс - PullRequest
0 голосов
/ 13 мая 2019

Я пытаюсь почистить заголовки новостей Google вместе с их ссылками для ввода термина.Но когда я искал с помощью метода find_all класс, содержащий все заголовки новостей, он возвращал пустой список.

Я пытался использовать родительские div с их идентификаторами, но результат не изменился.

import requests
from bs4 import BeautifulSoup

input_term = input("Enter a term to search:")
source = requests.get("https://www.google.com/search?q={0}&source=lnms&tbm=nws".format(input_term)).text
soup = BeautifulSoup(source, 'html.parser')

#here 'bkWMgd' is class that I found to be contained all search results.
heading_results = soup.find_all('div', class_ = 'bkWMgd')
print(heading_results)

Я хочу очистить все заголовки новостей и соответствующие ссылки.Я ожидал список всех результатов поиска из приведенного выше кода.Но он возвращает пустой список.

1 Ответ

2 голосов
/ 13 мая 2019

Ответ, который видит beautifulsoup и тот, который отображается в вашем браузере, сильно отличается из-за наличия Javascript. Следовательно, селекторы, которые вы используете, могут отличаться. Это всегда хорошая идея, чтобы напечатать ответ, который вы получаете от beautifulsoup, и проанализировать HTML, а затем правильно выбрать селекторы, используя class / id.

import requests
from bs4 import BeautifulSoup

input_term = input("Enter a term to search:")
source = requests.get(
    "https://www.google.com/search?q={0}&source=lnms&tbm=nws".format(input_term)).text
soup = BeautifulSoup(source, 'html.parser')

# here div#ires contains an ol which contains the results.
heading_results = soup.find("div", {"id": "ires"}).find("ol").find_all('h3', {'class': 'r'})
# Loop over each item to obtain the title and link (anchor tag text and link)
print(heading_results)

enter image description here

...