Не удается разобрать страницу результатов поиска Google с помощью BeautifulSoup - PullRequest
1 голос
/ 07 марта 2020

Я анализирую веб-страницы, используя BeautifulSoup с bs4 в python. Когда я проверял элементы страницы поиска Google, это было подразделение, которое показало 1-й результат:

İmage

, и, поскольку оно имело class = 'r', я написал этот код:

import requests
site = requests.get('https://www.google.com/search?client=firefox-b-d&ei=CLtgXt_qO7LH4-EP6LSzuAw&q=%22narendra+modi%22+%\22scams%22+%\22frauds%22+%\22corruption%22+%22modi%22+-lalit+-nirav&oq=%22narendra+modi%22+%\22scams%22+%\22frauds%22+%\22corruption%22+%22modi%22+-lalit+-nirav&gs_l=psy-ab.3...5077.11669..12032...5.0..0.202.2445.1j12j1......0....1..gws-wiz.T_WHav1OCvk&ved=0ahUKEwjfjrfv94LoAhWy4zgGHWjaDMcQ4dUDCAo&uact=5')
from bs4 import BeautifulSoup
page = BeautifulSoup(site.content, 'html.parser')
results = page.find_all('div', class_="r")
print(results)

Но командная строка вернула только []

Что могло пойти не так и как это исправить?

Также Вот веб-страница.

РЕДАКТИРОВАТЬ 1: Я соответственно отредактировал свой код, добавив словарь для заголовков, но результат тот же []. Вот новый код:

import requests
headers = {
    'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0'
}
site = requests.get('https://www.google.com/search?client=firefox-b-d&ei=CLtgXt_qO7LH4-EP6LSzuAw&q=%22narendra+modi%22+%22cams%22+%22frauds%22+%22corruption%22+%22modi%22+-lalit+-nirav&oq=%22narendra+modi%22+%22scams%22+%22frauds%22+%22corruption%22+%22modi%22+-lalit+-nirav&gs_l=psy-ab.3...5077.11669..12032...5.0..0.202.2445.1j12j1......0....1..gws-wiz.T_WHav1OCvk&ved=0ahUKEwjfjrfv94LoAhWy4zgGHWjaDMcQ4dUDCAo&uact=5', headers = headers)
from bs4 import BeautifulSoup
page = BeautifulSoup(site.content, 'html.parser')
results = page.find_all('div', class_="r")
print(results)

ПРИМЕЧАНИЕ: Когда я говорю ему напечатать всю страницу, нет проблем, или когда я беру list(page.children), он работает нормально.

1 Ответ

0 голосов
/ 07 марта 2020

На некоторых веб-сайтах требуется установить заголовок User-Agent, чтобы предотвратить фальшивый запрос не из браузера. Но, к счастью, есть способ передать заголовки в запрос как таковой

# Define a dictionary of http request headers
headers = {
  'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0'
} 

# Pass in the headers as a parameterized argument
requests.get(url, headers=headers)

Примечание: Список пользовательских агентов можно найти здесь

...