Как извлечь данные из скобок значений атрибутов `onclick`? - PullRequest
0 голосов
/ 31 декабря 2018

Можно ли извлечь данные из значений атрибутов onclick, таких как analysis(1644983), AsianOdds(1644983) и EuropeOdds(1644983)?Я просто хочу показать одно число, так как в этом HTML-коде все они одинаковы.

HTML

<td style="word-spacing:-3px" align="left"> <a href="javascript:" onclick="analysis(1644983)">析</a><a href="javascript:" onclick="AsianOdds(1644983)" style="margin-left:3px;">亚</a> <a href="javascript:" onclick="EuropeOdds(1644983)" style="margin-left:3px;">欧</a></td>

Код Python

from bs4 import BeautifulSoup

soup=BeautifulSoup("""<td style="word-spacing:-3px" align="left"> <a href="javascript:" onclick="analysis(1644983)">析</a><a href="javascript:" onclick="AsianOdds(1644983)" style="margin-left:3px;">亚</a> <a href="javascript:" onclick="EuropeOdds(1644983)" style="margin-left:3px;">欧</a></td>""",'html.parser')

lines=soup.find_all('onclick')
for line in lines:
    print(line['analysis'])

Ожидаемый результат

1644983

1 Ответ

0 голосов
/ 31 декабря 2018

Я пытался все объяснить в комментариях:

from bs4 import BeautifulSoup

html = '''<td style="word-spacing:-3px" align="left">
    <a href="javascript:" onclick="analysis(1644983)">析</a>
    <a href="javascript:" onclick="AsianOdds(1644983)" style="margin-left:3px;">亚</a>
    <a href="javascript:" onclick="EuropeOdds(1644983)" style="margin-left:3px;">欧</a>
    </td>'''

soup = BeautifulSoup(html, 'html.parser')

# Find all <a> elements
elements = soup.find_all('a')

# Loop over all found elements
for element in elements:
    # Disregard element if it doesn't contain onclick attribute
    if 'onclick' not in element.attrs:
        continue
    # Get attribute value
    value = element['onclick']
    # Disregard wrong elements
    if not value.startswith('analysis('):
        continue
    # Extract position of opening bracket
    position = value.index('(') + 1
    # Slice string so only content inside bracket is left
    value = value[position:-1]
    # Print result
    print(value)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...