Извлечение пользовательских тегов «data» с помощью BeautifulSoup (python) - PullRequest
0 голосов
/ 09 июня 2018

Соскоб HTML, который выглядит следующим образом:

<div class="resultRow" data-unix="1528542937" id="resultRow1">
<div class="resultRow" data-unix="1528542937" id="resultRow2">
<div class="resultRow" data-unix="1528542937" id="resultRow1">

Как извлечь значение поля data-unix?

Нужно ли использовать REGEXP для этого или есть лучший метод?

for tmp in soup.findAll('div', {'class':'resultRow'}):
      x = tmp.find(re.compile('/data-unix="(.*)"/'))

Заранее спасибо.

Ответы [ 2 ]

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

По вашему вопросу о перемещении ответа Ajax1234 внутри цикла:

from bs4 import BeautifulSoup

s = """
<div class="resultRow" data-unix="1528542937" id="resultRow1">
<div class="resultRow" data-unix="1528542937" id="resultRow2">
<div class="resultRow" data-unix="1528542937" id="resultRow1"> 
"""

soup = BeautifulSoup(s, 'lxml')

final_results = []

for tmp in soup.find_all('div', {'class':'resultRow'}):

    final_results.append(tmp['data-unix'])

print final_results

['1528542937', '1528542937', '1528542937']
0 голосов
/ 09 июня 2018

Вы можете использовать встроенный метод __getitem__, объявленный для BeautifulSoup объектов словарного стиля:

from bs4 import BeautifulSoup as soup
s = """
<div class="resultRow" data-unix="1528542937" id="resultRow1">
<div class="resultRow" data-unix="1528542937" id="resultRow2">
<div class="resultRow" data-unix="1528542937" id="resultRow1"> 
"""
final_results = [i['data-unix'] for i in soup(s, 'html.parser').find_all('div', {'class':'resultRow'})]

Вывод:

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