BeautifulSoup - Разбор файла для числовых значений - PullRequest
0 голосов
/ 31 мая 2018

Хотите разобрать 1 и 1999 по тегам:

'''
<li><a **href="/1/"**>|&lt;</a></li>
<li><a accesskey="p" **href="/1999/"** rel="prev">&lt; Prev</a></li>
<li><a href="//c.xkcd.com/random/comic/">Random</a></li>
<li><a accesskey="n" href="#" rel="next">Next &gt;</a></li>
<li><a href="/">&gt;|</a></li>
'''  

Что я пробовал: BeautifulSoup Код, используемый для разбора HTML:

  for li in soup_obj.find_all('li'):
        for tag in li.find_all(re.compile("\/[0-9]+\/")):
            print(tag)
            print(tag['href'])

Шаги:

1) Уберите (li)

2) Утверждение (href) истинно

Ответы [ 2 ]

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

Вы можете использовать regex, как в этом примере:

from bs4 import BeautifulSoup as bs

a = '''
<li><a **href="/1/"**>|&lt;</a></li>
<li><a accesskey="p" **href="/1999/"** rel="prev">&lt; Prev</a></li>
<li><a href="//c.xkcd.com/random/comic/">Random</a></li>
<li><a accesskey="n" href="#" rel="next">Next &gt;</a></li>
<li><a href="/">&gt;|</a></li>
'''

soup = bs(a, 'html.parser')
nums = [k['**href'].strip('/') for k in soup.find_all('a', {'**href': re.compile(r'/\d+/')})]

print(nums)

Вывод:

['1', '1999']
0 голосов
/ 31 мая 2018

Поиск значения href с начала, нет необходимости во вложенных поисках

for anchor in soup_obj.find_all(href=re.compile(r'/\d+/')):
    print(anchor.name)
    print(anchor['href'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...