Выбор соответствующего тега для передачи в метод выбора BeautifulSoup

Итак, я просматриваю онлайн-книгу «Автоматизация скучных вещей с помощью Python» и изучаю BeautifulSoup. Моя проблема в том, что я не могу понять, как выбрать подходящий тег на основе того, что я нахожу с помощью инструментов разработчика в Chrome.

<div data-hveid=.....>
  <div class = "rc">
   <a href = "https://www.python.org/".....>
        <h3 class = "LC20lb">Welcome to Python.org</h3>
# Using select to grab links to search results. 
linkElems = soup.select('r .a')

Пример результатов инспектора. В книге цель состояла в том, чтобы захватить все ссылки, которые появляются на странице результатов поиска Google. Для этого автор использует строку soap.select('r .a'). Но когда я использую инспектор, я получаю тег «a href».

Лично я хотел также получить заголовок/заголовок ссылки, которая отображается на странице результатов поиска. Инспектор выделяет тег «h3 class». Я попытался выбрать это, сказав select искать теги с атрибутом класса, равным «LC20lb», но я продолжаю получать пустой список в качестве вывода.

Итак, мой вопрос: как только инспектор помог нам сузить наше внимание, как мы узнаем, какой тег является подходящим для выбора? Например, как автор узнал, что вместо тега «a href» мы должны вместо этого использовать «.r a»? В общем, как далеко «вне», то есть какой предок я должен выбрать после того, как селектор показал мне конкретный элемент?

какой у Вас вопрос?

Bitto Bennichan 15.02.2019 18:48

Извините, по какой-то причине часть написанного мною не была опубликована. Я добавил это в качестве редактирования.

skippy130 15.02.2019 18:53
Почему в 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
2
134
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы делаете «href», вы не указали класс div, поэтому он получит все экземпляры href, которые будут включать ссылки на такие вещи, как карты, диски и т. д. В коде, который вы цитируете, вы пропустили класс div "r"

    <div data-hveid=.....>
      <div class = "rc">
        <div class = "r">        
          <a href = "https://www.python.org/".....>
            <h3 class = "LC20lb">Welcome to Python.org</h3>

Таким образом, soap.select('.r a') получает все теги a в классе div "r" (который является результатами поиска), а не все экземпляры тегов href.

Надеюсь, что это ответ на ваш вопрос!

Это помогает спасибо! Итак, в общем, я должен просто взять родителя любого тега, который мне покажет инспектор?

skippy130 16.02.2019 19:37

Я думаю, что лучше всего думать об этом так, будто теги <a> являются гиперссылками, а классы <div> являются разделами веб-сайта, поэтому, если вам нужны все гиперссылки с веб-страницы, вы должны использовать тег <a>, но если вам нужны все теги <a> в разделе веб-сайта (в данном случае результаты поиска), вы хотели бы использовать класс div, в котором они расположены.

user11035198 16.02.2019 19:42

Большое спасибо, ваша помощь здесь, наконец, заставила что-то щелкнуть в моей голове, и теперь все это имеет гораздо больше смысла. Еще раз спасибо!

skippy130 19.02.2019 19:47

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