как извлечь текст из следующего кода HTML? - PullRequest
0 голосов
/ 26 мая 2020

Я делаю веб-скраппинг для проекта DS и использую для этого BeautifulSoup . Но я не могу извлечь Duration из тега tbody в классе table. Ниже приведен код HTML:

<div class="table-responsive">
    <table class="table">
        <thead>
            <tr>
                <th>Start Date</th>
                <th>Duration</th>
                <th>Stipend</th>
                <th>Posted On</th>
                <th>Apply By</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>
                    <div id="start-date-first">Immediately</div>
                </td>
                <td>1 Month</td>
                <td class="stipend_container_table_cell"> <i class="fa fa-inr"></i>
                1500 /month
                </td>
                <td>26 May'20</td>
                <td>23 Jun'20</td>
            </tr>
        </tbody>
    </table>
</div>

Примечание: для извлечения текста «Немедленно» я использую следующий код:

x = container.find("div", {"class" : "table-responsive"})
x.table.tbody.tr.td.div.text

Ответы [ 2 ]

3 голосов
/ 26 мая 2020

Вы можете использовать функцию select () для поиска тегов с помощью css селектора .

tds = container.select('div > table > tbody > tr > td')
# or just select('td'), since there's no other td tag

print(tds[1].text)

Возвращаемое значение функции select () - это список всех HTML теги, соответствующие селектору. Тот, который вы хотите получить, является вторым, поэтому используйте индекс 1, а затем получите его текст.

0 голосов
/ 26 мая 2020

Попробуйте следующее:

from bs4 import BeautifulSoup
import requests

url = "yourUrlHere"

pageRaw = requests.get(url).text
soup = BeautifulSoup(pageRaw , 'lxml')
print(soup.table)

В моем коде я использую библиотеку l xml для анализа данных. Если вы хотите установить pip install lxml ... или просто перейти в свою библиотеку в этой части кода:

soup = BeautifulSoup(pageRaw , 'lxml')

Этот код вернет первую таблицу, хорошо?

Береги себя

...