我需要帮助从脚本的结果中解析出HTML
标记。我想把结果放在一个对象中转换成json。当我打印对象时,一切都正常,除了我不能只提取没有html标记的文本。我一直在这个网站上搜索答案,并尝试了各种方法删除标签,但我不知道我做错了什么。谢谢你的帮助。你知道吗
根据我在这里读到的一些东西,我试着打印团队对象.text但这行不通。你知道吗
def make_soup(url):
page = requests.get(url)
soup = BeautifulSoup(page.content, 'html.parser')
return soup
soup = make_soup("team.html")
for record in soup.findAll('tr'):
teamObject = {"name": record.find('a'),"description": record.find('p')}
print (teamObject)
我希望在没有html标记的对象表单中看到结果。你知道吗
根据评论更新:
我现在看到的结果是打印上面的代码:
{'name': <a href="/team/001"> Team 1 </a>, 'description': <p><a href="/team/001">Team 1</a> is a team does cool things.</p>}
正在更新要包含的代码。文本:
def make_soup(url):
page = requests.get(url)
soup = BeautifulSoup(page.content, 'html.parser')
return soup
soup = make_soup("team.html")
for record in soup.findAll('tr'):
teamObject = {
"name": record.find('a').text,
"description": record.find('p').text
}
print (teamObject)
我得到这个结果:
"name": record.find('a').text,
AttributeError: 'NoneType' object has no attribute 'text'
我希望只看到没有html标记的文本。你知道吗
尝试对循环中每个记录的find结果使用
.text
。你知道吗.text
调用.get_text()
,因此这与上面的注释类似,但我认为您希望在上次搜索中获得文本结果。你知道吗如果需要传入格式化参数,可以使用get_text()。See the docs
编辑:
收到一个NoneType错误告诉我您有一些
<tr>
标记,但其中不包含<a>
或<p>
标记。如果记录.查找在循环中找不到结果,则它将返回None,而None不能返回文本值。你知道吗你可以用逻辑来解决这个问题,或者重新评估你是如何接近搜索的。黑客的方法是在返回文本之前检查你是否有你需要的标签。你知道吗
这确保您不会收到None错误,但是现在您将完全跳过任何缺少
<a>
或<p>
标记的行,所以要小心。你知道吗如果您确信相关行总是有
<a>
和<p>
标记,那么您可以通过只返回带有“Team”的行来集中搜索,以排除任何错误的<tr>
条目。你知道吗相关问题 更多 >
编程相关推荐