Метод requests.get не полностью загружает страницу

yur4ello

Новичок
Пользователь
Май 19, 2020
3
0
1
Windows
Python 3.7
requests 2.23.0
beautifulsoup4 4.9.0

Сразу представлюсь, я новичок в программировании.
На сайте google.com результаты поиска находятся в элементах <div class="r"> (правой кнопкой мыши по ссылке -> Посмотреть код). Пытаюсь получить ссылки результатов поиска. Использую requests.get(), но та часть кода, которая меня интересует, отсутствует. Подскажите, каким образом можно получить результаты поиска?

Python:
import requests
from bs4 import BeautifulSoup

search_str = 'как работать с beautifulsoup'

res = requests.get('http://google.com/search?q=' + search_str)
res.raise_for_status()
print(res.url)
soup = BeautifulSoup(res.text, 'lxml')
linkElems = soup.select('.r')
print(linkElems)
 

MaksimD

Пользователь
Пользователь
Май 12, 2020
51
11
8
Windows
Python 3.7
requests 2.23.0
beautifulsoup4 4.9.0

Сразу представлюсь, я новичок в программировании.
На сайте google.com результаты поиска находятся в элементах <div class="r"> (правой кнопкой мыши по ссылке -> Посмотреть код). Пытаюсь получить ссылки результатов поиска. Использую requests.get(), но та часть кода, которая меня интересует, отсутствует. Подскажите, каким образом можно получить результаты поиска?

Python:
import requests
from bs4 import BeautifulSoup

search_str = 'как работать с beautifulsoup'

res = requests.get('http://google.com/search?q=' + search_str)
res.raise_for_status()
print(res.url)
soup = BeautifulSoup(res.text, 'lxml')
linkElems = soup.select('.r')
print(linkElems)
Так можно взять все ссылки с вложеными в них заголовками
Код:
div = soup.find('div', id='eid')
links = div.find_all('div', {"class": 'r'}, 'a')
 

yur4ello

Новичок
Пользователь
Май 19, 2020
3
0
1
Так можно взять все ссылки с вложеными в них заголовками
Код:
div = soup.find('div', id='eid')
links = div.find_all('div', {"class": 'r'}, 'a')
У меня так тоже не работает.
Еще до использования BeautifulSoup в переменной res нет нужных элементов.
Если сразу после получения ответа сервера вызвать print(res.text), то там нет тегов с результатами поиска на Google.
 

MaksimD

Пользователь
Пользователь
Май 12, 2020
51
11
8
Еще до использования BeautifulSoup в переменной res нет нужных элементов.

Смотри. Все у тебя работает, просто ты немного напутал. В res пирходит ответ от сервера в виде html текста. Эта строка res.raise_for_status() у тебя лишняя - убираем.

Python:
#coding=utf-8


import requests

search_str = 'как работать с beautifulsoup'

res = requests.get('http://google.com/search?q=' + search_str)
print(res) # <Response [200]>
print(res.text)
дальше парсим html:
Python:
soup = BeautifulSoup(res.text, 'lxml')
print(soup)
div = soup.find_all("div", {"class":"ZINbbc xpd O9g5cc uUPGi"})
print(div)
 
Последнее редактирование:
  • Мне нравится
Реакции: yur4ello

yur4ello

Новичок
Пользователь
Май 19, 2020
3
0
1
Смотри. Все у тебя работает, просто ты немного напутал. В res пирходит ответ от сервера в виде html текста. Эта строка res.raise_for_status() у тебя лишняя - убираем.

Python:
#coding=utf-8


import requests

search_str = 'как работать с beautifulsoup'

res = requests.get('http://google.com/search?q=' + search_str)
print(res) # <Response [200]>
print(res.text)
дальше парсим html:
Python:
soup = BeautifulSoup(res.text, 'lxml')
print(soup)
div = soup.find_all("div", {"class":"ZINbbc xpd O9g5cc uUPGi"})
print(div)
Спасибо. Так все работает.
А где ты нашел вот это: "class":"ZINbbc xpd O9g5cc uUPGi"?
 
Последнее редактирование:

MaksimD

Пользователь
Пользователь
Май 12, 2020
51
11
8
А где ты нашел вот это: "class":"ZINbbc xpd O9g5cc uUPGi"?
Просто нашел div id="rso" и в нет лежат дивы с классам "ZINbbc xpd O9g5cc uUPGi"
Код:
div = soup.find("div", id="rso")
print(div)
 

Форум IT Специалистов