Как найти значение из HTML? - PullRequest
0 голосов
/ 07 февраля 2019

У меня есть этот код:

<a id="US-7" href="javascript:void(0);" class="chooseSizeLink chooseSizeLinkActive" data-size="10" onclick="ProductDetails.changeSizeAffectedLinks(
                                                           '10780559',
                                                           '170,85 USD',
                                                           '125,32 USD',
                                                           '26',
                                                           '45,53 USDsaved!',
                                                           '10',
                                                           '7',
                                                           '15',
                                                           'true',
                                                           'false',
                                                           'false',
                                                           'false',
                                                           'unknown',
                                                           'US-',
                                                           '555088-401');" btattached="true">10</a>

Я хотел бы найти это значение: 10780559.Является ли это возможным?Я пытаюсь сделать это в Python.

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

Да, фактически вы можете получить каждое из этих значений внутри атрибута onclick в список.Сначала давайте присвоим это переменной html

html="""
<a id="US-7" href="javascript:void(0);" class="chooseSizeLink chooseSizeLinkActive" data-size="10" onclick="ProductDetails.changeSizeAffectedLinks(
                                                           '10780559',
                                                           '170,85 USD',
                                                           '125,32 USD',
                                                           '26',
                                                           '45,53 USDsaved!',
                                                           '10',
                                                           '7',
                                                           '15',
                                                           'true',
                                                           'false',
                                                           'false',
                                                           'false',
                                                           'unknown',
                                                           'US-',
                                                           '555088-401');" btattached="true">10</a>
"""

Затем мы должны получить атрибут onlclick тега a.Затем мы можем выделить строку в скобках, очистить ее и составить из нее список.

import re
from bs4 import BeautifulSoup
soup=BeautifulSoup(html,'html5lib')
list_string=re.search('\(([^)]+)', soup.find('a')['onclick']).group(1) #get string within paranthesis
list_string_narrow=' '.join(list_string.split()).replace("'","") #clean the string
list_onlcick=list_string_narrow.split(',') #make it a list
print(list_onlcick)
print(int(list_onlcick[0])) 

Вывод

['10780559', ' 170', '85 USD', ' 125', '32 USD', ' 26', ' 45', '53 USDsaved!', ' 10', ' 7', ' 15', ' true', ' false', ' false', ' false', ' unknown', ' US-', ' 555088-401']
10780559
0 голосов
/ 07 февраля 2019

Вы можете получить элемент через идентификатор «US-7».Затем getAttribute, чтобы получить атрибут onclick.Разделение используется для разделения строки, полученной из атрибута onclick, на часть внутри круглых скобок.Второе разделение - это разделение массива строк и получение только первого.Могут быть некоторые ненужные пробелы, поэтому я также удаляю пробелы и кавычки.Наконец, он преобразуется в число.

Вы должны попробовать его по частям, если не понимаете, что происходит.

Number(document.getElementById('US-7').getAttribute('onclick').split(/[()]+/)[1].split(',')[0].replace(/\s/g, '').replace(/'/g, ''));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...