当前位置: 首页 > 知识库问答 >
问题:

抓取网站时获取多个类的内容

充子航
2023-03-14

我面临的问题很简单。如果我试图从一个网站获取一些数据,有两个同名的类。但是它们都包含一个具有不同信息的表。我所拥有的代码只向我输出第一个类的内容。它看起来像这样:

page = requests.get(url)
soup = BeautifulSoup(page.content, 'html.parser')
results = soup.find("tr", {"class": "table3"})
print(results.prettify())

如何让代码输出两个表的内容或仅输出第二个表的内容?提前感谢您的回答!

共有1个答案

长孙诚
2023-03-14

您可以使用。查找_all()[1]以获得第二个结果。例子:

from bs4 import BeautifulSoup

txt = """
<tr class="table3"> I don't want this </tr>
<tr class="table3"> I want this! </tr>
"""

soup = BeautifulSoup(txt, "html.parser")

results = soup.find_all("tr", class_="table3")
print(results[1])  # <-- get only second one

印刷品:

<tr class="table3"> I want this! </tr>
 类似资料:
  • 问题内容: 在先前的问题中,一位作者建议使用aiohttp的新语法从中获取多个网址: 但是,当其中一个请求中断时(如上所述,由于导致错误),则错误不会得到处理,整个中断。 我就开始寻找插入有关的结果的测试,比如找地方了,或者一个,但我只是不理解如何与工作,与各种对象。 由于仍然很新,因此没有很多示例。如果向导可以显示如何执行此操作,对许多人来说将非常有帮助。毕竟,大多数人想要测试的第一件事就是同时

  • 问题内容: 我需要从此网站Link中抓取新闻公告。公告似乎是动态生成的。它们不会出现在源代码中。我通常使用机械化,但是我认为它不会起作用。我该怎么办?我可以使用python或perl。 问题答案: 礼貌的选择是询问网站所有者是否具有允许您访问其新闻报道的API。 不太礼貌的选择是跟踪页面加载时发生的HTTP事务,并确定哪一个是AJAX调用,该调用会提取数据。 看起来就是这个。但是看起来它可能包含会

  • 问题内容: 我需要抓取一个网站,其内容由Angular“插入”。它需要用java完成。 我已经尝试过Selenium Webdriver(因为我之前曾使用Selenium来抓取较少动态的网页)。但是我不知道如何处理Angular部分。除了页面顶部的script标签之外,网站中只有一个地方具有Angular属性: 我在这里找到了这篇文章,但是说实话…我不知道。看来作者正在选择(这样称呼他们)’ng-

  • 问题内容: 因此,我正在使用python和beautifulsoup4(我不受其约束)来抓取网站。问题是当我使用urlib抓取页面的html时,它不是整个页面,因为其中一些是通过javascript生成的。有什么办法可以解决这个问题? 问题答案: 基本上有两个主要选项可以继续: 使用浏览器开发人员工具,查看哪些ajax请求将加载页面并在脚本中模拟它们,您可能需要使用json模块将响应json字符串

  • 我正在抓取一个网站,该网站在A-Z选项卡中按字母顺序列出数据,每个字母选项卡还包含多个页面。我如何从中提取所有URL? 公共静态void main(字符串[]args)引发异常{