我正在使用Python3和Beautifulsoup从网页上抓取公司名称。当我使用"内容"拉取标签内容的方法,它返回带括号和单引号的文本(例如['公司A'])而#34;文本"方法只返回公司A.为什么函数表现如此?我意识到这可能是一个愚蠢的问题,但我是新的,并尝试过搜索。见下文:
entity_name = bsObj2.find(class_='span-16 first')
entity_name_item = entity_name.find('h1')
entity_name_item = entity_name_item.contents
print(entity_name_item)
返回:
['Company A']
鉴于:
entity_name = bsObj2.find(class_='span-16 first')
entity_name_item = entity_name.find('h1')
entity_name_item = entity_name_item.text
print(entity_name_item)
返回:
Company A
答案 0 :(得分:0)
contents
为您提供了包含标记子项的列表,而text
则为您提供了标记文本。
答案 1 :(得分:0)
contents
将查找的所有结果作为Python list
返回,而text
则为您提供Python string
所发现内容的文本值。例如,在以下HTML中:
<div>Header
<h1>Header2</h1>
</div>
使用Beautiful Soup解析并调用result = soup.find('div')
会返回BeautifulSoup
个对象。在该对象上调用contents
将返回该标记及其所有子标记的列表,即result.contents == ['Header', 'Header2']
和type(result)
返回<class 'list'>
。但是text
会以人类可读的格式将字符串作为字符串返回,因此您可以使用result.text == 'Header Header2
和type(result)
来获取<class 'string'>
。