1

Тема: Помилка під час парсингу google.com

Мені треба розпарсити сторінку гугла.Треба розпарсити той блок що  правіше від осн. інформації де показується що це за людина а бо щось інше.Нижче буде код.Вся проблема в тому що ім'я виходить забрати а ось інформацію ні =( допоможіть будь ласка

import requests
from bs4 import BeautifulSoup as bs
headers = {'accept': '*/*',
           'user-agent': 'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'}
search = input('Запрос ')
base_url = 'https://www.google.com/search?q=трамп&ie=UTF-8'

def google_parse(search,headers,base_url):
    session = requests.Session()
    res = requests.get(base_url, headers=headers)
    if res.status_code == 200:
        print('ok')
        soup = bs(res.content, 'html.parser')
        zagolovok = soup.find('div', {'data-local-attribute':'d3bn'}).find('span').text
        desc = soup.find('span', {'data-ved':"2ahUKEwiDleefp5DgAhWExIsKHbMHC7YQ2kooAjAdegQIBxAL"})
       # pod_zagolovok = soup.find('span', {'data-ved':'2ahUKEwi3hu3PnJDgAhUwtosKHT7XD5wQ2kooAjAlegQIBhAL'})
        print(zagolovok)
        print(desc)

        
google_parse(search,headers,base_url)

2

Re: Помилка під час парсингу google.com

Ну, для початку я б звернув увагу, що жодна людина в здоровому глузді не буде використовувати назви на кшталт "2ahUKEwiDleefp5DgAhWExIsKHbMHC7YQ2kooAjAdegQIBxAL". Розробники Google перебувають у здоровому глузді (цей висновок я роблю з того, що я користуюся їхніми продуктами); значить, ця назва не призначена для людей, а призначена, відповідно, для машин - і, швидше за все, для гуглівських. Орієнтуйтеся на клас knowledge-panel.
А data-ved, схоже, взагалі не позначка, а якась закодована інформація - ось тут ніби це розбирають: https://moz.com/blog/inside-googles-ved-parameter

Подякували: Eugene2019, leofun012

3

Re: Помилка під час парсингу google.com

koala написав:

Ну, для початку я б звернув увагу, що жодна людина в здоровому глузді не буде використовувати назви на кшталт "2ahUKEwiDleefp5DgAhWExIsKHbMHC7YQ2kooAjAdegQIBxAL". Розробники Google перебувають у здоровому глузді (цей висновок я роблю з того, що я користуюся їхніми продуктами); значить, ця назва не призначена для людей, а призначена, відповідно, для машин - і, швидше за все, для гуглівських. Орієнтуйтеся на клас knowledge-panel.
А data-ved, схоже, взагалі не позначка, а якась закодована інформація - ось тут ніби це розбирають: https://moz.com/blog/inside-googles-ved-parameter

Дякую я перевірю, просто з 10 перезавантажень сторінкі і перезапусків праузерів(різних) я отримував один і той самий ключ до data-ved

4

Re: Помилка під час парсингу google.com

А спробуйте з іншою особою.

5

Re: Помилка під час парсингу google.com

koala написав:

А спробуйте з іншою особою.

?????? не зрзумів, але дякую все вийшло

6

Re: Помилка під час парсингу google.com

koala написав:

Ну, для початку я б звернув увагу, що жодна людина в здоровому глузді не буде використовувати назви на кшталт "2ahUKEwiDleefp5DgAhWExIsKHbMHC7YQ2kooAjAdegQIBxAL". Розробники Google перебувають у здоровому глузді (цей висновок я роблю з того, що я користуюся їхніми продуктами); значить, ця назва не призначена для людей, а призначена, відповідно, для машин - і, швидше за все, для гуглівських. Орієнтуйтеся на клас knowledge-panel.
А data-ved, схоже, взагалі не позначка, а якась закодована інформація - ось тут ніби це розбирають: https://moz.com/blog/inside-googles-ved-parameter


А ще питання чи не знаєте ви як змініти мову відповіді ?
Зараз воно відповідає на укр. мові , а якщо мені треба на англійській мові чи російській ?

import requests
from bs4 import BeautifulSoup as bs
headers = {'accept': '*/*',
           'user-agent': 'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'}
search = input('Запит: ')
base_url = 'https://www.google.com/search?q='+search+'&ie=UTF-8'

def google_parse(search,headers,base_url):
    session = requests.Session()
    res = requests.get(base_url, headers=headers)
    if res.status_code == 200:
        print('ok')
        soup = bs(res.content, 'html.parser')
        zagolovok = soup.find('div', {'data-local-attribute':'d3bn'}).find('span').text
        print(zagolovok)
        pod_zagolovok = soup.find('div', {'class':"wwUB2c kno-fb-ctx"}).find('span')
        print(pod_zagolovok.text)
        desc = soup.find('div', {'class':"kno-rdesc"}).find('div').find('span').text
       # pod_zagolovok = soup.find('span', {'data-ved':'2ahUKEwi3hu3PnJDgAhUwtosKHT7XD5wQ2kooAjAlegQIBhAL'})
        print(desc)

        
google_parse(search,headers,base_url)

7 Востаннє редагувалося leofun01 (28.01.2019 17:41:32)

Re: Помилка під час парсингу google.com

Eugene2019 написав:

А ще питання чи не знаєте ви як змініти мову відповіді ?
Зараз воно відповідає на укр. мові , а якщо мені треба на англійській мові чи російській ?

В headers додайте 'Accept-Language': 'en; q=1.0'
або 'Accept-Language': 'en'

Подякували: Eugene20191

8

Re: Помилка під час парсингу google.com

Eugene2019 написав:

а якщо мені треба на англійській

&lr=lang_en

Eugene2019 написав:

чи російській

Чємадан-вакзал.

Подякували: leofun01, Eugene2019, FakiNyan3