python-3.x HTML标记中有什么额外的信息用于Web抓取识别

n7taea2i  于 2022-11-19  发布在  Python
关注(0)|答案(1)|浏览(118)

我在搞网页抓取,我是一个初学者。我正在研究一个网页抓取工具,我试图获得HTML标记内一段信息的价值。
这里有一个例子;

<a href="tel:+1-860-351-9131" id="dealer-phone-e048470c-570f-4a26-841c-b4c258a3298e" class="sds-button--secondary contact-by-phone" phx-hook="CallSourceDniSRPCallButton" phx-update="ignore" data-linkname="dealer-phone-srp" data-activity-rule-type="custom" data-index="1" data-call-intent-id="srp-call-intent" data-listing-id="e048470c-570f-4a26-841c-b4c258a3298e" data-make="Volkswagen" data-model="Taos" data-phone-number="8603519131" data-trim="1.5T SE" data-year="2023" data-vin="3VVNX7B25PM316320">Call</a>

这个例子有类的ID,然后是一堆子“类ID”,我不确定它们的正确名称。
在本例中,我尝试从data-vin中提取数据,并获取此车辆的vin编号,但我不知道如何调用其他class/id来查找如何尝试获取此信息
任何帮助都不胜感激。

wfveoks0

wfveoks01#

假设您尝试获取elements / tagsattributes,并且它们的values-attrs将以dict的形式提供它们:

soup.a.attrs

要选择attribute,只需调用.get('ATTRIBUTE_NAME')

soup.a.get('href')

或者,如果您希望获得所有data-*过滤器,请使用dict

{k:soup.a.attrs[k] for k in soup.a.attrs if k.startswith('data')}

示例

from bs4 import BeautifulSoup
html='''<a href="tel:+1-860-351-9131" id="dealer-phone-e048470c-570f-4a26-841c-b4c258a3298e" class="sds-button--secondary contact-by-phone" phx-hook="CallSourceDniSRPCallButton" phx-update="ignore" data-linkname="dealer-phone-srp" data-activity-rule-type="custom" data-index="1" data-call-intent-id="srp-call-intent" data-listing-id="e048470c-570f-4a26-841c-b4c258a3298e" data-make="Volkswagen" data-model="Taos" data-phone-number="8603519131" data-trim="1.5T SE" data-year="2023" data-vin="3VVNX7B25PM316320">Call</a>'''
soup = BeautifulSoup(html)

soup.a.attrs
输出
{'href': 'tel:+1-860-351-9131',
 'id': 'dealer-phone-e048470c-570f-4a26-841c-b4c258a3298e',
 'class': ['sds-button--secondary', 'contact-by-phone'],
 'phx-hook': 'CallSourceDniSRPCallButton',
 'phx-update': 'ignore',
 'data-linkname': 'dealer-phone-srp',
 'data-activity-rule-type': 'custom',
 'data-index': '1',
 'data-call-intent-id': 'srp-call-intent',
 'data-listing-id': 'e048470c-570f-4a26-841c-b4c258a3298e',
 'data-make': 'Volkswagen',
 'data-model': 'Taos',
 'data-phone-number': '8603519131',
 'data-trim': '1.5T SE',
 'data-year': '2023',
 'data-vin': '3VVNX7B25PM316320'}

相关问题