Разбор href с использованием Python - PullRequest
0 голосов
/ 04 июня 2018

У меня есть веб-очистка с использованием python, который получает этот код с сайта:

<a href="javascript:document.frmMain.action.value='display_physician_info';document.frmMain.PhysicianID.value=1234567;document.frmMain.submit();" title="For more information, click here.">JOHN, DOE</a>

Я хочу проанализировать конкретное значение href, например, значение PhysicianID , равное 1234567 inside "document.frmMain.PhysicianID.value"

В настоящее время я получаю весь текст href примерно так:

for i in soup.select('.data'):
     name = i.find('a', attrs = {'title': 'For more information, click here.'})

Anyидея?Заранее спасибо.

Ответы [ 2 ]

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

Или без регулярного выражения:

from bs4 import BeautifulSoup

content = """
<a href="javascript:document.frmMain.action.value='display_physician_info';document.frmMain.PhysicianID.value=1234567;document.frmMain.submit();" title="For more information, click here.">JOHN, DOE</a>
"""
soup = BeautifulSoup(content,"lxml")
item = soup.select_one("a")['href'].split("PhysicianID.value=")[1].split(";")[0]
print(item)

Вывод:

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

Получить href само по себе легко с BeautifulSoup, как только вы получите саму ссылку:

href = name['href']

Затем вы можете использовать регулярные выражения с модулем re:

import re
match = re.search(r'document.frmMain.PhysicianID.value=\d*;', href).group()
value = re.search(r'\d+', match).group()
print(value) #prints 1234567

Собираем все вместе с вашим кодом:

import re
for i in soup.select('.data'):
    name = i.find('a', attrs = {'title': 'For more information, click here.'})
    match = re.search(r'document.frmMain.PhysicianID.value=\d*;', href).group()
    value = re.search(r'\d+', match).group()
    print(value) #prints 1234567
...