【问题标题】:Beautiful Soup can't get news titlesBeautiful Soup 无法获取新闻标题
【发布时间】:2014-05-04 14:55:46
【问题描述】:
from bs4 import BeautifulSoup
import requests
url ="http://www.basketnews.lt/lygos/59-nacionaline-krepsinio-asociacija/2013/naujienos.html"
r = requests.get(url)
soup = BeautifulSoup(r.text)

naujienos = soup.findAll('a', {'class':'title'})

print naujienos

这是 HTML 的重要部分:

<div class="title">

    <a href="/news-73147-rockets-veikiausiai-pasiliks-mchalea.html"></a>
    <span class="feedbacks"></span>

</div>

我得到空列表。我的错在哪里?

编辑:

谢谢它的工作。现在我想打印新闻标题。这就是我正在尝试的方式:

nba = soup.select('div.title > a')

for i in nba:
   print ""+i.string+"\n"

我获得最多 5 个标题并出现错误:无法连接 'str' 和 'NoneType' 对象

【问题讨论】:

  • 也许标签'a'应该有这个类。

标签: python beautifulsoup


【解决方案1】:
soup.findAll('a', {'class':'title'})

这就是说,给我所有a 标签也有class="title"。这显然不是你想要做的。

我想你想要a 标签是带有class="title" 的标签的直接后代。您可以尝试使用 css 选择器:

soup.select('div.title > a')
Out[58]: 
[<a href="/news-73150-blatcheas-garantuoju-kad-laimesime.html">Blatche'as: âGarantuoju, kad laimÄsimeâ</a>,
 <a href="/news-73147-rockets-veikiausiai-pasiliks-mchalea.html">âRocketsâ veikiausiai pasiliks McHaleâÄ
</a>,
# snip lots of other links
]

【讨论】:

  • 谢谢它的工作,但现在我还有一个问题。我编辑了我的第一个问题
  • 好吧,不要那样做。只需打印i.string,你就会看到其中一些是None(你想要i.text吗?)。另外print 已经在末尾添加了一个换行符,我不知道您为什么要尝试添加另一个。
  • 哦,i.text 有效,但我得到的标题不是 utf8(?)。在文本中是那种符号:ž Å等等。
猜你喜欢
  • 2018-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-17
  • 1970-01-01
相关资源
最近更新 更多