Как найти все классы с помощью Beautifulsoup, когда класс имеет случайное предложение? - PullRequest
0 голосов
/ 15 апреля 2019

как найти все классы с помощью Beautifulsoup, когда класс имеет случайное предложение? я пытаюсь использовать приведенный ниже синтаксис, но ничего не получается

containers = page_soup.findAll("div",{"class":xyz "})

пример класса, как показано ниже

<div class=abc">
<div class=bcd">
<div class="xyz " offerid="65546">
<div class="xyz " offerid="46465">
<div class="xyz " offerid="56747">
</div>
</div>

Ответы [ 3 ]

1 голос
/ 15 апреля 2019

Используйте CSS Selector, чтобы получить элементы с именем класса. Попробуйте следующий пример.

data = '''
<div class="xyz " offerid="65546">Test 1</div>
<div class="xyz " offerid="46465">Test 2</div>
<div class="xyz " offerid="56747">Test 3</div>
'''
soup = BeautifulSoup(data,'html.parser')

containers = soup.select("div.xyz")
for item in containers:
    print(item.text)

OR

data = '''
<div class="xyz " offerid="65546">Test 1</div>
<div class="xyz " offerid="46465">Test 2</div>
<div class="xyz " offerid="56747">Test 3</div>
'''
soup = BeautifulSoup(data,'html.parser')

containers = soup.select(".xyz")
for item in containers:
    print(item.text)

РЕДАКТИРОВАНИЕ:

data = '''
<div class=abc">
<div class=bcd">
<div class="xyz " offerid="65546">
<div class="xyz " offerid="46465">
<div class="xyz " offerid="56747">
</div>
</div>
'''
soup = BeautifulSoup(data,'html.parser')
containers = soup.select("div.xyz[offerid]")

for item in containers:
     print(item['offerid'])
0 голосов
/ 15 апреля 2019

Возможно, вам нужен селектор атрибутов

data = [item['offerid'] for item in soup.select('[offerid]')]

или

data = [item.text for item in soup.select('[offerid]')]
0 голосов
/ 15 апреля 2019

Я не уверен на 100% в вашем вопросе, но ID не должен иметь значения, если вы забираете div через имя класса. Приведенный ниже пример кода работает.

html = '''
<div class="xyz " offerid="65546"> sample text </div>
<div class="xyz " offerid="46465"> sample text </div>
<div class="xyz " offerid="56747"> sample text </div>
'''
soup       = BeautifulSoup(html,'html.parser')

containers = soup.find_all("div",{"class":"xyz "})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...