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

在BeautifulSoup中调用多个函数

陆栋
2023-03-14

问题定义

我在使用BeautifulSoup模块(bs4)时遇到一些问题。我需要解析一些CSS类的(findAll())字符串,并使用get_text()函数对它们进行解包(或者可以说从soup中移除所有标记),但有一些误解。我想做一碗汤

page = urllib.urlopen("http://www.example.com/")
soup = BeautifulSoup(page.read())
data = soup.findAll("a", { "class": "example_class" }

和soup显示指定url的html代码。

<a href="/en/link/sth.asp?id=4786" class="example_class">This is the data which I want to access and shows only.

稍后我想把数据变量转换成,这是我想要访问的数据,并且只显示。类型后来,我的IDE说您不能使用

data.get_text()

就这样。因为soup实例有一些函数,但数据没有。然后,我准备了另一个汤,输入来自数据,但有趣的是,我得到了如下错误。

another_soup = soup.getText(data)

错误

由于使用BeautifulSoup而导致的错误

File "/Library/Python/2.7/site-packages/BeautifulSoup.py", line 586, in getText
return separator.join(strings)
AttributeError: 'ResultSet' object has no attribute 'join'

个人意见

我认为我的问题与BeautifulSoup的soup实例的不正确使用或访问有关。对于为一个soup实例调用两个函数,您有什么建议?以正确的方式使用同一实例调用两次或创建不同的实例(如上所述)

在我问这个问题之前发现的相关问题

Python Beautiful soup'ResultSet'对象没有属性'get'

Python/BeautifulSoup-如何从元素中删除所有标记?

共有1个答案

颛孙嘉石
2023-03-14

findAll()。标记对象。您必须迭代此列表,并对每个项目调用get_text()函数以删除标记。

page = urllib.urlopen("http://www.example.com/")
soup = BeautifulSoup(page)

data = soup.findAll("a", { "class": "example_class" }
data = [link.get_text() for link in data]

 类似资料:
  • 在文档中有deleteMany()方法 我想删除具有一个公共属性而另一个属性不同的多个文档。大概是这样的: {} 这个的正确语法是什么?

  • 问题内容: 有什么方法可以使用html属性调用多个JavaScript函数吗? 问题答案: onclick=”doSomething();doSomethingElse();” 但实际上,最好不要使用Java,而是通过Javascript代码将事件处理程序附加到DOM节点。这被称为不引人注目的javascript。

  • 问题内容: 我知道在香草js中,我们可以做到 在ReactJS中调用onClick的两个函数等效于什么? 我知道调用一个函数是这样的: 问题答案: 将两个函数调用包装在另一个函数/方法中。这是该想法的几个变体: 1)分开的方法 或使用ES6类: 2)内联 或等效于ES6:

  • 问题内容: 我遇到了一个问题,我想绑定到ng-repeat循环内的函数的输出。我发现该函数每个项目被调用两次,而不是我期望的那样。这是ng- repeat部分(请注意最后的calcRowTotal()调用): calcRowTotal()函数如下所示: 接下来显示其中一个要迭代的项目的示例: 我在控制台中看到以下内容(我正在遍历的集合中当前有两项): 我当然可以做一个“ rowTotal”属性,但

  • 我在递归地计算一个数的位数和,直到和小于10。例如; 由于最后的数字和是9,那么我们停止。我意识到遵循递归方法,在我的知识中,它工作得很好; 但是,如果我们有类似的情况,正确的输出是1,因为但是我的代码停止在第二个级别,并以我可以得到一些帮助来修改我的第二个代码以解决这个问题吗?提前谢了。

  • 如果我有一个接受两个回调的函数的存根,当存根函数被调用时,我如何连接sinon.js来调用两个回调? 例如,这里有一个我想存根的函数,它接受两个函数作为参数: 我可以用sinon来称呼其中一个论点: 或者 但我似乎不能让两者都被召唤。如果我尝试: 或者 那么sinon只会调用第二个参数。如果我以另一个顺序连接它,那么sinon将调用第一个参数。然而,我希望两者都被一个接一个地称呼。