Python 巨蟒和靓汤,拾取所有元素

Python 巨蟒和靓汤,拾取所有元素,python,elements,Python,Elements,在python和BeatifulSoup的帮助下,我从一个网站上获得了一篇文本文章。现在我有一个奇怪的问题。。。我只是想打印出多个p标签中的文本,这些标签位于div中,带有classdr_article。现在,代码如下所示: from bs4 import BeautifulSoup def getArticleText(webtext): soup = BeautifulSoup(webtext) divTag = soup.find_all("div", {"class":"dr_arti

python
BeatifulSoup
的帮助下,我从一个网站上获得了一篇文本文章。现在我有一个奇怪的问题。。。我只是想打印出多个
p
标签中的文本,这些标签位于div中,带有class
dr_article
。现在,代码如下所示:

from bs4 import BeautifulSoup

def getArticleText(webtext):
soup = BeautifulSoup(webtext)
divTag = soup.find_all("div", {"class":"dr_article"})
for tag in divTag:
    pData = tag.find_all("p").text
    print pData
from bs4 import BeautifulSoup

def getArticleText(webtext):
soup = BeautifulSoup(webtext)
divTag = soup.find_all("div", {"class":"dr_article"})
for tag in divTag:
    pData = tag.find_all("p")[0].text
    print pData
我发现以下错误:

Traceback (most recent call last):
  File "<pyshell#14>", line 1, in <module>
execfile("word_rank/main.py")
  File "word_rank/main.py", line 7, in <module>
articletext.getArticleText(webtext)
  File "word_rank\articletext.py", line 7, in getArticleText
pData = tag.find_all("p").text
AttributeError: 'list' object has no attribute 'text'

我的问题是如何一次从所有元素中获取文本?要修改什么,使我不会只从一个元素中获取文本,而是从所有元素中获取文本?

您将获取所有元素,因此函数将返回列表。试着去经历它:

from bs4 import BeautifulSoup

def getArticleText(webtext):
    soup = BeautifulSoup(webtext)
    divTag = soup.find_all("div", {"class":"dr_article"})
    for tag in divTag:
        for element in tag.find_all("p"):
            pData = element.text
            print pData
或者,您可以分别选择每个元素:

tag.find_all("p")[0].text
tag.find_all("p")[1].text
tag.find_all("p")[..].text
tag.find_all("p")[N - 1].text
tag.find_all("p")[N].text

您是否尝试过在
.find_all('p')
的结果上循环?我已设法在pData中使用for loop in标记,然后向标记添加.text。但是你的例子比较短,我会用那个。。。谢谢:)