首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用<p>、<span>等在div类中使用BeautifulSoup和Python3.x打印或提取文本?

如何使用<p>、<span>等在div类中使用BeautifulSoup和Python3.x打印或提取文本?
EN

Stack Overflow用户
提问于 2020-09-24 10:36:40
回答 1查看 104关注 0票数 1

假设我在div类中有一个文本,类似于这个<div class="col span-3">Name</div>。我试过,但没有成功。我需要提取名称,然后是类col 9中的文本。这是我的密码。

代码语言:javascript
复制
import requests
from bs4 import BeautifulSoup

url = "https://v2.sherpa.ac.uk/id/publisher/1939?template=romeo"

r = requests.get(url)
htmlContent = r.content

soup = BeautifulSoup(htmlContent, 'html.parser')
title = soup.title
print(title)

div_text = soup.find("div", {"class": "col span-3"}).get_text()
div_text = soup.find("div", {"class": "col span-9"}).get_text()
print(div_text)

当我使用div_text = soup.find("div", {"class": "col span-3"}) print(div_text)时,我给出了所有标记的结果。但是当我使用.get_text()时,它只给出了第一个标签名。当我在获取文本时同时使用col 3和class 9时,它将给出具有类span-9的文本。

它只给出了一个结果,即“1066年的历史英语”,而不是标题,这个结果来自于第9课。我需要这样的“姓名: 1066蒂德斯克卢瓦的历史学英语;网址:http://www.universitypress.dk/shop/1066-tidsskrift-for-73c1.html;国家:丹麦;出版数量: 1”

EN

回答 1

Stack Overflow用户

发布于 2020-09-24 10:44:05

当您第二次将div_text分配给它时,您正在覆盖它。试着做这样的事情:

代码语言:javascript
复制
div_text_header = soup.find("div", {"class": "col span-3"}).get_text()
div_text_value = soup.find("div", {"class": "col span-9"}).get_text()
print(div_text_header)
print(div_text_value)

对于实际需要的数据,可以这样做:

代码语言:javascript
复制
print(f'{div_text_header}: {div_text_value}')

看来你是在尝试获取所有的数据。这应该是可行的:

代码语言:javascript
复制
div_headers = soup.find_all("div", {"class": "col span-3"})
div_values = soup.find_all("div", {"class": "col span-9"})
for header, value in zip(div_headers, div_values):
  print(f'{header.get_text()}: {value.get_text()}')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64044651

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档