Python 在<;中按文本选择div text;span>;
我想通过特殊跨距文本选择页面上的div文本。例如,我有:Python 在<;中按文本选择div text;span>;,python,beautifulsoup,Python,Beautifulsoup,我想通过特殊跨距文本选择页面上的div文本。例如,我有: <div> <span> Org name: </span> "corp. org name" </div> 组织名称: “公司组织名称” 因此,我想通过在span标记中搜索所有文本来选择corp.org name组织名称:首先,我不会说俄语。所以,我无法验证这是否是你想要的 我已经做了我认为你想要的,搜索组织名称:返回公司组织名称:。下面的函数正是这样做的,它将组织名称作
<div>
<span> Org name: </span>
"corp. org name"
</div>
组织名称:
“公司组织名称”
因此,我想通过在span标记中搜索所有文本来选择
corp.org name
<代码>组织名称:首先,我不会说俄语。所以,我无法验证这是否是你想要的
我已经做了我认为你想要的,搜索组织名称:
返回公司组织名称:
。下面的函数正是这样做的,它将组织名称
作为键返回字典,将公司组织名称
作为值返回字典。这是:
def scrape(url):
page = requests.get(url, verify=False)
soup = BeautifulSoup(page.content, 'lxml')
#find all divs on the right side
lst = soup.find_all('div', {"style": "margin-bottom: 16px;"})
#the output dictioary
corpNames = {}
for idx, link in enumerate(lst):
#get the text inside <span> which is the key
key = link.find('span').get_text()
if key:
value = link.get_text()
value = re.sub(key, "", value)
value = re.sub(r"\s+", " ", value) #reduce white spaces
corpNames[key] = value.strip()
return corpNames
你能提供你正在试验的URL吗??我正在从右栏中选择组织名称,这列内容提供了
print(soup.find('div').find('span').text)
我有很多div,所以在我的例子中,这只是带有span的第一个“div”。但我需要组织名称的确切跨度。。。
>>> import re
>>> import requests
>>> from bs4 import BeautifulSoup
>>>
>>> url = "https://reestr.minsvyaz.ru/reestr/61245/"
>>> d = scrape(url)
>>> print(d)
{'Альтернативные наименования:': 'ЭПС "Система ГАРАНТ"', 'Класс ПО:': 'Информационные системы для решения специфических отраслевых задач, Поисковые системы, Прикладное программное обеспечение общего назначения, Офисные приложения, Лингвистическое программное обеспечение', 'Сайт производителя:': 'http://www.aero.garant.ru', 'Дата регистрации:': '20 Февраля 2016', 'Рег. номер ПО:': '6', 'Дата решения уполномоченного органа:': '20 Февраля 2016', 'Решение уполномоченного органа:': 'Приказ Минкомсвязи России от 20.02.2016 №63', 'Ссылка на приказ Минкомсвязи:': 'Приказ'}