Как получить указанные c данные в теге P при просмотре веб-страниц? - PullRequest
0 голосов
/ 12 января 2020

Я пытаюсь собрать данные с веб-сайта, на котором есть информация внутри тега P. Единственные данные, которые меня интересуют - это contact , который находится в том же P-теге. Как я могу получить только необходимые данные?

Вот сс на сайте. Как я могу получить текст от Компании по тел.?. 1007*

Here is the ss of the website. How can i get the text from Company to tel no.?

Ответы [ 2 ]

0 голосов
/ 12 января 2020

Вы можете использовать модуль re для разбора текста.

Например:

import re
import requests
from bs4 import BeautifulSoup

url = 'https://www.forpressrelease.com/forpressrelease/553538/4/china-leading-cabinet-handles-supplier-rochehandle-celebrates-success-of-entering-european-market'

soup = BeautifulSoup(requests.get(url).content, 'html.parser')

txt = soup.select_one('.single_page_content').get_text(strip=True, separator='\n')

company = re.findall(r'Company:\s*(.*)', txt)[0]
address = re.findall(r'Address:\s*(.*)', txt)[0]
contact = re.findall(r'Contact:\s*(.*)', txt)[0]
email = re.findall(r'Email:\s*(.*?)\s*(?=\w+:)', txt, flags=re.S)[0]
tel = re.findall(r'Tel:\s*(.*)', txt)[0]
mob = re.findall(r'Mob:\s*(.*)', txt)[0]
url = re.findall(r'Url\s*:\s*-\s*(.*)', txt, flags=re.S)[0]

print('{:<15}: {}'.format('Company', company))
print('{:<15}: {}'.format('Address', address))
print('{:<15}: {}'.format('Contact', contact))
print('{:<15}: {}'.format('Email', email))
print('{:<15}: {}'.format('Tel', tel))
print('{:<15}: {}'.format('Mob', mob))
print('{:<15}: {}'.format('Url', url))

Отпечатки:

Company        : Dongguan Roche Industrial Co., Ltd
Address        : No.83, XiZheng 1st Road, Shajiao Community, Humen Town, Dongguan City, Guangdong Province, China 523936
Contact        : Robin Luo
Email          : info@rochehandle.com
Tel            : 0769-89366747
Mob            : +86-13392706499
Url            : https://www.rochehandle.com
0 голосов
/ 12 января 2020

Вам необходимо использовать регулярные выражения для анализа блока <P>, который вы получаете от BeautifulSoup:

import re

text_from_p = """
some text
some more
Tel: 0234-234345-45

some more text
"""

match = re.search(r"Tel: (?P<tel>[0-9\- ]*)", text_from_p)
if match:
    print(match.group("tel"))
else:
    print("Tel not found")

Вы получаете:

0234-234345-45
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...