Поиск рейтинга URL-адреса

Я пытаюсь создать фрейм данных, состоящий из обзоров 20 банков, и в следующем коде я пытаюсь получить значение рейтинга 20 клиентов, но мне это сложно, поскольку я новичок в BeautifulSoup и Webscraping.

import pandas as pd
import requests
from bs4 import BeautifulSoup
url = 'https://www.bankbazaar.com/reviews.html'
page = requests.get(url)
print(page.text)
soup = BeautifulSoup(page.text,'html.parser')


 Rating = []
rat_elem = soup.find_all('span')
for rate in rat_elem:
    Rating.append(rate.find_all('div').get('value')) 

 print(Rating)
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
67
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Я предпочитаю использовать селекторы CSS, поэтому вы должны иметь возможность настроить таргетинг на все промежутки, настроив таргетинг на те, у которых атрибут itemprop установлен на ratingvalue.

import pandas as pd
import requests
from bs4 import BeautifulSoup
url = 'https://www.bankbazaar.com/reviews.html'
page = requests.get(url)
print(page.text)
soup = BeautifulSoup(page.text,'html.parser')

Rating = []
for rate in soup.select('span[itemprop=ratingvalue]'):
    Rating.append(rate.get_text()) 

print(Rating)

Соответствующий вывод

['4.0', '5.0', '5.0', '5.0', '4.0', '4.0', '5.0', '5.0', '5.0', '5.0', '4.0', '5.0', '5.0', '5.0', '5.0', '4.0', '4.5', '4.0', '4.0', '4.0']  

Обновлено: добавить соответствующий вывод

Согласованный. Не уверен, почему find кажется таким популярным.

QHarr 21.02.2019 23:24

Я думаю, это потому, что так долго select был таким ограниченным. Если вы новичок в bs4, вы найдете еще сотни примеров find/find_all.

facelessuser 21.02.2019 23:26

Ах... Наверное, я новичок в python, но не так уж новичок в CSS, поэтому последние изменения приносят мне пользу. Мне кажется, что Find кажется более дорогим/медленным методом.

QHarr 21.02.2019 23:35

Да, мне кажется, если вы парсите много HTML, вы знаете HTML и CSS. И если вы знаете CSS, зачем вам использовать более неуклюжий find, если только вы не пользуетесь функциями, которые вы не можете получить с помощью select, такими как регулярное выражение и т. д. Но старые привычки с трудом умирают, если вы использовали bs4, когда find был лучший вариант.

facelessuser 21.02.2019 23:44
Ответ принят как подходящий
import pandas as pd
import requests
from bs4 import BeautifulSoup
url = 'https://www.bankbazaar.com/reviews.html'
page = requests.get(url)
print(page.text)
soup = BeautifulSoup(page.text,'html.parser')

# Find all the span elements where the "itemprop" attribute is "ratingvalue". 
Rating = [item.text for item in soup.find_all('span', attrs = {"itemprop":"ratingvalue"})]


print(Rating)
# The output
# ['4.0', '5.0', '5.0', '5.0', '4.0', '4.0', '5.0', '5.0', '5.0', '5.0', '4.0', '5.0', '5.0', '5.0', '5.0', '4.0', '4.5', '4.0', '4.0', '4.0']

Аргументы ключевого слова BeautifulSoup

можете ли вы сказать мне, почему вы выбрали «itemprop:rating value»

murad 21.02.2019 23:12

«ratingvalue» — это оценка, которую поставил пользователь, а «bestrating» — это максимальная оценка, которую может дать пользователь. "ratingvalue" кажется более подходящим выбором. (Не уверен, что это то, о чем вы спрашиваете.)

Remy J 21.02.2019 23:23

Ну, я просматривал html-код и не мог его найти.

murad 21.02.2019 23:27

Я использовал «инструменты разработчика» в Chrome для навигации по элементам. Это Ctrl-Shift-I или просто щелкните правой кнопкой мыши элемент на странице, затем нажмите «проверить». Это приведет вас к элементу в исходном коде веб-страницы... В Firefox щелкните правой кнопкой мыши «проверить элемент», ярлык остается прежним (как хром).

Remy J 21.02.2019 23:33

В Firefox щелкните правой кнопкой мыши «проверить элемент», ярлык остается прежним (как в хроме), он называется «инспектор» вместо «инструменты разработчика».

Remy J 21.02.2019 23:38

Другие вопросы по теме