Как найти повторяющиеся элементы JS BeautifulSoup Python - PullRequest
0 голосов
/ 04 июня 2018

html =

<span class="title">
    <a href="VIDEO HREF" title="title" class="js-pop">title text</a>"
</span>

Code =

class Client(QWebPage):

    def __init__(self, url):
        self.app = QApplication(sys.argv)
        QWebPage.__init__(self)
        self.loadFinished.connect(self.on_page_load)
        self.mainFrame().load(QUrl(url))
        self.app.exec_()
    def on_page_load(self):
        self.app.quit()

client_response = Client(url)
source = client_response.mainFrame().toHtml()
soup = bs.BeautifulSoup(source, 'lxml')
for link in soup.findAll('a', class_='js-pop'):
    href = link.get('href')
    print(href)
    print(link.text)

Я хочу, чтобы он возвращал ссылку href и текст заголовка.

При запуске он печатает каждыйкласс, в котором есть текст "js-pop", и есть несколько классов с именем "js-pop", которые не являются классами, которые я хочу очистить.

Я попытался очистить страницу в селене, и этовыводит «none», когда я пытаюсь найти href в class = 'js-pop'

все элементы, которые я пытаюсь очистить, имеют уникальные идентификаторы, селекторы CSS и xpaths

Какя должен найти этот элемент?

1 Ответ

0 голосов
/ 04 июня 2018

Чтобы отобразить href, title и текст диапазона, вы можете сделать следующее:

import bs4 as bs

html = '<span class="title"><a href="VIDEO HREF" title="title" class="js-pop">title text</a></span>'
soup = bs.BeautifulSoup(html, 'lxml')

for link in soup.findAll('a', class_='js-pop', href=True, title=True):
    print(link['href'])
    print(link['title'])
    print(link.text)

Это будет отображать:

VIDEO HREF
title
title text

При добавлении href=True и title=True, он сообщает находке только те элементы, которые на самом деле содержат оба этих атрибута.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...