Как выбрать предыдущий элемент на HTML-странице через Python с некоторыми условиями - PullRequest
0 голосов
/ 08 апреля 2019

Здравствуйте, я пытаюсь получить некоторые данные с веб-сайта, а затем я должен найти последний элемент, с которым я работал в последний раз на странице, и выбрать элемент предварительного просмотра первого элемента, пожалуйста, проверьте мой код, и я объясню более полно в моем примере:

это пример HTML-кода:

<div class="post" id="7517049">
    <div class="p-head">
        <div class="p-c p-c-time"><span class="p-time" data="1554741054" title="2019-04-08 @ 21:00:54 ( Your Time )"><span class="t-n-m">45</span> <span class="t-u">mins</span></span>
        </div>
        <div class="p-c p-c-cat"><span class="p-cat c-5 c-7 "><a href="http://predb.me?cats=tv" class="c-adult">TV</a><a href="http://predb.me?cats=tv-hd" class="c-child">HD</a></span></div>
        <div class="p-c p-c-title">
            <h2><a class="p-title" href="http://predb.me?post=7517049">The.Repair.Shop.S04E02.720p.WEBRip.x264-LiGATE</a></h2>
            <a rel="nofollow" href="http://predb.me?post=7517049" class="tb tb-perma" title="Visit the permanent page for this release."></a>
        </div>
    </div>
</div>

<div class="post" id="7517048">
    <div class="p-head">
        <div class="p-c p-c-time"><span class="p-time" data="1554740951" title="2019-04-08 @ 20:59:11 ( Your Time )"><span class="t-n-m">47</span> <span class="t-u">mins</span></span>
        </div>
        <div class="p-c p-c-cat"><span class="p-cat c-24 c-25 "><a href="http://predb.me?cats=books" class="c-adult">Books</a><a href="http://predb.me?cats=books-ebooks" class="c-child">eBooks</a></span></div>
        <div class="p-c p-c-title">
            <h2><a class="p-title" href="http://predb.me?post=7517048">John.Bell.Young.Puccini.A.Listeners.Guide.Dover.Books.on.Music.and.Music.History.2016.RETAiL.ePub.eBook-VENTOLiN</a></h2>
            <a rel="nofollow" href="http://predb.me?post=7517048" class="tb tb-perma" title="Visit the permanent page for this release."></a>
        </div>
    </div>
</div>

<div class="post" id="7517047">
    <div class="p-head">
        <div class="p-c p-c-time"><span class="p-time" data="1554740927" title="2019-04-08 @ 20:58:47 ( Your Time )"><span class="t-n-m">48</span> <span class="t-u">mins</span></span>
        </div>
        <div class="p-c p-c-cat"><span class="p-cat c-5 c-6 "><a href="http://predb.me?cats=tv" class="c-adult">TV</a><a href="http://predb.me?cats=tv-sd" class="c-child">SD</a></span></div>
        <div class="p-c p-c-title">
            <h2><a class="p-title" href="http://predb.me?post=7517047">The.Repair.Shop.S04E01.WEB.h264-LiGATE</a></h2>
            <a rel="nofollow" href="http://predb.me?post=7517047" class="tb tb-perma" title="Visit the permanent page for this release."></a>
        </div>
    </div>
</div>

вверху у нас есть 3 основных div, которые содержат еще один div, на самом деле, например, я даю значение тега <a> в 3-м главном div и значение The.Repair.Shop.S04E01.WEB.h264-LiGATE, и я хочу в следующий раз, когда мой скрипт перезагрузит На странице найдите The.Repair.Shop.S04E01.WEB.h264-LiGATE на странице и выберите предыдущий div с <span>, который имеет <a> через значение TV на самом деле на реальной странице сайта. Мне нужно выбрать предыдущий элемент, просто наберите <a> через значение TV. в примере html 1-й div имеет значение TV, а 2-й - нет. есть ли идея для этого?

коды Python, которые я пробовал:

my_soup = Wsoup(my_driver, "html.parser")


last_rls = input("Please Insert starter Release From Predb.me ::::")


previous_rls = my_soup.find("a", text=last_rls)

print(previous_rls)
Entry= previous_rls.parent.parent.parent.parent


previous_rls_parent = Entry.find_previous_sibling("div",{"class":"post"})

print(previous_rls_parent)

код Python может показывать предыдущий элемент, но мне нужно показать предыдущий элемент, содержащий тег <a> через значение TV

1 Ответ

0 голосов
/ 09 апреля 2019

Если вы пытаетесь отобразить текст из 3 <div> элементов для сообщения, которое вы искали, вы можете попробовать следующий подход:

from bs4 import BeautifulSoup

search = "The.Repair.Shop.S04E01.WEB.h264-LiGATE"
soup = BeautifulSoup(my_driver, "html.parser")

rls = soup.find("a", text=search)
div_parent = rls.find_previous('div', class_='p-head')

for div in div_parent.find_all('div'):
    print(div.get_text(strip=True))

Это отображает следующие 3 элемента:

48mins
TVSD
The.Repair.Shop.S04E01.WEB.h264-LiGATE
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...