Python 如何在网页抓取过程中获取P标签中的特定数据?

Python 如何在网页抓取过程中获取P标签中的特定数据?,python,html,web-scraping,beautifulsoup,Python,Html,Web Scraping,Beautifulsoup,我正试图从一个包含p标签信息的网站上抓取数据。我唯一感兴趣的数据是联系人,它位于同一个P标签中。如何仅获取所需的数据 这是网站的ss。我如何从公司获取文本到电话号码? 您需要使用正则表达式来解析从BeautifulSoup获得的块: 重新导入 文本“来自”p=“” 一些文本 更多 电话:0234-234345-45 更多的文字 """ 匹配=重新搜索(r“电话:(?P[0-9\-]*)”,文本来自) 如果匹配: 打印(匹配组(“电话”)) 其他: 打印(“未找到电话”) 你会得到: 0234-

我正试图从一个包含p标签信息的网站上抓取数据。我唯一感兴趣的数据是联系人,它位于同一个P标签中。如何仅获取所需的数据

这是网站的ss。我如何从公司获取文本到电话号码?


您需要使用正则表达式来解析从BeautifulSoup获得的
块:

重新导入
文本“来自”p=“”
一些文本
更多
电话:0234-234345-45
更多的文字
"""
匹配=重新搜索(r“电话:(?P[0-9\-]*)”,文本来自)
如果匹配:
打印(匹配组(“电话”))
其他:
打印(“未找到电话”)
你会得到:

0234-234345-45

您需要使用正则表达式来解析从BeautifulSoup获得的
块:

重新导入
文本“来自”p=“”
一些文本
更多
电话:0234-234345-45
更多的文字
"""
匹配=重新搜索(r“电话:(?P[0-9\-]*)”,文本来自)
如果匹配:
打印(匹配组(“电话”))
其他:
打印(“未找到电话”)
你会得到:

0234-234345-45

您可以使用
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))

您可以使用
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=re.findall(r'company:\s*(*),txt)[0]索引器:列表索引超出范围**,因为有一个条目缺少“company”字段。如果您看到我的答案,在尝试提取之前,会有一个检查以确保存在匹配项。如果一些答案有助于您解决问题,请不要忘记接受并将其标记为有用。这将激励其他人再次帮助您。对于给定的站点,它可以正常工作,但当我尝试此操作时,会出现错误**company=re.findall(r'company:\s*(*),txt)[0]索引器:列表索引超出范围**,因为有一个条目缺少“company”字段。如果您看到我的答案,在尝试提取之前,会有一个检查以确保存在匹配项。如果一些答案有助于您解决问题,请不要忘记接受并将其标记为有用。这将激励其他人再次帮助你。我刚刚能够使用normal for loop获得全文。我刚刚能够使用normal for loop获得全文。