Получить данные со страницы HTML - PullRequest
2 голосов
/ 25 апреля 2019

У меня есть некоторые данные со страницы HTML следующим образом

<span class="some class abc-vc"> 123</span>
<span class="some class vde-bc"> 435</span>
<span class="some class v9mo-04mg"> 456 </span>

Я бы хотел найти только часть тега

some class 

, чтобы я мог хранить переменные одинпо одному

Как мне этого добиться?

код:

from urllib.request import Request, urlopen
import bs4 
url = 'url'
page = urlopen(url).read()
soup = bs4.BeautifulSoup(page, 'html.parser')
data = soup.find('span',{'class':'some class'})
print (data.text)

Ответы [ 3 ]

2 голосов
/ 25 апреля 2019

Вы можете использовать регулярное выражение, чтобы найти определенные элементы. Попробуйте код ниже.

from bs4 import BeautifulSoup
import re

data='''<span class="some class abc-vc"> 123</span>
<span class="some class vde-bc"> 435</span>
<span class="some class v9mo-04mg"> 456 </span>'''
soup=BeautifulSoup(data,'html.parser')

for item in soup.find_all('span',class_=re.compile('some class')):
    print(item.text)

Вывод:

123
435
456 
1 голос
/ 25 апреля 2019

В HTML отдельные классы разделены пробелами.Так, например, нижний диапазон имеет три класса: some, class и v9mo-04mg.

Чтобы найти все теги, которые содержат класс some и класс class, используйте списокв качестве значения словаря:

data = soup.find('span', {'class':['some', 'class']})

Если вам нужно несколько символов, замените метод .find() на .find_all().

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

Они составные классы.Вы можете присоединиться к ним с "."и перейдите к выбору

elements = [item for item in soup.select('.some.class')]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...