网页抓取:我得到了所需的结果,但 get_text 在读取空行时提供错误。有什么想法吗?

发布于 2025-01-12 00:14:10 字数 616 浏览 0 评论 0原文

import requests

from bs4 import BeautifulSoup

url = "https://en.wikipedia.org/wiki/List_of_Presidents_of_the_United_States"

page = requests.get(url)

#print(page.status_code)

#print(page.content)

soup = BeautifulSoup(page.content, 'html.parser')

#print(soup.prettify())


tb = soup.find('table', class_='wikitable')

"""for link in tb.find_all('b'):
    name = link.find('a')
    print(name)"""

for link in tb.find_all('b'):
    name = link.find('a')
    print(name.get_text('title'))

代码和结果的图片

我相信它正在读取表格,然后当它到达空行时我收到错误。

import requests

from bs4 import BeautifulSoup

url = "https://en.wikipedia.org/wiki/List_of_Presidents_of_the_United_States"

page = requests.get(url)

#print(page.status_code)

#print(page.content)

soup = BeautifulSoup(page.content, 'html.parser')

#print(soup.prettify())


tb = soup.find('table', class_='wikitable')

"""for link in tb.find_all('b'):
    name = link.find('a')
    print(name)"""

for link in tb.find_all('b'):
    name = link.find('a')
    print(name.get_text('title'))

Picture of code and result

I believe it is reading the table and then when it gets to an empty line I am getting an error.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

冷弦 2025-01-19 00:14:10

如果未找到请求的标签,find 方法将返回 None,因此您必须检查这一点:

for link in tb.find_all('b'):
    name = link.find('a')
    if name is not None:
        print(name.get_text())

此外 .get_text 方法只是剥离每个标签并返回其中的文本,因此您传递的论点可能不会达到您期望的效果。 Soup 只是将其视为分隔符。这是此方法的签名:

def get_text(self, separator="", strip=False,
             types=default):

文档:https://www.crummy。 com/software/BeautifulSoup/bs4/doc/#get-text

find method returns None if the requested tag is not found, so you have to check for that:

for link in tb.find_all('b'):
    name = link.find('a')
    if name is not None:
        print(name.get_text())

Also .get_text method just strips every tag and returns the text inside, so the argument you pass might not do what you expect it to do. Soup just treats it as a separator. Here's this method's signature:

def get_text(self, separator="", strip=False,
             types=default):

Documentation: https://www.crummy.com/software/BeautifulSoup/bs4/doc/#get-text

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文