从p标记获取文本内容

2024-10-02 04:32:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试获取此页面上每个块的描述文本内容

https://twitter.com/search?q=data%20mining&src=typd&vertical=default&f=users。在

html for p标记看起来像

<p class="ProfileCard-bio u-dir" dir="ltr" data-aria-label-part=""><a href="http://t.co/kwtDyFn6dC" rel="nofollow" dir="ltr" data-expanded-url="http://DataMiningBlog.com" class="twitter-timeline-link" target="_blank" title="http://DataMiningBlog.com"><span class="invisible">http://</span><span class="js-display-url">DataMiningBlog.com</span><span class="tco-ellipsis"><span class="invisible">&nbsp;</span></span></a> covers current challenges, interviews with leading actors and book reviews related to data mining, analytics and data science.</p>

我的代码:

^{pr2}$

这里有什么问题吗?这里出现异常

Traceback (most recent call last):
  File "twitter_user_scrapper.py", line 91, in getImageList
    print div.find('p', attrs={'class' : 'ProfileCard-bio u-dir'}).text
AttributeError: 'NoneType' object has no attribute 'text'

Tags: andtextcomhttpurldatadirtwitter
1条回答
网友
1楼 · 发布于 2024-10-02 04:32:19

问题可能是某些classProfileCard-contentdiv可能没有类为ProfileCard-bio u-dir的子p元素,发生这种情况时,以下返回None-

div.find('p', attrs={'class' : ['ProfileCard-bio', 'u-dir']})

这就是你得到AttributeError的原因。您应该得到上面的返回值并将其保存在一个变量中,并检查它的None是否存在,并且只有当文本不是None时才接受文本。在

另外,你应该给类一个所有类的列表,而不是一个字符串,就像-

^{pr2}$

示例-

productDivs = soup.findAll('div', attrs={'class' : 'ProfileCard-content'})
for div in productDivs:
   elem = div.find('p', attrs={'class' : ['ProfileCard-bio', 'u-dir']})
   if elem:
       print elem.text

相关问题 更多 >

    热门问题